关于shiro反序列化漏洞的总结分享

3月到8月有很多老师傅写了很多文章关注对shiro的应用,我也综合了各位老师傅的想法和思

路做了些脚本。
 
 
key检测:
 
之前的脚本批量检测shiro是否存在,或者说获取key我们最多应用的是xmlDns模块ysoserial,

但这有一个问题,即如果shiro不出网,那么就会出现问题,所以这里有一个新的方法,应用

一个空的SimPlePrincfalCennectiadri作为我们要序列化的对象,即构造一个正确的remembe

rMe触发反序列化.



如果key是正确的,则不会在响应包中跳转rememberMe=deleteMe,最先,我在脚本中通过检

测跳转包中的deleteMe关键字来进行判断,结果看到有些环境实际上会跳转rememberMe=delete

Me,因此,这是一个非常暴力的方法,其关键代码如下2.回显:
 
 
回显点这个也是有很多老师傅发的很多,从linux下的半回显点到kingkk老师傅的tomcat通用半回

显点到c0ny6老师傅的半自动挖掘再到fnmsd老师傅的通用回显点,这中间还穿插着其他老师傅

的文章,当然最后我还是用了fnmsd老师傅的代码,一路走来不得不感慨老师傅们真的是tql以及

这种不断提新点子不断完善的过程,实在让本菜鸡拍断了大腿。实际上,fnmsd主控用的也是c0

ny6主控的思想,就是搜索request对象的当前线程对象,确定指定的请求头是否存在于请求头中

,随后从ctionaire对象获取输出。
 
 
 
另外,fnmsd老师傅还对代码中存在的一些小问题做了几次版本的修改,最后我在实际应用的时

候还是有一点问题的,那就是老师傅设置的深度优先搜索是52层,结果测试还是遇到了52层没

有搜到的情况,结果随便改为100层就找到了...和应用ysoserial中一些cc链比较长生成的payloa

d差不多接近tomact对header的默认限制长度,有点危险。Nginx则没有直接冷却,如果遇到Ng

inx需要改变思路,比如尝试先分段注入,随后再执行。事实上,回显中提到的kingkkhoster实

际上就是内存权限管理shell,开始时有点杂乱,但实际上和一路走来看到内存和webshell到最

后被利用的点是不同的,内存权限管理webshell的思想是注册filter(当然还有星际权限管理webs

hell的思想是注册controller,链接在此基于内存权限管理webshell的无文件攻击技术研究),而

事实上,有了fnmsd权限管理思想后,内存权限管理webshell的需求可能不会太大,但是有时候

红队可能需要一个内存权限管理shell来维护权限(?或需要配合reGeorg代理进内网,所以这件

事还是有必要的.最先看到的是threedr3am老师傅基于tomcat的内存Webshell无文件攻击技术文

章,解决了shiro下的利用问题,也可以实现勉强通杀tomcat(原因除了tomcat6,请看评论区,

这一点我还没有测试过),但遇到sihro最大的问题是长度,没错,这是超长的长度。我也试过修

改ysoserial和payload的代码来缩短payload的时间,结果看到我真的不行,长亭老师傅的解决

方案看了一眼觉得效果不太好,再加上后来继续去跟回显,就没管它。后见老师傅一笑而过,

解决了长度的问题。
分享: