RSS Feed
更好更安全的互联网

Shiro-550 PoC 编写日记

2020-11-03

作者:w7ay @ 知道创宇404实验室
时间:2020年8月11日

深刻认识到不会java搞这类poc的困难,只能做一个无情的搬砖机器。

目标是编写Pocsuite3 python版本的Shiro-550 PoC,最好不要依赖其他东西。

本文没有新奇的观点,只是记录日常 =_=

Shiro识别

看到@pmiaowu开源的burp shiro检测插件 https://github.com/pmiaowu/BurpShiroPassiveScan

image-20200803161651145

看了下源码,主要有三种判断方式

  1. 原始cookie key带了rememberMe
  2. 原始请求返回cookie中value带有deleteMe
  3. 以上条件都不满足时,发送cookierememberMe=1

检测Shiro key

l1nk3r师傅 的 基于原生shiro框架 检测方法

简述下如何不依赖java环境来检测poc。

可得到生成的反序列二进制payload(最好使用jdk6来编译,能够兼容之后的版本)

将这段payload内置到poc里即可。

通过python函数生成最终检测payload

其中key是shiro需要检测的key,bb是生成的payload,当key正确时,不会返回deleteMe

image-20200803162703060
image-20200803162647250

回显payload

一开始看的是宽字节安全的burp插件:https://github.com/potats0/shiroPoc

但在本地环境下测试没有成功,之后猜测可能是gadgets或java版本的问题

看他的exploitType代码

image-20200810141000382

类似于java的汇编代码?确认过眼神是看不懂的。

然后在GitHub上找到一个开源的exp https://github.com/Ares-X/shiro-exploit/blob/master/shiro.py

它将gadget base64之后硬编码到了python中,正好符合我的需求。

image-20200810141813620

经过测试用CommonsCollections1就可以在我本地环境复现了。

到这里就可以写poc了,但我还想看看这些硬编码的payload是怎么来的。

更细节

那些硬编码的文件是反序列化的文件,我想找到Tomcat的通用回显的源码。@longofo告诉我可以通过CA FE BA BE(cafebaby)来确定class的特征,将它和后面的数据保存为class文件。

image-20200807175522519

然后拖到idea反编译后就能看到源码了

就算解出了源码,看的也不是太懂,可能是根据java的各种魔法来实现的吧 - = 于是就转而开始写poc了。

没想到写完poc的第二天,xray的作者就给出检测细节和源码。

通过比对源码:https://github.com/frohoff/ysoserial/compare/master...zema1:master

可以找到tomcat的全版本回显的payload

至于为什么要那么写,可能也是因为某种魔法,我暂时还不明白。

和一些特别的链

ysoserial 中的 CommonsCollections4 只能用于 CC4.0 版本,我把这个利用链进行了改进使其支持了 CC3 和 CC4 两个版本,形成了上面说的 K1/K2 两条链,这两条链就是我们处理 Shiro 这个环境的秘密武器。经过这些准备,我们已经从手无缚鸡之力的书生变为了身法矫健的少林武僧,可以直击敌方咽喉,一举拿下目标。万事具备,只欠东风。

PoC演示

一路下来迷迷糊糊啥也不明白真实太菜了,只能在一些大佬的肩膀上搬搬砖这样子了。

PoC集成了识别,检测key,命令执行回显以及shell反弹的操作。

检测识别key

image-20200810153335261

攻击模式执行任意命令

image-20200810153612164

shell反连

image-20200810153921731

最后也顺便给w13scan - 被动扫描器增加了一份Shiro插件。

image-20200810154343285

感谢看完全程,不说了,学习java去。

image-20200810154429552

Paper

本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1290/

作者:江 | Categories:技术分享 | Tags:

发表评论