漏洞復現-Tomcat AJP 文件包含漏洞(CVE-2020-1938)


漏洞原理

該漏洞是由於Tomcat AJP協議存在缺陷導致,攻擊者利用該漏洞可通過構造特定參數,讀取服務器webapp下的任意文件。若目標服務器同時存在文件上傳功能,攻擊者可進一步實現遠程代碼執行。目前,廠商已發布新版本完成漏洞修復。

 

復現環境

在ubuntu 16.04虛擬機中用vulhub靶場提供的docker容器來復現

jdk版本1.7

Tomcat版本9.0.30

 

影響版本

Apache Tomcat 6

Apache Tomcat 7 < 7.0.100

Apache Tomcat 8 < 8.5.51

Apache Tomcat 9 < 9.0.31

 

復現過程

1. 進入vulhub目錄:tomcat/CVE-2020-1938

2.啟動docker容器,tomcat頁面正常訪問:

 

看下server.xml中AJP協議的相關配置,目前是打開的,端口號8009:

使用推薦的漏洞利用工具(https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi)讀取web.xml:

 

防御實驗

在不升級版本的情況下,直接關閉AJP Connector:

重啟Tomcat,再試着讀取web.xml,讀取失敗:

 

拓展學習 

我有一點點疑問,為啥這個漏洞要叫“文件包含”漏洞。。。和我理解的文件包含貌似不一樣啊(https://www.cnblogs.com/sallyzhang/p/12221089.html)。咱把https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi代碼copy下來debug了一下,作為一個Python零級菜鳥選手,我只看懂了一丟丟..>_<...

代碼做的事情大概就是自己按照AJP協議的要求拼裝了request(會轉成二進制)發過去,然后把response的內容解析出來,命令行傳入的參數放在attributes里面:

應該是javax.servlet.include.path_info的鍋。。。,網上參考了這兩篇文章:https://paper.seebug.org/1126/ , https://www.jianshu.com/p/1803731ed527

好吧,確實是文件包含漏洞,個人覺得也可以叫任意文件讀取漏洞 >_<

 

 

本文僅用於技術學習和交流,嚴禁用於非法用途,否則產生的一切后果自行承擔。

 

如需轉載,請注明出處,這是對他人勞動成果的尊重。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM