背景:
8161端口为web控制台端口,本漏洞就出现在web控制台中。
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应用。
漏洞利用方式:
通过构造PUT请求往fileserver下写入文件,然后再通过构造MOVE请求将文件转移到拥有执行权限的api目录下执行。
1.查看api目录的绝对路径
访问http://your-ip:8161/admin/test/systemProperties.jsp,默认账号密码为admin:admin;发现ActiveMQ的绝对路径为/opt/activemq。
2.访问http://192.168.199.173:8161/fileserver,通过burp抓包,方便构造请求
首先构造PUT请求,将请求方式改为PUT,将jsp木马放入请求中。
这时访问http://192.168.199.173:8161/fileserver/nz.txt会发现jsp木马内容:
接下来构造MOVE请求将nz.txt移到/opt/activemq/webapps/api下,因为fileserver下没有执行权限,所有我们必须把文件传到可以解析执行的目录下。
Destination:file:///opt/activemq/webapps/api/c.jsp
这时访问http://192.168.199.173:8161/api/发现你的木马已经存在了。
这时kali监听,然后解析执行nz.jsp会发现你已经拿到root权限了。