zseano的方法论:第二篇扩大攻击面

阅读量216498

|

发布时间 : 2021-11-01 14:30:02

x
译文声明

本文是翻译文章,文章原作者 bugbountyhunter,文章来源:bugbountyhunter.com

原文地址:https://www.bugbountyhunter.com/methodology/zseanos-methodology.pdf

译文仅供参考,具体内容表达以及含义原文为准。

 

zseano的方法论第二篇,主要讲通过信息收集扩大攻击面

扩大我们的攻击面

工具准备好了,现在是时候扩大我们的攻击面了

子域名收集

这部分主要讲我使用的子域名扫描工具,寻找有什么子域名。就我个人而言,我喜欢测试网站提供的功能。我专门寻找有功能的子域,在工具运行的同时,我也会使用google hacking搜索一些子域名,我常用的一些关键词是:

ogin, register, upload, contact, feedback, join, signup, profile, user, comment, api,developer, affiliate, careers, upload, mobile, upgrade, passwordreset

这些几乎是网站上最常使用的词,记住趋势是你的朋友(the
trend is your friend!)。要找到你想找的东西,你得发挥创意除此以外别无他法。这也可以帮助你发现你在测试他们的主要网络应用时没有发现的新站点。

当你在测试主要的功能时,你应该记下有趣的端点,这些端点可以帮助你。至于要做什么,并没有正确的答案,可能性是无穷的。我建议你在这里看一个很好的帖子:

https://exposingtheinvisible.org/guides/google-dorking/

有时这部分可以让我忙上好几天,因为谷歌是世界上最好的搜索爬虫之一,关键是要问他们正确的问题。

研究人员在研究时忽略了一个常见的问题,即来自谷歌的重复结果。如果你滚动到搜索的最后一页,并点击”重新搜索以显示省略的结果”那么就会出现更多的结果。当你在搜索时,你可以使用”-keyword”来删除某些你不感兴趣的端点。不要忘记用手机用户的UA头检查结果,因为手机上的谷歌搜索结果与PC端不同。

除了对常见的关键词进行检测外,我还将开始对文件扩展名进行检测,如php, aspx, jsp, txt, xml, bak。文件扩展名的显示可以让你深入了解这个域名/服务器上使用的网络技术,并可以帮助你确定在fuzz时使用哪个词表。(你甚至可能幸运地发现扫出一个敏感文件) 但不要盲目地在目标上使用各种字典,真正使用有意义的字典才能产生更好的结果。

这种方法同样适用于GitHub(以及其他搜索引擎,如 Shodan, BinaryEdge)。Dorking和搜索某些字符串,如:

“domain.com” api_secret, api_key, apiKey, apiSecret, password, admin_password

可以产生一些有趣的结果。对于数据谷歌不仅仅是你的朋友!说实话,对于什么是dorking,没有一个正确的答案。搜索引擎的设计是为了产生你所查询的结果,所以只要开始问它任何你想要的。

在Dorking后,我收集到的子域名结果通常是完整的,所以我会用XAMPP快速扫描每个域的/robots.txt。为什么是Robots.txt?因为Robots.txt包含了一个网站所有者希望和不希望被google收录的端点列表。我个人认为/robots.txt是一个很好的开始指标,以确定一个子域是否值得扫描更多的目录/文件。对我个人而言我喜欢手工找到子域的功能,而不是依靠一个词表来发现内容。

你可以使用Burp Intruder 来快速扫描他们的 robots.txt文件,就像下图这样:

在本地运行一个XAMPP,托管一个基本的PHP脚本:

