activeMQ是Apache旗下的一个JMS(Java Message Service,Java消息队列),其他JMS还有:jbossmq,jboss messaging,RabbitMQ等,这些都暴露出一些漏洞。其中最出名两个漏洞是任意文件上传漏洞和反序列化漏洞。
一、activeMQ任意文件上传漏洞
CVE编号:CVE-2016-3088 - ActiveMQ Fileserver web application vulnerabilities
影响版本:Apache ActiveMQ 5.0.0 - 5.13.x
漏洞详情:Apache ActiveMQ Fileserver允许用户通过PUT方法上传文件,将webshell利用代码上传至fileserver路径下,然后使用MOVE方法将webshell利用代码转移到可执行路径,获取webshell。一般activeMQ默认允许使用PUT和MOVE方式,但是在实际渗透测试中,最好先OPTION查看允许的方法,如果不允许PUT和MOVE方法,就不用构造上传文件的请求了。
二、activeMQ反序列化漏洞
CVE编号:CVE-2015-5254 - Unsafe deserialization in ActiveMQ
影响版本:Apache ActiveMQ 5.0.0 - 5.12.1
漏洞详情:一般先探测8161和61616端口是否开放,8161是后台管理页面,61616是给Java用的TCP端口。如果都开放,就尝试登录后台管理页面,利用反序列化漏洞进行远程代码执行需要拿到8161的后台权限,点击event列表中的事件链接才能触发命令执行。
一般远程代码执行使用的工具为jmet,github上直接下载jar包,地址为:https://github.com/matthiaskaiser/jmet
执行指令为:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/test" -Yp "CommonsCollections1" ip地址 61616
执行指令后,在8161后台管理页面点击对应事件,命令就触发了。指令含义是在被攻击计算机的/tmp路径新增一个test文件夹,这个指令是为了验证是否能远程执行命令,真实攻击场景就可以将”touch /tmp/test”替换为恶意攻击代码。
注:第一次使用jmet前,要在jmet同级路径下创建一个名为external的文件夹,否则会出错。