第17篇:Shiro反序列化在Weblogic下无利用链的拿权限方法
时间:2022-08-31 20:30:00
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。这里遇到了很大的麻烦,Weblogic12有不同的版本.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、CCK其实用链子打,其实是和weblogic无关了。
5. 近期ABC_123写的几个工具已经在网上发布了。很多网友在后台回复我,希望提供官方哈希值的工具。由于微信微信官方账号文章发布后只能修改20个字,为了防止工具恶意加入后门,ABC_123借此文章发表工具md5哈希值如下:
(声明:ABC_123开发的工具内部使用,用于攻防比赛或日常渗透测试,禁止非法使用,从不公开下载。工具泄露不是我自愿的,我不想让工具传播。请不要再向我要工具了,谢谢。
Struts2_19.02版本 哈希值如下:
MD5: 66B588FA4BC1969F3CDD9FCB3EB151CC
SHA1:FBDB7FF43A2DA8CCFFF7346C6BAD8E0619248E76
Struts全版漏洞检测工具192.06版本哈希值如下:
MD5: 667CA10E430E2FE65AC239384F208C7F
SHA1: 39DD5FE1307E644051BCF9A7270F90D23CC0B586
Weblogic T3/IIOP反序列化工具V0.3 哈希值如下:
MD5: 91513512BBB42CB6080C36B4D06472EF
SHA1: FDD694DEBBFCC14BE7BE90EED2610AF4831FFAB0
专注于红队、蓝队、日常渗透测试、安全系统建设等网络安全技术共享
每周一篇,99%原创,请注意
过去的精彩回顾
第16篇:Weblogic 2019-2729反序列化漏洞绕防护取权限实战过程
第15章:内网横向中windows总结各端口远程登录哈希传输的方法
p style="text-align:center;">第14篇:Struts2框架下Log4j2漏洞检测方法分析与总结第13篇:coldfusion反序列化过waf改exp拿靶标的艰难过程
第12篇:给任意java程序挂Socks5代理方法
第11篇:盲猜包体对上传漏洞的艰难利用过程
第10篇:IIS短文件名猜解在拿权限中的巧用
第9篇:Shiro反序列化数据包解密及蓝队分析工具,提供下载
第8篇:Oracle注入漏洞绕waf的新语句
第7篇:MS12-020蓝屏漏洞在实战中的巧用
第6篇:Weblogic反序列化攻击不依赖日志溯源攻击时间
第5篇:Shiro Padding Oracle无key的艰难实战利用过程
第4篇:jsp型webshell被删情况下如何溯源攻击时间
第3篇:银行Java站SSRF"组合洞"打法造成的严重危害
第2篇:区分Spring与Struts2框架的几种新方法
第1篇:weblogic9.x在JDK1.5下T3反序列化漏洞利用方法