<?php header("Location: ".$_GET['url']; ?>

别忘了在选项中设置为跟随重定向,然后加载你要扫描的域。运行后,它会给你一个指示,告诉你哪些域名是活的,哪些是有反应的,还有可能是关于子域的内容的信息。从这里,我将挑选那些对我来说看起来很有趣的域名。它是否包含某些关键词,如 “dev”、”prod”、”qa”?它是一个第三方控制的域名,如careers.target.com?我主要是在寻找包含可供我发挥的领域的子域。我喜欢手动黑客,在我的方法论中,尽量不要过多地依赖工具。我更喜测试网站提供的功能,了解它是如何工作的。

使用Burp Intruder扫描内容的另一个好处是,你可以使用 “Grep – Match “功能来寻找你认为有趣的某些关键词。你可以看到下面的一个例子,在数百个范围内的域名索引页中寻找对”登录”的引用。这样做非常简单,而且有助于为我指出正确的方向,即我应该把时间花在哪里。

WayBackMachine

你可以通过从WayBackMachine.org获取结果来扩展你的robots.txt数据。WayBackMachine使你能够查看一个网站多年前的历史版本,并且有时,多年前robots.txt中包含的旧文件今天仍然存在。这些文件通常包含被遗忘的旧代码,这些代码更有可能是脆弱的。我使用dorking和WayBackMachine取得了很高的成功。

除了扫描每个子域的robots.txt之外,现在是时候开始扫描文件和目录了。根据是否有任何文件扩展名被发现,我通常会扫描最常见的端点,如/admin、/server-status,并根据成功情况扩大我的词表。你可以在本指南的开头找到参考的词表,以及使用的工具(FFuF,CommonSpeak)。

创建wordlist

你主要是在寻找暴露的敏感文件和目录,但正如在本指南开始时解释的那样,在搜索时创建一个自定义的词表可以帮助你找到更多需要测试的端点。这也是很多研究人员已经实现自动化的一个领域。他们只需要输入要扫描的域,它不仅会它不仅会扫描常见的端点,而且还会持续检查任何变化。我强烈建议你在研究过程中也这样做。这将有助于你的研究,并帮助你节省时间。花时间学习如何建立词表因为当你想发现更多信息时,自定义的词表对你的研究至关重要。

我们的第一次初步观察是为了了解事情的运作方式,我提到了写下笔记。写下发现的参数(尤其是脆弱的参数)是寻找漏洞时的一个重要步骤,可以真正帮助你节省时间。这就是我创建”InputScanner “的原因之一,这样我就可以很容易地寻找页面上列出的任何输入名称/ID的每个路径,对它们进行测试,并记下供将来参考。

然后,我再次使用Burp Intruder来快速测试在所发现的每个功能点中发现的常见参数,并测试它们是否存在多个漏洞,如XSS。这帮助我以最小的代价快速识别了很多大范围的漏洞。我在/endpoint上定义位置,然后简单地将发现的参数加入到Burp Intruder,然后我就可以用Grep来快速检查结果,看看有没有什么有趣的行为。/endpoint?param1=xss”&param2=xss”。大量的功能点,众多的参数=漏洞!(别忘了测试时候使用不同的HTTP请求方法,我有过这样的案例在GET请求中没有漏洞,但在POST中却有)

全局思考

到现在,我面前会有很多数据,可以测试上几个星期,甚至几个月。然而,由于我的第一次初步观察只是为了了解事情的运作方式,而现在我想更深入地挖掘,在通过子域之后,

本节的最后一步是再次回到主网站应用程序,并深入检查网站是如何网站是如何设置的。是的,我的意思是,再次浏览一切。记住我的我的目的是在这个网站上花尽可能多的时间学习所有可能的东西。可能。你看得越多,你学到的就越多。你永远不可能停留在你的第一印象,相信我,你会错过一些东西。

例如,在一个我认为已经彻底测试过的程序上,我开始重新审视各种功能,并简单地查看了我发现的端点的HTML源代码,结果发现他们在每个端点上都使用了独特的.JS文件。。这些文件包含这些文件包含了这个端点的具体代码,有时还有开发人员的说明以及更多的有趣的端点。在我最初的观察中,我没有注意到这一点,只是有兴趣知道有哪些功能,使用的参数等。在一个”解释像我5岁一样”,我当时忙着看Burp!在发现了这个常见的在发现目标上的这种常见现象后,我花了几周时间在每个终端上了解每个.js文件的作用,我很快就建立了一个脚本,每天检查这些.js的任何变化。结果呢?我在功能发布之前就开始测试它们,并且发现更多的bug。我记得有一个案例,我在一个.js文件中发现了注释过的的代码,它引用了一个新的功能,其中一个参数容易受到IDOR。我负责任地报告了这个错误,使这家公司在公开发布功能之前避免了他们的在他们公开发布该功能之前,免于泄露他们的用户数据。

我学会了最后做这一步,因为有时你有太多的信息而感到困惑。所以最好是先了解你要测试的功能和网站,然后再看看它是如何被组合起来的。不要信息过载,认为”太多事情了!”而使自己陷入困境。

信息收集中常用的脚本工具

本文翻译自bugbountyhunter.com 原文链接。如若转载请注明出处。
分享到:微信
+11赞
收藏
夫子
分享到:微信

发表评论

Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66