Part1 前言 

Shiro反序列化漏洞虽然出现很多年了,但是在平时的攻防比赛与红队评估项目中还是能遇到。主站也许遇不到Shiro漏洞,但是主站边缘域名、全资子公司的子域名、边缘资产、微信公众号、微信小程序啥的,总能找到。现在遇到的shiro反序列化漏洞也是越来越难了,好多都是别人搞不定的。搞不定的原因要么是key比较偏门,要么是过不了waf防护,要么就是找不到可用的利用链,导致没办法拿权限。

我记得最早在前年测试weblogic反序列化漏洞的时候,突然想到了,如果使用了shiro组件的网站是部署在weblogic中间件下,完全可以利用weblogic中间件的coherence组件的利用链来打。Weblogic反序列化漏洞大致是通过T3、IIOP协议发送一个序列化数据包,相关类只要不在weblogic黑名单中,服务器就反序列化恶意代码执行攻击语句。同样,这个序列化数据包用shiro组件来处理,只要中间件是weblogic,也应该能反序列化成功。而且通过构造的反序列化数据包不通过T3、IIOP流程,也许还不受Weblogic黑名单的限制。于是在本机搭建的一堆weblogic各种版本的虚拟机环境中,测试发现是可行的,但是中间也是踩了一大堆坑,实属不易。

 Part2 技术研究过程 

  • 环境搭建

首先需要搭建一个在weblogic下的shiro网站应用,于是从github上搜索了一个samples-web-1.2.42.war包,上传到weblogic中间件中进行部署。

接下来一路点击下一步,点击“激活更改”,有的新手到这一步就停了,导致环境搭建不成功。记得在“控制”选项卡下边,点击“为所有请求提供服务”,至此环境就搭建成功了。

如下图所示,搭建成功了。

  • 反序列化利用链的选择

Weblogic的Coherence组件反序列化漏洞的POC有好几个,主要包括CVE-2020-2555、CVE-2020-2883、CVE-2020-14756、CVE-2021-2135等等,每个反序列化exp其实就对应着Weblogic中间件下的一条反序列化利用链,选择也是很有技巧的,因为每个EXP都各有优缺点。比如说,CVE-2020-2555的exp用到了BadAttributeValueExpException这个类,这个类只在JDK1.8下才能用,适用范围就窄了;CVE-2021-2394与CVE-2022-21350只能发起jndi请求,因此只有在出网的情况下才能利用。后续有人把CVE-2020-2883的POC中的BadAttributeValueExpException这个类换掉,使POC更加通用。最终经过一系列对比筛选,CVE-2020-2883、CVE-2020-14756、CVE-2021-2135这三个POC看起来比较通用,而且这三个POC可以接Javascript引擎,执行任意Java代码,为后续通过shiro打weblogic内存马打下基础。于是就拿来测试了一下。

POC大致如下格式:

  • Coherence组件的SUID不同问题

接下来需要做的事情是将不同Weblogic版本的Coherence利用链整合进ysoserial工具包中,这样可以直接调用ysoserial工具来生成shiro反序列化的poc。这里就遇到了一个非常大的麻烦,Weblogic有不同版本如12.2.130、12.2.140、14.1.100等等,每个细微版本的Coherence库的SUID都不一样,在反序列化漏洞利用过程中,SUID对不上,是没法反序列化成功的。网上有文章对Weblogic下的Coherence组件的不同SUID做了总结,但是我本地反复测试的结果,好像与网上的文章给的结果不太一样。为了解决这一问题,我也不纠结了,综合考虑时间与成本,选用了最简单的URLClassLoader类加载不同版本的Coherence的jar包的方法,将不同weblogic版本的coherence POC融合进ysoserial工具包中。

接下来按照shiro组件的加密方式,生成反序列化数据包

使用burpsuite发包之后,Weblogic服务器成功弹出计算器,证明这种思路是可行的。

  • 内存马问题

这里我就不过多叙述了,可以选用网上靠谱的代码拿来直接用。建议大家看看先知社区feihong的文章https://xz.aliyun.com/t/9343,讲的非常详细。最终把feihong的代码进行整合,最终发现打内存马是成功的。

如下图所示,内存马是成功的。

 Part3 总结 

1.  实现weblogic回显的反序列化代码会非常大,导致生成的rememberMe的cookie值很长,记得把内存马的代码放在post body中,减少cookie的大小。

2.  如果使用weblogic利用链打不成功,那可能是目标weblogic更新了补丁,需要换一个较新的POC,实在不行,如果服务器的JDK版本低于1.8.191,可以用jndi出网的方法反弹shell。

3.  上述回显方法引用了Templates模板类,这个类用来打shiro反序列化没问题,但是用来打T3、IIOP应该是不能成功的,因为这个类被加入了weblogic的黑名单中

4.  10.3.6.0版本的weblogic用coherence打不成功,因为默认没开启。这种情况下最好用JDK-7u21、jre-8u20、CCK1、CCK3的利用链来打,其实也就与weblogic无关了。

