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
将这个语句注释掉, 在需要时手工进行权限的修改。