0x00前言
ActiveMQ简介
ActiveMQ的web控制台分三个应用,admin\api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。
fileserver是一个RESTful API接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作,其设计目的是为了弥补消息队列操作不能传输、存储二进制文件的缺陷,但后来发现,其使用率并不高,文件操作容易出现漏洞
所以,ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(可以在conf/jetty.xml中开启);在5.14.0版本之后,彻底删除了fileserver应用。
0x01漏洞复现
漏洞描述
该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传到指定目录。Fileserver支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到Fileserver下,然后再通过Move指令移动到可执行目录下访问。
影响版本
Apache ActiveMQ5.0.0-5.13.2
环境搭建
使用vulhub漏洞靶场;
Vulhub漏靶场搭建方法:
vulhub官网:http://vulhub.org/#/docs/download-vulhub/
1.安装docker,windows自己去官网下。Linux执行:sudo apt-get install docker.io
2.安装python和pip:sudo apt-get install python和suao apt-get install python-pip
3.安装docker-compose:pip install docker-compose
4.下载Vulhub:git clone https://github.com/vulhub/vulhub.git
安装好之后进入对应的漏洞文件执行:docker-compose up -d
漏洞复现
任意文件写入的前提是需要知道web路径,所以使用默认账号密码admin/admin登录后台,查看ActiveMQ的绝对路径。
上传webshell,访问fileserver目录进行抓包,将传输方式改为PUT,目录后跟上传的文件名shell.txt,提交的内容写入我们的shell文件,HTTP状态码响应为204,表示上传成功。
因为传输的默认目录是没有解析权限的,所以需要将shell文件移动到存在权限的目录,在这儿我们就可以用到我们的绝对路径了,使用MOVE方式,将shell传输到/opt/activemq/webapps/api目录中,响应信息为204表示移动成功。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义