Tomcat本地提权漏洞预警(CVE-2016-1240)

时间:2023-12-23 13:10:50

Tomcat是个运行在Apache上的应用服务器,支持运行Servlet/JSP应用程序的容器——可以将Tomcat看作是Apache的扩展,实际上Tomcat也可以独立于Apache运行。

漏洞编号

CVE-2016-1240

影响范围

Tomcat 8 <= 8.0.36-2

Tomcat 7 <= 7.0.70-2

Tomcat 6 <= 6.0.45+dfsg-1~deb8u1

受影响的系统包括Debian、Ubuntu,其他使用相应deb包的系统也可能受到影响。

漏洞概述

Debian系统的Linux上管理员通常利用apt-get进行包管理,CVE-2016-1240这一漏洞其问题出在Tomcat的默认的启动脚本中:/etc/init.d/tomcat* 利用该脚本,可导致攻击者通过低权限的Tomcat用户获得系统root权限

# Run the catalina.sh script as a daemon

set +e

touch "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out

chown $TOMCAT7_USER "$CATALINA_PID""$CATALINA_BASE"/logs/catalina.out

本地攻击者,作为Tomcat用户(比如说,通过web应用的漏洞)若将catalina.out修改为指向任意系统文件的链接,当服务器重启或服务重启时Tomcat init脚本(root权限运行)会修改catalina.out链接任意文件的权限为Tomcat用户,利用这点执行任意脚本。公布的PoC利用在etc下创建ld.so.preload文件来加载攻击者的PoC并执行任意命令。

修复方案

Debian安全团队已经修复了受影响的包;更新至系统提供的最新版Tomcat包即可。

临时解决方案

可以在启动脚本中暂时删除权限修改的操作

chown $TOMCAT7_USER"$CATALINA_PID"

"$CATALINA_BASE"/logs/catalina.out

将这个语句注释掉, 在需要时手工进行权限的修改。