freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

一款检测Shiro反序列化的Burp插件
2020-07-29 13:00:24

0x01 序言

之前有大佬写了个fastjson的检测插件,于是想着能不能写个shiro反序列化检测的插件,最后就照着那个UI写了个shiro的检测插件。

0x02 历程

首先,网上的shiro利用工具都要用到一个名叫ysoserial的jar包,想要写出这个插件,就要去除这个jar包,在探测key的过程中,都会用到这个jar包的URLDNS来生成payload,在参考一篇文章后,发现其原理就是序列化一个HashMap,HashMap里存放了一个URL对象,其hashCode属性值为-1,借此就成功完成了去jar包,实现代码如下,在put前先要将hashcode的值改掉,不然会额外触发一次dns请求,结果就不准确:

完成去jar包的过程后,接下来就要对流经的流量进行检测,当然不能对每个流经burp的请求包去跑一边key,那样开销太大,shiro组件有一个特征,就是你主动发一个请求,cookie带上rememberMe=123,它返回的响应包会有Set-Cookie:rememberMe=deleteMe,可以借此判断该页面是否使用了shiro组件,实现代码如下:

之后如果判断出当前页面使用了shiro,就将所有的key跑一遍,然后利用dnslog平台的记录判断是否存在反序列化漏洞,利用uuid和key的一一对应关系,来判断是哪个key,如果判断出了key,就返回并在界面上显示,代码如下:

这里其实可以使用burp自带的collaborator来实现,但我在写的时候,调试时由于一直接收不到记录,就放弃了...最终选择用dnslog平台来实现,并且还用不了外部类httpclient,于是用java的原生类实现了获取dnslog域名和记录的方法,代码如下:

0x03 使用

打开burp的extender模块,点add

选择java,并选择对应目录下的jar包,点next即可安装成功

注意使用时要保证被动扫描的开关打开

所有流经burp的流量都会被动检测,存在漏洞的会输出,效果如下:

项目放到github上了,觉得好用的师傅可以点个star

https://github.com/amad3u4/ShiroScanner/

参考链接

https://github.com/p1g3/Fastjson-Scanner

https://www.anquanke.com/post/id/201762

# 渗透测试 # web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者