一、漏洞描述
该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录。Fileserver支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到Fileserver下,然后再通过Move指令移动到可执行目录下访问。
二、影响版本
Apache ActiveMQ 5.0.0 - 5.13.2
三、环境搭建
1、下载vulhub源码,下载链接:
2、下载安装好docker服务,使用docker-compose up -d启动环境即可
四、漏洞复现
1、使用默认账号密码admin,打开浏览器访问靶场:http://your-ip:8161/admin/test/systemProperties.jsp
,查看ActiveMQ的绝对路径:
2、知道ActiveMQ版本之后,可以打开Burpsuite,访问fileserver目录进行抓包,在BP中将传输模式,修改数据包,改为PUT,目录后加上想要上传的文件名,提交数据中写入任意测试字符,返回包响应头为204一般就是上传成功
访问1.txt,确定成功上传
3、存在任意文件上传,可以直接getshell,重新发包,传输文件名shell.jsp,传输一个jsp的webshell,我使用的是哥斯拉生成的webshell,返回204说明传输成功
访问之后,发现无法执行没有解析
4、查询资料得知,传输的默认目录是没有解析权限的,所以需要将shell文件移动到存在权限的目录中,这就用到第一步得到的绝对路径了,使用MOVE方式,将shell传输到/opt/activemq/webapps/api/目录中,返回包返回204说明移动成功
访问http://10.10.114.184:8161/api/shell.jsp,成功访问,说明成功移动
利用哥斯拉进行连接,成功getshell,因为ActiveMQ的api目录是需要认证的,所以在哥斯拉中添加数据时候,需要写入请求参数
5、getshell证明
完