漏洞描述
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应用。
环境搭建
使用vulhub快速搭建漏洞环境
开放了8161以及61616端口,web控制台密码:admin/admin
漏洞利用
PUT上传shell
使用bp抓包,重放时改包,方法改为PUT,data改为webshell
上传成功,但是访问时返现直接返回的txt,并没有解析
所以要将我们的马移动到有可执行权限的目录下,拥有可执行权限的目录时admin和api,所以我们可以继续利用fileserver这个接口将shell.jsp这个文件进行移动,不过我们首先要知道绝对路径,绝对路径可以通过下面这个接口找到:
http://192.168.10.149:8161/admin/test/systemProperties.jsp
继续使用bp改包:
将请求方法改成MOVE,并在请求头中添加一行
Destination:file:///opt/activemq/webapps/api/s.jsp
如图即表示移动成功,尝试执行命令成功: