女女www视频在线观看高清_女生脱衣服的软件_HD中字幕在线观看,美国毛片免费看,女人被爽到呻吟的床戏,一二三四专区

Tomcat AJP協議漏洞分析與利用

作者:安數網絡 發布時間:2020-02-25 13:43:38 瀏覽次數:1444

0x01 漏洞基本信息

漏洞名稱:Tomcat AJP協議漏洞

CVE編號:CVE-2020-1938

漏洞簡介:2020年2月4日,Apache Tomcat官方發布了新的版本,該版本修復了一個影響所有版本(7.*、8.*、9.*)的文件包含漏洞,但官方暫未發布安全公告,2020年2月20日,CNVD發布了漏洞公告,對應漏洞編號:CNVD-2020-10487。漏洞是Tomcat AJP協議存在缺陷而導致,攻擊者利用漏洞可以構造特定參數,讀取服務器webapp/ROOT下的任意文件。若目標服務器同時存在文件上傳功能,攻擊者可進一步通過文件包含實現遠程代碼執行。目前,廠商已發布新版本完成漏洞修復。

漏洞影響范圍:

Apache Tomcat 6

Apache Tomcat 7 < 7.0.100

Apache Tomcat 8 < 8.5.51

Apache Tomcat 9 < 9.0.31

0x02 漏洞起因

以下內容來自:https://mp.weixin.qq.com/s/GzqLkwlIQi_i3AVIXn59FQ

tomcat默認的conf/server.xml中配置了2個Connector,一個為8080的對外提供的HTTP協議端口,另外一個就是默認的8009 AJP協議端口,兩個端口默認均監聽在外網ip,如下圖所示:

當tomcat服務啟動后,查看端口可以發現8009端口已經處于監聽狀態:

tomcat在接收ajp請求的時候會調用org.apache.coyote.ajp.AjpProcessor來處理ajp消息,prepareRequest將ajp里面的內容取出來設置成request對象的Attribute屬性,如下圖:

因此可以通過這種特性,控制request對象的以下三個Attribute屬性:

javax.servlet.include.request_uri

javax.servlet.include.path_info

javax.servlet.include.servlet_path

然后封裝成對應的request之后,繼續走servlet的映射流程,如下圖所示:

具體的映射方式這里就不介紹了。

0x03 漏洞利用方式

1、利用DefaultServlet實現任意文件下載

當url請求未在映射的url列表里面,會通過tomcat默認的DefaultServlet,根據上面的三個屬性來讀取文件,如下圖所示:

通過serveResource方法來獲取資源文件:

通過getRelativePath來獲取資源文件路徑:

然后通過控制ajp控制的上述三個屬性來讀取文件,操控上述三個屬性,從而可以讀取到/WEB-INF下面的所有敏感文件,不限于class、xml、jar等文件。

2、通過jspservlet實現任意后綴文件包含

當url(比如http://xxx/xxx/xxx.jsp)請求映射在org.apache.jasper.servlet.JspServlet這個servlet的時候,也可以通過上述三個屬性來控制訪問的jsp文件,如下圖所示:

控制路徑之后就能以jsp解析該文件,所以只需要一個內容可控的文件即可實現rce。

0x04 AJP協議規范

參考https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html

0x05 漏洞利用環境

靶機:centos7+tomcat8.5.30

攻擊機:win7+python3

0x06 漏洞利用過程

1、Tomcat版本檢測

通常在Apache Tomcat官網下載的安裝包名稱中,會包含當前Tomcat的版本號,用戶可通過查看解壓后的文件夾名稱,來確定當前的版本。比如:

如果解壓后的Tomcat目錄名稱被修改過,或者通過Windows Service Installer方式安裝,使用軟件自帶的version模塊來獲取當前的版本。進入Tomcat安裝目錄的bin目錄,輸入命令./version.sh后,可查看當前的軟件版本號:

2、通過python腳本文件讀取及文件包含進行RCE

公眾號回復關鍵詞 文件讀取獲取腳本地址

用法:python3 2020-10487.py 172.26.1.182 -f WEB-INF/web.xml

可以看到成功讀取到了ROOT/WEB-INF下的web.xml文件(如果ROOT下存放了網站的源代碼,就會被不法分子通過讀取該源碼,然后進行代碼審計,導致其他漏洞的發生),web.xml文件:

文件包含進行RCE(實際環境中需要有上傳點):

因為是實驗環境,并沒有上傳點,所以我們已經在webapp/ROOT下存放了一個名為exec.txt的文件,來模擬文件上傳后的文件,然后包含該文件即可進行RCE。

exec.txt內容為執行“whoami”代碼:

<%out.println(new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec("whoami").getInputStream())).readLine());%>

用法:python3 CVE-2020-1938.py 172.26.1.182 -f exec.txt --rce 1

0x07 漏洞修復建議

1、臨時禁用AJP協議端口:在conf/server.xml配置文件中注釋掉117行的<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" /> ,然后重啟服務器。

再次進行文件讀取就會拋出異常,修復成功:

2、下載官方最新版:

https://tomcat.apache.org/download-70.cgi 

https://tomcat.apache.org/download-80.cgi 

https://tomcat.apache.org/download-90.cgi 

聲明:筆者初衷用于分享與普及網絡知識,若讀者因此作出任何危害網絡安全的行為后果自負,與安數網絡及原作者無關!


來源:合天智匯

及時掌握網絡安全態勢 盡在傻蛋網絡安全監測系統

【網絡安全監管部門】免費試用

本文來源:

如涉及侵權,請及時與我們聯系,我們會在第一時間刪除或處理侵權內容。
電話:400-869-9193 負責人:張明