Shiro721 反序列化漏洞(CVE-2019-12422)

14 篇文章 0 订阅

目录

Shiro550和Shiro721的区别

判断是否存在漏洞

漏洞环境搭建

漏洞利用

利用Shiro检测工具

利用Shiro综综合利用工具


这一篇还是参考别的师傅的好文章学习Shiro的反序列化漏洞

上一篇也是Shiro的反序列化漏洞,不同的是一个是550一个是721,那么这两个有什么区别的?

Shiro550和Shiro721的区别

这两个漏洞主要区别在于Shiro550使用已知密钥碰撞,只要有足够密钥库(条件较低),不需要Remember Cookie然而Shiro721的ase加密的key基本猜不到,系统随机生成,可使用登录后rememberMe去爆破正确的key值,即利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,然后精心构造 RememberMe Cookie 值来实现反序列化漏洞攻击,难度高

判断是否存在漏洞

漏洞指纹:

  • URL中含有Shiro字段
  • cookie中含有rememberMe字段
  • 返回包中含有rememberMe

漏洞环境搭建

这里的漏洞环境还是使用docker,分别执行下列命令来进行环境搭建:

git clone https://github.com/3ndz/Shiro-721.git
cd Shiro-721/Docker
docker build -t shiro-721 .
docker run -p 8080:8080 -d shiro-721

然后使用docker-compose up -d拉取漏洞环境:

然后我们可以在浏览器中访问一下

可以看到到这里环境就已经搭建完成了

漏洞利用

登录网站,并从cookie中获取cookie:

使用RememberMe cookie作为Padding Oracle Attack的前缀。加密syserial的序列化有效负载,以通过Padding Oracle Attack制作精心制作的RememberMe。请求带有新的RememberMe cookie的网站,以执行反序列化攻击。攻击者无需知道RememberMe加密的密码密钥。

加密方式:AES-128-CBC 属于AES加密算法的CBC模式,使用128位数据块为一组进行加密解密,即16字节明文,对应16字节密文,,明文加密时,如果数据不够16字节,则会将数据补全剩余字节

若最后剩余的明文不够16字节,需要进行填充,通常采用PKCS7进行填充。比如最后缺3个字节,则填充3个字节的0x03;若最后缺10个字节,则填充10个字节的0x0a;

若明文正好是16个字节的整数倍,最后要再加入一个16字节0x10的组再进行加密

Padding Oracle Attack原理 Padding Oracle攻击可以在没有密钥的情况下加密或解密密文

Shiro Padding Oracle Attack(Shiro填充Oracle攻击)是一种针对Apache Shiro身份验证框架的安全漏洞攻击。Apache Shiro是Java应用程序中广泛使用的身份验证和授权框架,用于管理用户会话、权限验证等功能。

Padding Oracle Attack(填充Oracle攻击)是一种针对加密算法使用填充的安全漏洞攻击。在加密通信中,填充用于将明文数据扩展到加密算法块大小的倍数。在此攻击中,攻击者利用填充的响应信息来推断出加密算法中的秘密信息。

Shiro Padding Oracle Attack利用了Shiro框架中的身份验证过程中的一个漏洞,该漏洞允许攻击者通过填充信息的不同响应时间来确定身份验证过程中的错误。通过不断尝试不同的填充方式,攻击者可以逐步推断出加密秘钥,并最终获取访问权限。

这种攻击利用了填充错误的身份验证响应来获取关于秘密信息的信息泄漏,然后根据这些信息进行进一步的攻击。为了防止Shiro Padding Oracle Attack,建议及时更新Apache Shiro版本,确保已修复该漏洞,并采取其他安全措施,如使用安全的加密算法和密钥管理策略。

上面描述的过程我们可以利用shiro利用工具来辅助实现:

利用Shiro检测工具

将登录后获取的set-cookie值当中的rememberMe值,将值复制下来,放到工具当中

选择shiro721,输入目标url,设置rememberMe值,点击下一步,等待即可

点击下一步后,下面的一个页面还是点击下一步,就可以进行漏洞利用页面了

等待爆破出正确的密钥后我们可以进行命令执行了

利用Shiro综综合利用工具

先输入url,点击爆破密钥

然后点击爆破利用链及回显,然后到命令执行页面尝试执行命令:

可以看到,命令成功的执行了

Shiro550与shiro721反序列化原理及复现解析 - FreeBuf网络安全行业门户

shiro反序列化漏洞原理分析以及漏洞复现 - FreeBuf网络安全行业门户

java经典漏洞复现(基于vulhub) - FreeBuf网络安全行业门户

  • 47
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未知百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值