Jboss反序列化漏洞利用CVE-2017-12149/CVE-2017-7504
基础知识
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,ObjectInputStream类的readObject()方法用于反序列化。
形成漏洞的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制。
漏洞原理
CVE-2017-12149
漏洞影响5.x和6.x版本的JBOSSAS。该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。
CVE-2017-7504
JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响版本
CVE-2017-12149:JBoss AS 5.x和6.x版
CVE-2017-7504:JBoss AS 4.x及之前版本
复现思路
- 云主机的内置vulhub8080端口搭建实验靶场
- 加载攻击脚本,编译并生成序列化数据
- 序列化恶意数据至文件,将该文件作为请求数据主体发送数据包
- 云主机开启端口监听反弹过来的shell
- CVE-2017-12149利用路径是/invoker/readonly
- CVE-2017-7504利用路径是/jbossmq-httpil/HTTPServerILServlet
- CVE-2015-7501的利用路径是/invoker/JMXInvokerServlet
复现—CVE-2017-12149
前情提要:云主机作为攻击方,云主机内部靶场镜像开启JBOOS CVE-2017-12149漏洞容器作为受害方。
本文使用的脚本下载地址:
https://github.com/joaomatosf/JavaDeserH2HC
开启漏洞环境主页面:
1、特征检测
端口扫描:
// 使用nmap扫描端口,检测是否开启该服务:
nmap -p 1-