5.  近期ABC_123写的几款工具被公布到网上了,有很多网友后台回复我,希望提供工具的官方哈希值。由于微信公众号文章发布之后,仅能修改20个字,所以为了防止工具被人恶意加入后门,ABC_123借此文章发布工具的md5哈希值如下:

(声明:ABC_123研发的工具都是内部使用的,用来打攻防比赛或者做日常渗透测试,禁止非法使用,从来不对外公开下载。工具泄露非本人自愿,本人无意愿让工具传播。也请大家不要再跟我要工具了,谢谢了。)

专注于网络安全技术分享,包括红队、蓝队、日常渗透测试、安全体系建设等

每周一篇,99%原创,敬请关注

第17篇:Shiro反序列化在Weblogic下无利用链的拿权限方法相关推荐

  1. shiro反序列化漏洞学习(工具+原理+复现)

    工具准备 1.java8 C:\Program Files\Java 2.冰蝎 C:\Users\ali\Desktop\tools\Behinder_v4.0.6 3.shiro反序列化 图形化工具 ...

  2. 告别脚本小子系列丨JAVA安全(6)——反序列化利用链(上)

    0x01 前言 我们通常把反序列化漏洞和反序列化利用链分开来看,有反序列化漏洞不一定有反序列化利用链(经常用shiro反序列化工具的人一定遇到过一种场景就是找到了key,但是找不到gadget,这也就 ...

  3. 经典的Shiro反序列化漏洞分析

    更多黑客技能 公众号:小道黑客 作者:掌控安全-holic 0x01.前言 相信大家总是面试会问到java反序列化,或者会问到标志性的漏洞,比如shiro反序列化,或者weblogic反序列化漏洞. ...

  4. 实战渗透-Shiro反序列化漏洞实例

    0x01.前言 这是一次授权的渗透测试,技术含量不高,但我始终相信,每一次的积累,都是为了成就更好的自己,所以过程简洁,记录下每个知识点.对渗透而言,我更喜欢实战的体验感,那种喜悦和知识的获取感,永远 ...

  5. 第5篇 | Shiro Padding Oracle无key的艰难实战利用过程

    ‍ Part1 前言  大家好,上期分享了银行站的一个Java 的SSRF组合洞案例,这期讲讲分享一个Shiro Padding Oracle漏洞利用过程. Shiro反序列化漏洞自16年公布以来,至 ...

  6. Shiro反序列化漏洞利用笔记

    Shiro反序列化漏洞利用笔记 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.目前在Java web应用安全框架中,最热门的产品有Spring Sec ...

  7. shiro 内存马_深入利用Shiro反序列化漏洞

    0x00:背景 ​ shiro反序列化RCE是在实战中一个比较高频且舒适的漏洞,shiro框架在java web登录认证中广泛应用,每一次目标较多的情况下几乎都可以遇见shiro,而因其payload ...

  8. Shiro反序列化漏洞利用详解(Shiro-550+Shiro-721)

    Shiro反序列化漏洞利用详解(Shiro-550+Shiro-721) Shiro简介 Apache Shiro 是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能,Shiro ...

  9. 全球计算机视觉顶会CVPR 2020论文出炉:腾讯优图17篇论文入选

    全球计算机视觉顶级会议CVPR2020  (IEEE Conference on Computer Vision and Pattern Recognition,即IEEE国际计算机视觉与模式识别会议 ...

最新文章

  1. android自定义View-垂直滚动的TextView
  2. 快速计算整数的二进制表示法中1的个数
  3. java笔试题递归,递归(网上搜的一些笔试题)
  4. 60-170-040-使用-Time-Flink时间系统系列之实例讲解-如何做定时输出
  5. MS SQL Server 2000 按日期自动备份
  6. Centos7安装maven
  7. SQL案例分析之部分查询和全部查询
  8. c语言最新标准c22,【C语言实例】c22-选择分支结构.doc
  9. 2019年环175五一作业
  10. 狂神系列之HTML学习笔记
  11. errno和perror
  12. 【ART-PI】STM32H750XBH6 - 入手篇
  13. 6-1 使用函数验证哥德巴赫猜想 (20 分)
  14. 亚马逊继续“激进” :Q3吐出超10倍净利
  15. 广州租房提取住房公积金攻略
  16. ubuntu20.4 安装sogou五笔
  17. Java使用freemarker导出word试卷
  18. 腾讯新闻android2.3,腾讯新闻Android客户端更新 加入投票功能
  19. 马云厌恶美国 阿里巴巴转道香港上市
  20. doc格式批量转docx

热门文章

  1. 微信上墙-sdut(转)
  2. Tableau函数平均值及标准偏差
  3. 3. Maven POM
  4. 两个∑符号,两个∏符号运算公式
  5. MacBook 外接鼠标键盘时指针乱窜、不受控制的解决方法
  6. python for循环案例-Python利用for循环打印星号三角形的案例
  7. 医疗票据OCR识别让保险理赔流程更快速
  8. 日语能力考试流程及时间安排的说明
  9. 项目工期/工作量估算方法
  10. i春秋 misc code_in_morse、套娃