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漏洞修復

  1. 使用更新版本的Apache Tomcat。這裡需要注意的是,雖然在9.0.18就修復了這個漏洞,但這個更新是並沒有通過候選版本的投票,所以雖然9.0.18沒有在被影響的列表中,用戶仍需要下載9.0.19的版本來獲得沒有該漏洞的版本。
  2. 關閉enableCmdLineArguments參數