CVE-2019-0232-ApacheTomca遠程執行程式碼漏洞復現
- 2019 年 10 月 6 日
- 筆記
0X1漏洞概述
2019年4月13號,Apache Tomcat 9.0.18版本公告中提到,本次更新修復了一個代號為CVE-2019-0232的漏洞。
該漏洞只對Windows平台有效,攻擊者向CGI Servlet發送一個精心設計的請求,可在具有Apache Tomcat許可權的系統上注入和執行任意作業系統命令。漏洞成因是當將參數從JRE傳遞到Windows環境時,由於CGI_Servlet中的輸入驗證錯誤而存在該漏洞。
0X2漏洞影響範圍
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
0X3環境搭建
下載Apache Tomcat任意一漏洞版本,下載到本地,解壓。
第一步,修改 conf/context.xml 的 <Context> 添加 privileged="true"屬性,否則會沒有許可權。如下所示。

Tomcat的CGI_Servlet組件默認是關閉的,在 conf/web.xml 中找到注釋的CGIServlet部分,去掉注釋,並配置enableCmdLineArguments和executable,如下:

這裡主要的設置是 enableCmdLineArguments 和 executable 兩個選項。 enableCmdLineArguments 啟用後才會將Url中的參數傳遞到命令行, executable 指定了執行的二進位文件,默認是 perl,需要置為空才會執行文件本身。編寫attack.bat文件,內容如下。

在bin目錄下打開startup.bat文件,啟動服務。

瀏覽器訪問8080埠,服務搭建成功

0X4漏洞攻擊
訪問attack.bat文件,查看ip地址資訊。
http://127.0.0.1:8080/cgi-bin/hello.bat?c:/windows/system32/ipconfig

攻擊成功!可實現任意命令執行。
0X5漏洞修復
- 使用更新版本的Apache Tomcat。這裡需要注意的是,雖然在9.0.18就修復了這個漏洞,但這個更新是並沒有通過候選版本的投票,所以雖然9.0.18沒有在被影響的列表中,用戶仍需要下載9.0.19的版本來獲得沒有該漏洞的版本。
- 關閉enableCmdLineArguments參數