【自动化赏金之路】漏洞挖掘纵横理论之横篇
2022-8-29 08:12:37 Author: mp.weixin.qq.com(查看原文) 阅读量:0 收藏

大家好,我是BaCde。上篇文章总结了下之前自动化挖掘到的一些漏洞总结,这次写一下我在实践过程中的心得体会。

之所以先聊理论,是因为在开发工具之前,总结过往的一些经验,并分析漏洞挖掘最根本的重要因素,基于此总结一套出一套理论,工具的开发都是围绕这套理论来展开和进行。

纵横理论

纵横理论是我自己习惯的叫法,我觉得很贴切。至于有没有其他人提出,我并没有去进行搜索或分析。

漏洞挖掘需要满足两个要求,即输入入口和危险函数。无论是web漏洞、二进制漏洞都是如此。其本质在于用户的数据可以被当成代码执行。当然代码也可以被当作数据,这也是受到计算机由冯诺依曼体系架构的影响。

再看漏洞挖掘,我们围绕上述两个来展开,即寻找输入点,看是否会进入到可能造成漏洞的危险函数中;或从危险含函数追溯,看是否数据可控。

现在大家都在谈攻击面,其实就是为了寻找到更多的可控入口,比如发现更多的子域名,扫描IP的端口、寻找软件或网络攻击面等都是如此,这种方式称为横。而还有一种就是在有限的几个点或面中去死磕,比如看似不可能的情况下,去进行绕过,或者结合场景下去进行利用等,去深入的挖掘可能性,这种我称为纵。合起来就是纵横理论。这两种方式的运用网络中都有大量的资料,对于初学者或者一些行内的朋友,资料都太过零散,不够体系化。所以,需要收集和整理。当然各位大佬,也都有各自的一套方法论。

演变过程

我也在不断思考,有没有一种方式能够快速实现自动化的发现漏洞。也依据上面的思考,开始进行尝试,首先就是实践 “” 这种方式。即自动化获取子域名、证书信息、DNS解析、IP、端口、web页面信息、url地址等信息,同时自动化覆盖大量SRC厂商,来获得最多的输入点。而为了尝试,工具也经过3次变化。简单点,目标越多,发现漏洞的可能性就越多。

第一次,就是采用国外喜欢的bash脚本,使用Python实现,流程是线性执行的。代码总共加起来500行左右。信息全部由文本保存。这种方式,就是利用开源程序,快速实现信息收集,并进行存储,使用文件搜索等方式实现自己感兴趣的信息。开发速度快,依赖的环境少。不断扩大目标,通过这种方式也确实可以发现一些漏洞并提交。但是还是比较麻烦,随着目标的增加,线性执行的时间需要太久,效率太差,也算是验证思路有效。 下图就是最开始的程序目录结构。由于使用公开程序或者github上有现成的工具,大家也都有一些自己的流程和方法,网络上也有公开一些文章来讲如何做的的,大家都在使用,撞洞可能性极高,完全看运气,所以最主要的还是不断挖掘新的资产发现方法是 ” 这种方式的重点。

保存内容包括如下这些内容。

第二次就是使用多进程方式改进上面的版本。实现并行化的一些操作,这里不多讲了。

第三次就是修改为分布式,就是上一篇文章中的流程图的架构。随着目标的增多,增加机器数量即可。同时也可不断增加自己想要增加的一些资产发现方法等。现在云服务也是非常方便,随用随开即可。现在就是在不断完善这套工具的阶段。借助许多公开软件,实现起来也很快速。使用到的软件有subfinder、xray、nuclei、masscasn、nmap、waybackurl、findomain、amass、rad等。这里要特别感谢伟大的软件开发者们。当然这里就是部署起来会比较麻烦,但是后续会很方便。当然还用到RapidDNS(全量数据)。

云服务很方便,在面对大量目标时,不断增加机器即可,使用一台机器跑一个月跟30台机器跑一天,结果可能差不多,但是效率却大大提升。

当然,现在有不少优秀的开源工具大家可以使用。这些工具各有优点,大家也都有自己的喜好,这里只是分享下我的一点点心得体会,自己研发的好处是拓展上更快、后续主要集中在新的方法的挖掘上,同时增加的新的方法可以快速的应用。


大家如果想看上一篇的,我在这里推送也加上了。大家可以点第二篇即可。

喜欢请点赞,有用请关注,谢谢!


文章来源: https://mp.weixin.qq.com/s?__biz=Mzg4NDU0ODMxOQ==&mid=2247485742&idx=1&sn=619d1dab717ace77778748f2c5f28d25&chksm=cfb73e9ef8c0b788586d75d1f3119624c30d62c804b4a06b73a9d2c73535633992a638567344&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh