在Shiro反序列化漏洞修补的历程中,假如仅开展Shiro的版本更新,而沒有再次转化成密钥,那麼AES数据加密的默认设置密钥扔硬编码在源代码里,依然会存有反序列化风险性。
01、漏洞实例
本案例引入的shiro版本已经是现阶段全新的1.8.0。试着浏览系统软件开展登陆,抓包软件获得主要参数特点,包括xxx_rememberMe=deleteMe字段名。
留意:在Shiro1.4.2版本后,Shiro的数据加密方式由AES-CBC拆换为 AES-GCM,Shiro高版本下的漏洞利用,就必须考虑到数据加密方式转变的状况。此外,这儿cookie传送的基本参数是自定的,而不是普遍的rememberMe,这也是必须留意的地区。
02、漏洞利用
为了更好地降低手工制作结构转化成反序列化数据信息的繁杂,这儿,大家应用一个Shiro反序列化利用专用工具,python撰写,并且创作者提升了AES-GCM加密算法的漏洞利用适用,可以很便捷地开展调整和主要参数搭建,
Github新项目详细地址:
最先,大家必须改动python脚本制作主要参数,将rememberMe 更换为 xxx_remeberme,使主要参数可以一切正常传送。
利用脚本制作来工程爆破Shiro key:
取得成功获得到了Shiro key。
推送回显Payload,获得指令实行結果。
改动python脚本制作设置代理,在requests应用代理商proxies,提升proxies={'http': 'http://' '127.0.0.1:8888'}。
那样就可以将用户流量引进BurpSuite,爬取HTTP数据,手动式利用查询回显。
以上就是Shiro高版本下默认设置密钥的漏洞利用全过程,So,修补Shiro默认设置密钥漏洞,除开更新shiro至全新版本,一定要留意转化成新的密钥更换。
纪录个有趣的事儿,以前有一个内部结构系统软件确定过Shiro版本和密钥都是有拆换,但之后或是被检验到存有漏洞,一度有点儿开始怀疑人生。找开发设计一起清查了一下,原先有两部网络服务器负荷,在其中一台是修补了,也有一台旧网络服务器被遗弃了。我进行复测的过程中是修补的情况,他人一扫描仪,漏洞还存有,立即泪奔。