目录导航
我们中的许多人从出生起就与计算机打交道,并对电影中的黑客技术感到惊讶。但是,如果我们想拥有类似的技能应该怎么做呢?
对这个领域感兴趣的人越来越多,他们可能会提出各种关于扩展知识和职业的问题。因此,我们决定制定我们建议的路线图。
此路线图适用于所有级别。初级、中级和高级,您可以按照建议的主题形象化您面前的障碍,要想成为一名成功的安全研究员,您应该绕过这些障碍。
学习路线图[加载速度慢,耐心等会]
要成为渗透测试员、漏洞猎人或安全研究员,我们应该牢记一些障碍。最重要的一点是,这个领域的知识是不断增长的,不会完蛋。牢记这一点,我们不能指望自己什么都知道,即使顶级安全研究人员每天都在学习新技术。
另一方面,要在这个领域取得成功,我们需要有大量的热情、耐心和渴望学习破解和破解。此路线图是我们建议的推断您在该领域时间的方法,我们绝不知道所有这些内容,但这些建议是基于我们过去几年在应用程序安全领域工作的知识和经验。
这个博客推荐了各种材料和书籍,这些是我们根据经验和阅读的偏好。您也可以自己找到有关上述主题的各种其他资源,因此不要限制自己。
这是扩展您在应用程序安全领域的职业生涯的理想路线图,这意味着某些主题可能不是发现漏洞的必要条件。但是,大多数人在开始时会跳过这些主题,因此通过学习这些主题,您可以更好地可视化和理解同一主题。牢记这一点,我们还指导您完成了一个快捷路线图,您可以使用该路线图尽快开始您的黑客生涯。
总结:
- 没有人知道一切。
- 每个主题都提供各种材料。找到最适合你的。
- 学习过程可能因人而异。
- 还有一个捷径路线图,可以尽快开始实际的黑客攻击。
- 这个路线图可能需要多年的学习过程,不要急于求成。
- 最后但并非最不重要的一点是,熟能生巧!
第 0 层
要开始这个职业,我们坚信您应该热爱 hack。回到过去,没有漏洞赏金计划、VDP 等。人们只是把黑客作为他们的主要热情而不是金钱目的。这意味着您应该选择黑客作为您的热情并了解可能出现的困难。
第二点,这个职业是耗时的。如果你想成为一名熟练的安全研究员,你应该推导出你每天大量的阅读和学习新事物的时间,而且如前所述,这个领域的知识在不断增长。
在继续下一步之前,了解可能会遇到的障碍,并问问自己这个领域是否最适合你。
一级
每个职业都有一堆先决条件,如果我们计划有一个成功的职业,这些先决条件可能看起来很无聊但必不可少。以下是我们建议您在深入研究应用程序安全性之前具备的先决条件列表。
网络和协议
如果您没有网络领域的背景,我们强烈建议您阅读 Network+ 以了解基本概念。这将在您以后的职业生涯中在需要网络知识的各种漏洞中发挥巨大作用。
您还应该熟悉 HTTP 协议和基本概念。这是您应该做的最重要的初步阅读之一,因为 HTTP 是我们每天要处理的内容。我们建议将HTTP: The Definitive Guide一书作为一个完美的例子。
编程语言
一旦您开始在该领域的职业生涯,您很快就会明白每天需要针对大量目标执行各种任务。这是人类不可能完成的任务,但是,如果您学习 Python 或 Go 等编程语言,您应该能够为自己自动执行这些无聊的任务。
其他黑客和开发人员开发了各种开源工具,为我们执行一些公开的已知任务。但是,在某些情况下,您可能会提出一个想法,而开源工具不可用于此目的。那时您需要知道如何为您的自定义工具编码。对于 Python,我们推荐30 Days Of Python,对于 Go,我们强烈推荐Learning Go这本书。
Linux 和 Bash
您要使用的操作系统主要是 Linux,因此您应该具备如何正确使用它的基本知识。您可以阅读Linux in Action以了解 UNIX 文件系统体系结构,并阅读Bash 脚本简介以学习在 bash 中自动执行基本任务。
Javascript
客户端漏洞的灵魂。如果您没有正确理解 javascript 基础知识,您将错过许多客户端漏洞,例如 XSS、WebSockets 和几个基于 DOM 的漏洞。我们强烈建议将30 Days Of Javascript和Javascript.info作为学习基础知识和进入兔子洞的资源,你可以去。
网络服务器
建议了解 Web 服务器的基础知识,并为自己实现一个实用的 Web 服务器以测试您拥有的技能。有各种 Web 服务器,我们建议将 Apache 作为首选。要学习 Apache Web 服务器,我们建议您阅读Apache Cookbook。
出于负载平衡和代理的目的,我们建议将 Nginx 作为一种方法,因为与 Apache 相比,它在这些用法方面更灵活。你可以阅读Nginx Cookbook。
2级
实践学习
在掌握了我们建议的先决条件列表后,终于到了进入有趣部分和黑客攻击的时候了。首先,您需要了解基本的Web漏洞。在OWASP十大有必知的漏洞,你可以计划从开始的一个惊人的列表。
我们强烈建议您从PortSwigger 学院学习 Top 10 列表,这是最好的学习资源之一,它将成为您在 Web 应用程序安全学习过程中最好的朋友。PortSwigger 对每个漏洞都有惊人的描述,他们为每个主题建立了许多很棒的实验室,供您在实践中测试您的技能。
如果你想启动 PortSwigger 的实验室,你应该得到他们最著名的产品Burp Suite,它是一个 web 代理,用于按需拦截和修改 HTTP 流量。学习如何设置和使用此工具是必要的,我们相信您可以通过与他们的实验室合作来获得。但是,如果您想了解有关此主题的扎实知识,我们建议您阅读Burp Suite Cookbook。
完成上述步骤后,我们建议您查看Kontra 应用程序安全平台。为 OWASP Top 10 Web和API创建了几个实验室。
解释是基本但有创意的,因为您可以想象利用漏洞的步骤。
深入了解OWASP Top 10之后,再回到PortSwigger’s Academy学习其他不同的漏洞。
面向青少年的 Web 应用程序安全书籍
除了实践培训,多读几本高质量的书籍,对每个主题有更深入的了解,学到更多,也很不错。总有改进的余地,并记录新的小笔记。这就是为什么我们建议针对每个主题提供多种资源的原因。
除了您之前在 Portswigger 和 Kontra 上所做的培训之外,我们建议您阅读OWASP Web 安全测试指南,因为它包含针对每个漏洞的其他几个测试用例,以及对 OWASP 团队描述的每个主题的更深入解释。
最受初学者欢迎的书籍之一是The Web Application Hacker’s Handbook 2,其中讨论了几个基于 Web 的漏洞和基本的 Web 架构。这本书基本上是必读的,虽然它有点旧。不要跳过它。
如果您打算尝试Bug Hunting,您必须知道找到漏洞并不是那么简单,而且大多数Bug Hunter 都有不同的技能和工具集。
在Bug Hunting中,最好的训练方法之一是阅读其他黑客的文章,他们在其中讨论了他们在黑客攻击时的观点,以及他们所做的不同类型的评估。
Web Hacking 101是那些讨论了几个基于 Web 的漏洞并提到每个主题的一些高质量文章的书籍之一。阅读本书将使您了解 Bug Hunting 与 Pentesting 的不同之处,并了解黑客在接近 Bug Bounty 目标时的观点。
保持更新
如前所述,应用程序安全技术每天都在变化。您需要加入其他黑客分享他们知识的社区,其中可能是一篇文章、一个开源工具或一个新的 CVE。
黑客大多活跃在 Twitter 上。您可以关注他们的作品,并在他们的个人博客或 Medium 上随时了解他们的文章。他们也可能在 GitHub 上分享他们的开源工具,所以请随时关注。
制定自定义方法
大多数顶级漏洞猎人都有自己的方法论,他们在接近目标时编写了各种测试用例。他们从不同的书籍或其他黑客的文章中获得了这些知识。
我们强烈建议您调整自己,根据您的学习来制定您的方法,并根据您每天学习的每个技巧保持更新。要记笔记,您可以使用多种服务,例如Notion、Obsidian和Xmind。
第 3 层
挑战你的实践技能
到目前为止,您已经对不同的漏洞有了丰富的了解。最后,是时候在实践中测试您的技能并扩展您的实际黑客专业知识了。
为此,我们建议您使用Hack The Box、RootMe和Try Hack Me等 CTF 平台来提高您的开发技能。
许多人可能不喜欢 CTF,因为它们看起来像游戏。这种方法既正确又错误,因为有几个现实世界的案例,技术/payload首先被引入到 CTF 中,但后来被用于现实世界的漏洞赏金计划。
其中之一是YesWeHack 的这个测验和 Blaklis 的这个答案。后来,Sam Curry在Apple上使用了相同的payload来绕过 XSS 过滤器。
此有效负载来自@Blaklis_的 CTF 解决方案。我最初认为它可能是一个无法利用的 XSS,但似乎总是有解决边缘案例 XSS 的方法。
另一个例子来自Orange Tsai的 BlackHat 演讲Breaking Parser Logic – Take Your Path Normalization Off and Pop 0days Out,其中他讨论了在 2016 年 HCTF 年底首次引入的Nginx off-by-slash技术。
参与漏洞赏金计划
如果您不喜欢 CTF,而是针对真实目标训练您的技能,您可以开始寻找漏洞赏金计划。通常,这种方法是扩展您的实践技能的更直接方式,因为您正在测试的目标不应该存在漏洞。
存在几种类型的漏洞赏金计划,其中一些为报告的漏洞付费,而其中一些是“漏洞披露计划 (VDP)”,不为报告的漏洞付费。相反,他们通常会奖励您奖品、积分等。如果您只是想提高自己的技能,我们建议您先尝试 VDP,因为它们更容易发现漏洞。
关注安全会议
应用程序安全最有趣的部分之一是安全研究人员将在安全会议上展示他们过去几个月/几年的研究结果。
通常,他们会展示在此之前未被发现的新技术。通过参加这些会议,我们了解到:
- 安全研究员的观点和思考过程
- 未发现的新技术,我们可能会在许多目标上找到
- 我们应该改进的弱点
正如所讨论的,他们有很多好处说服我们参加这些会议。有几个著名的安全会议,如BlackHat、DEFCON、ZeroNights等。
更新您的方法论
这是该层最重要的阶段。我们已经在 CTF 平台或漏洞赏金计划上培训了我们的技能。以及参加各种安全会议,我们从中学到了很多。
之前,我们已经讨论过您应该随着时间的推移构建自定义方法。现在是时候使用您每天学习的技术不断更新它了。
第 4 层
如果你想扩展你的技能并进一步提高你的专业知识,那么你应该开始阅读关于这个主题的高质量书籍,并用这些书籍扩展你的方法论。
面向中介的 Web 应用程序安全书籍
我们强烈建议您从Web Application Security开始,它解释了现代应用程序中各种漏洞的利用和对策技术。
我们推荐的另一本书是Peter Yaworsky 的Real-World Bug Hunting,他在其中扩展了他的另一本书(Web Hacking 101),并提供了更多的解释和文章。这两本书看起来很相似,但在较新的书中解释了几种新的方法和技术。
最后但同样重要的是,我们强烈建议您阅读Vickie Li的Bug Bounty Bootcamp。这是应用程序安全方面最好的书籍之一,因为它解释了各种漏洞利用和缓解措施,以及导致问题的易受攻击代码。
深入了解安全机制
上面讨论的书籍主要涉及应用程序安全的攻击方面。但是,要在该领域取得成功并更好地了解背景中发生的事情,了解开发人员的心态和其他防御性因素总是有好处的。
可以使用各种书籍来实现这一目标,我们向您推荐最流行的书籍,我们很高兴阅读它们。
The Tangled Web是有关该主题的最佳书籍之一。作者非常详细地讨论了 Web 剖析和浏览器安全功能。
The Browser Hacker’s Handbook是另一本书,侧重于浏览器的安全机制,以及攻击浏览器扩展、插件等的各种技术。
API Security in Action是 API 安全、API 开发和现代身份验证和授权开发领域最伟大的书籍之一。本书还定义了每个实现中可能发生的各种攻击向量,您可以从中进行自己的研究并找到其他绕过技术。
Web Security for Developers主要关注您之前从开发人员的角度了解的漏洞。作者讨论了导致可能出现问题的易受攻击的代码。阅读本书,您可以了解哪些代码可能导致问题,以及开发人员如何一遍又一遍地重用易受攻击的代码。
第 5 层
在这个阶段,您被视为在各个领域拥有大量专业知识的安全专家。您可能是一名渗透测试员、漏洞赏金猎人或安全研究员,在您的职业生涯中取得了很多成功。牢记这一点,我们之前已经讨论过,总有改进的余地。即使在这个阶段,拥有许多不同的技能组合,您也可以提高自己的知识并成长得更多。
在这个阶段,凭借您拥有的技能,您可以找到尚未发现的新技术。那么,我们如何才能找到新技术并在以后向社区展示呢?
理解软件架构模式
基本上,我们需要了解不同的架构模式、现代 Web 应用程序结构、单页应用程序结构、不同的身份验证和授权实现、基础设施实现和各种编程框架。
根据所讨论的主题,您现在应该能够找到适合自己学习的资源。我们还推荐了两本书作为例子。您的方法应该是尽可能深入地了解每个实现。
假设您想了解各种身份验证实现,并且您想了解 OAuth 协议。您应该为它找到合适的资源,然后深入研究。
《OAuth 2.0 入门》是该领域推荐的书籍之一,因为它讨论了服务器端和客户端 Web 应用程序流程、客户端凭据流程、OpenID 流程以及各种其他工具和库。
要了解单页应用程序的工作原理,您可以阅读SPA 设计和架构,因为它讨论了 SPA 基础知识、MV* 框架、模块化 Javascript 等。
还有其他几种实现和架构需要学习。现在有了这种心态,您应该能够根据需要找到所需的资源。
深入网络
除了软件架构,我们还需要对HTTP协议有更深入的了解。新趋势是 HTTP/2,最近引入了许多新技术。其中之一是HTTP/2: The Sequel is Always Worse by one and only James Kettle。
他在处理 HTTP/2 时介绍了几种新的 HTTP Desync 漏洞利用技术。这是在协议上发现的趋势和新技术的少数例子之一。因此,我们应该对不同的网络协议有一个正确的理解,以便能够提出新奇的东西。
要学习 HTTP/2,我们建议您阅读Learning HTTP/2一书,然后再阅读有关该主题的新安全研究,以更好地了解迄今为止可能发现的攻击。
在过去几年中,基础设施设计也一直是安全研究人员关注的焦点。有趣的概念之一是反向代理和负载平衡。
该领域的顶级安全研究人员之一是Aleksei Tiurin。
他维护着一个广泛的关于代理的各种研究资料库。随着 HTTP/2 的新趋势,他还展示了他的研究Weird proxies/2 和一点魔法,其中他解释了不同的 Host 和 Path Misrouting 漏洞利用技术。
该主题的攻击面仍在增长。在过去几年中,由于代理的不一致和错误配置,发现了许多新技术,例如H2C Smuggling in the Wild、Web Cache Poisoning和H TTP Desync Attacks。
另一个重要的网络协议是 SSL/TLS,其中有很多可能的研究空间。之前,我们已经看到在 OpenSSL 实现中发现了一个漏洞。即贵宾犬攻击。
学习 SSL/TLS 协议可能不会导致直接的漏洞,但会导致正确理解您每天处理的网络。为此,我们建议您阅读Bulletproof SSL 和 TLS书籍。
编程语言
此阶段的编程语言与我们在第 1 层中使用的编程语言不同。在该部分中,我们描述了自动化的重要性。但是,这里的用法有所不同,因为它们主要用于自己构建应用程序以实现以下几个目的:
- 构建 Web 应用程序
- 了解架构
- 了解不同的保护功能和可能的旁路
- 各种白盒项目的代码审查知识
通过执行上述要点,您将对您正在处理的应用程序有一个正确的理解。这意味着您将根据该网站的技术和编程语言选择测试用例和有效负载。不再喷洒和祈祷。
一种非常有效的学习方法是构建各种易受攻击的应用程序,然后进入它们。您不仅在入侵应用程序,而且还了解应用程序架构和易受攻击的代码。稍后,当您观察具有相同技术的应用程序时,您会猜测可能的后端代码。
为此,有多种编程语言,例如 PHP、Go、Python、NodeJS 和 Java。选择最适合你的,然后再通过其他的。
慢慢但肯定地,您将学习不同的技术堆栈,您将能够编写各种应用程序并了解黑盒安全评估中可能的后端代码。
深入框架
在学习了编程语言之后,我们需要进入各种框架。您可能会问,学习框架如何提高我们的安全知识。
每个框架都有自己的安全功能,可以引导我们进行正确的测试用例。默认情况下,这些框架中应用了各种保护措施,例如:
- Laravel 通过清理用户输入来处理 XSS
- Django 提供 CSRF 保护
- Rails 提供点击劫持保护
- ASP.NET 使用参数化查询处理 SQL 注入
正如所观察到的,每个框架都有自己的安全功能,除了上面的示例之外,还有许多其他功能。
如果我们熟悉框架,我们就会了解我们应该根据我们正在处理的目标的技术堆栈进行评估。
结论
每个人内心都有一个黑客,这只是唤醒他们并让他们使用的问题。选择它作为一种激情,然后使用路线图向下走。虽然慢,但肯定地,您将获得成为一名熟练安全研究员的知识。
此路线图旨在用于所有级别的知识。选择您的目标并采取步骤来实现它。路线图图像中有 5 个红色部分,它们是您可以尽快开始黑客攻击的捷径。但是,请记住,稍后您需要查看其他部分。
happy hacking
大佬的站被墙了,是否可以将该文章发布到GitHub供国内访问?
他强任他强,清风抚山岗;
他横由他横,明月照大江.