电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2136 人浏览分享

shiro反序列化回显工具中的流量特征

[复制链接]
2136 0
本帖最后由 zhaorong 于 2021-7-7 15:38 编辑

正所谓 中国不能没有曹县 攻防不能没有shiro 无shiro 不攻防。相信各位在攻防中都利用shiro拿到了一定
的目标。今天主要讨论流传较为广泛的shiro反序列化 cve_2016_4437利用工具中的流量特征。

漏洞利用流程

可能你已经了解 不过我还是要逼逼一下。

检测key阶段

此处以飞鸿大佬的利用工具https://github.com/feihong-cs/ShiroExploit-Deprecated为例

QQ截图20210707151046.png

可以看到 有大量篇幅在提及SimplePrincipalCollection。于是顺藤摸瓜 我们找到了这篇文
章:https://mp.weixin.qq.com/s/do88_4Td1CSeKLmFqhGCuQ。

得出以下结论:

在SimplePrincipalCollection未公开之前 大家都是采用ysoserial 中的DNSLOG+URLDNS进行检测
https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/URLDNS.java
固然能用 不过会在靶机产生一定的DNS记录 加大了被感知的可能。

SimplePrincipalCollection公开以后 基本是通过判断shiro对key正确性判断导致Cookie中的rememberMe=deleteMe
数量差异进行的判断。为了降低误报 在过程中还会先获取cookie基数 如通过一个错误的key获取cookie基数:

QQ截图20210707151241.png

检测利用链以及回显

我们现在已经拿到了key下一步就是通过正确的利用链 来进一步执行命令以及得到命令
的执行结果这里又有了两个阶段 那就是只执行和执行并回显。
此处我还是借助飞鸿大佬的利用工具

https://github.com/feihong-cs/ShiroExploit-Deprecated

QQ截图20210707151629.png

正如这里写到的 还是借助DNSLOG进行判断命令是否能执行 以确定利用链
此处还是不能回显的 只能是 盲打

下面我们看另一个利用工具:

shiro_attack-1.5.jar https://github.com/j1anFen/shiro_attack

69.png

此时重点已经放到了能回显。

后利用阶段

使用defineclass等注入内存马。

回显带来的一些副作用流量特征

这里我使用了vulhub的默认环境也就是

https://github.com/vulhub/vulhub/tree/master/shiro/CVE-2016-4437 进行测试

shiro_attack-1.5.jar

shiro_attack-1.5.jar https://github.com/j1anFen/shiro_attack 为例
命令执行过程中 我们可以看到以下内容:

68.png

可以很明显的看到post中的C参数传递 以及响应包中的$$$.*$$$。
我们也可以定位到代码实现处:

66.png

可以看到C参数以及响应结果 都是base64编码后的内容。

62.png

61.png

还有注入内存马功能处:

60.png

看到返回包响应值为:dynamic inject success

59.png

POST值 也就是我们表单中填入的路径与密码。

相关代码实现为:

58.png

57.png

shiro_attack-2.0.jar

https://github.com/j1anFen/shiro_attack 目前的最新版本

56.png

相比于上个版本 增加了爆破利用链及回显的功能 我们尝试一下。

36.png

发现在header的请求与响应中 都新增了一个techo:xxx 找到代码实现处:

32.png

发现新版本正是通过此来判断是否能够正常回显。执行命令试试。

31.png

发现旧版本的C参数 去到了头部 不再位于post body里。

相关代码:

30.png

试试内存马注入:

29.png

旧版本的密码 路径参数 不再放于post body内 转移到header中。Post包内只有恶意的class
编码后的内容 参数为dy。并且注入成功的标识符变化了。

28.png

相关代码为:

26.png

ShiroExploit-v2.3.jar

来自 https://github.com/fupinglee/JavaTools/tree/master/Shiro

执行命令:

22.png

明文放在header里的 labHeader的字段中 不过由于利用链问题 我这里没能成功回显
按照逻辑来看 回显也是明文的。
注入内存马:仅仅在注入蚁剑SHELL时 会有特征。

21.png

Post 中有 bstr 与 pwd字段 畸形的Accept-Header。

其他注入情况只看到有长的Cookie值。

Vulmap

来自https://github.com/zhzyker/vulmap

20.png

检测利用链阶段 POC过程 会在header中有Testcmd: echo 随机的md5。执行阶段 EXP
的命令也会放到header中的Testcmd中。

Xray

没得高级版 找了一个别人的截图。header中有Testecho Testcmd字段。回显为明文。

16.png

为什么会有这么多的特征?

Xray vulmap这种没有无java环境的检测工具 payload都是写死的 只能通过传参进去执行 但是其
他的jar的工具完全可以处理payload后再进行利用,以达到无参数传递目的。另外在实际检测中还
发现有通过header中的cmd参数进行传参的。

改进一下检测规则

可以根据这些工具的特定特征来完善shiro反序列化的检测规则 另外也可以对一些工具内置的
恶意class编码后的base64进行检测 例如我们上面看到的yy66vg开头的字符串。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.