记一次实战中Shiro反序列化漏洞利用

  • A+
所属分类:安全文章

一、Shiro反序列化漏洞发现

0x01 与shiro失之交臂

         还是上一篇文章的那个网站,从之前发的任意用户注册到文件上传失败再到反射型XSS就可看出来,我第一次并没有发现shiro反序列化漏洞。

         由于在注册的时候只是关注了是否存在批量注册,然后注册成功之后就立马登录进去寻找上传点,因此对数据包没有进行详细的分析,因此没有发现shiro反序列化漏洞。如果后面没有再次进行测试的话,也就不会再有后续的shiro漏洞了。因此,得到一个教训,测试的时候一定要心细,渗透是一个细活,只有细心才能发现一些别人没有发现的漏洞。

0x02 shiro的发现

         对于shiro框架的发现对于网上的都一样,查看返回包中是否有rememberMe=deleteMe,还有就是使用AWVS等扫描工具进行扫描。但是扫描不一定能扫描出shiro框架,因此还是分析返回包比较好一些。

(1):登录错误没有发现shiro

记一次实战中Shiro反序列化漏洞利用

         登录失败时并没有发现存在shiro反序列化,然后注册了一个用户,直接就登录进去寻找上传点,尝试getshell。最后上传失败发现了一个XSS(大家可以看上篇文章有详细介绍)

(2):发现shiro

         本来第一遍测试完之后上传失败了,我已经心灰意冷了,但是由于资产比较少,发现都没有太多功能点,就又开始测试这个网站。在使用之前注册的用户名和密码登录时发现了shiro。

         这个网站在登录失败时返回200,这个时候不会显示rememberMe=deleteMe,但是,在使用正确的用户名和密码之后会返回302跳转的状态码,在这个返回包中会显示rememberMe=deleteMe。因此自己以后在测试过程中还是需要对各种返回包都进行分析,运气和细心都很重要。

记一次实战中Shiro反序列化漏洞利用

二、shiro反序列化漏洞的测试

0x01 爆破找到正确的Key

         发现使用shiro框架,还等什么,使用shiro利用工具一把梭啊。但是网上的各种利用工具很多,但是Key都不是很多,因此用了好几个工具都失败了。最后找到一个工具成功发现了Key和Gadget。

记一次实战中Shiro反序列化漏洞利用

三、shiro反序列化漏洞踩坑

0x01 dnslog无回显

如果一路如此顺畅,那么今天就是非常开心的一天了,但是拿shell之路却十分曲折。

(1):生成域名

记一次实战中Shiro反序列化漏洞利用

(2):使用工具进行dnslog回现

记一次实战中Shiro反序列化漏洞利用

记一次实战中Shiro反序列化漏洞利用

记一次实战中Shiro反序列化漏洞利用

(3):dnslog没有流量

记一次实战中Shiro反序列化漏洞利用

      这下心凉一截。使用工具执行命令也是失败。到手的shell就没了?

四、使用回显漏洞进行检测

0x01 使用文件读入getshell

         眼看到手的shell就要飞了,肯定不甘心啊,找大佬去请教,有大佬说这是无回显,可以尝试盲写文件,但是这种似乎风险太大,还没去尝试,各位大佬后面可以进行尝试。

        后面有人说出了一个很严峻的问题,可能并不是无回显,而是服务器禁止了dnslog。说完之后恍然大悟,HW刚结束,很多人都把服务器上的dnslog给禁掉了。因此dnslog无回显。解决这种问题可以自己搭建一个dnslog来进行尝试。

         正在我与大佬交谈之时,师傅传来喜讯,拿到shell了。通过创建一个文件,然后将命令写入文件中,最后读取文件中的内容来执行命令。

(1):指定Key和Gadget

         由于之前使用一个工具扫描出了Key和Gadget,因此直接指定Key和gadget,这样就不需要工具再进行Key的爆破了,更加准确和快速。

记一次实战中Shiro反序列化漏洞利用

(2):找到一个静态文件

记一次实战中Shiro反序列化漏洞利用

(3):添加静态文件地址

记一次实战中Shiro反序列化漏洞利用

         块添加的文件的目的是先去定位服务器上的一个资源,然后再服务器上创建一个文件,然后要执行的命令就会被写入这个要创建的文件中,后面通过读取这个文件的内容来执行命令。

(4):成功getshell

记一次实战中Shiro反序列化漏洞利用

五、后续

0x01 shell反弹失败

         成功getshell之后,四个人一窝蜂的上去反弹shell。结果写了大量的文件,用了各种反弹shell的姿势都失败了,一看午饭时间到了,先吃饭吧,我师傅在给我说了一句下午必拿下之后就回家吃饭了,我心想,吃完饭一定要弹个shell回来。结果中午和哥几个吃完饭之后,按耐不住拿到shell的快感,大家一致同意去附件公园走走,探讨一下拿到shell的心得。在大家吹的天花乱坠的时候,不知道发生了一件大事。

0x02 shiro漏洞Key被换了

         下午上班了,我还迷迷糊糊的,师傅过来问我,shell弹回来了吗?我说了一通,最后总结成两个字就是没有。然后突然发现shiro漏洞打不了了,Key被更改了,用我之前的神器爆破不出key了。完了,到手的shell这下真的没有了。甚至我们还被反打了,我师傅的VPS发现了mozi的扫描,完了,这下被防守人员发现了。shell没了,只能重新找新的漏洞了。

0x03 总结

(1):对于数据包不仅要看登录失败的数据包,登录成功的更应该关注,我们往往只关注登录成功的结果,却忘记分析相关的数据包。

(2):对于shiro反序列化漏洞应该多用不同的工具去爆破key,一个工具的key可能会不全

(3):目前刚进行完国家HW,很多公司禁了dnslog的域名,因此dnslog没有流量不代表是没有回现

(4):拿到shell之后先留后门,维持权限,不能飘了。

第一次在文章里面写了这么多废话,也算是记录一下今天的心情吧。后期的文章还是会多点干货,少点废话的。

记一次实战中Shiro反序列化漏洞利用

本文始发于微信公众号(零度安全攻防实验室):记一次实战中Shiro反序列化漏洞利用

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: