如何学习渗透测试:初学者教程

2025-05-24

如何学习渗透测试:初学者教程

免责声明:黑客攻击是一项很难学习的技能。仅仅学习几门在线课程并不能让你成为一名优秀的渗透测试员。仅仅安装 Kali Linux 并学习如何使用工具,也无法让你成为一名优秀的渗透测试员。这是一条充满挑战的道路,充满了无尽的挫折,你不可能在一天、一个月甚至一年内学会如何顺利完成它。然而,如果你下定决心,你会发现渗透测试是一个非常有价值的领域,你可能永远都不想离开。

在本教程中,我将专门介绍渗透测试中 Web 应用程序攻击 方面的内容。这是一份道德黑客指南。如果你正在做这种不道德的事情,我真心希望你不要这么做。或者至少请你分一部分利润给我。


前提条件:

  • 基本技术背景(Unix 命令、一些软件开发技能)
  • 强烈渴望打破现状

0 - 背景知识

一些CS101知识是必须的。在连Unix命令都不熟悉的情况下尝试学习黑客技术,可不是像还没学会走就想跑一样。这就像驾驶一架A380飞机却不知道哪个方向向上一样。

沟通技巧

如果你在缺乏必要的先验知识的情况下就贸然开始渗透测试,并在过程中“填补空白”,那么你将会陷入不必要的困境。以下是你需要了解的内容:

如何使用 Linux:Linux/Unix 在编程和渗透测试方面的主要优势在于其终端和丰富的工具。您可以尝试在 Windows 上完成所有操作,但这绝非易事——如果您打算进行渗透测试,最终还是需要了解一些 Linux 知识。相信我:如果您从事安全工作,而您的同事发现您从未使用过 Linux,他们会永远嘲笑您。

这里有三个主要选项:

  • 安装一个 Linux 发行版(例如 Ubuntu)。最好的选择是下载一个虚拟机软件,用于安装 Linux 系统(链接见下方)。
  • 如果你有 macOS,那就继续用吧。因为 Mac 上的终端和工具和 Linux 几乎一样,所以你可以凑合着用。
  • 在 Windows 10 上使用Ubuntu。我认为这对初学者来说是最糟糕的选择,因为它在安装工具时可能非常不可靠,而且让 GUI 工作有时可能是一场噩梦。

  • VirtualBox:免费虚拟机软件

  • Ubuntu:不错的 Linux 入门发行版

  • 在 VirtualBox 中安装 Ubuntu

  • 初学者的 Unix 命令


如何编程:现在你已经搭建好了环境,我们可以开始最有趣的部分了!学习一些基本的编程技能对于渗透测试至关重要。如果你想学习如何破解它,首先要学习如何编写它。对于 Web 应用程序渗透测试,你需要学习一些全栈技术,例如 HTML、CSS、JavaScript 和 Python。Python 还有一个额外的优势,那就是它是一种非常优秀的脚本语言,可以让你编写自己的渗透测试工具(太棒了!)。


1 - 设置您的环境

如果你是开发者,你可能已经拥有了完美的配置。恭喜!通常情况下,Linux 或 Mac 是最佳选择。我个人在 Windows 10 上使用 Ubuntu(告我),但只是因为我知道我所有喜欢的工具都能在它上面运行。

许多初学者会从 Kali 开始,但我不建议这样做。成为一名自信的渗透测试员,其中一部分是建立自己的工具库。Kali 会提供一堆工具,但你可能无法真正理解和欣赏它们。

但无论你做什么,拥有一个舒适的环境绝对至关重要。现在就花点时间修复你设置中可能存在的任何问题(例如引导加载程序、窗口管理器、图形用户界面等等)。当你打开无数窗口和复杂的工具时,渗透测试会变得一团糟,你最不希望的就是你自己的环境对你不利。

2 - 学习理论

这一点毋庸置疑。即使只是网络应用程序黑客攻击,你也需要掌握大量的知识。我建议将网络黑客知识分为两类:基础知识和实用技巧。基础知识是你应该首先从书籍、视频、在线教程等学习的内容。

不幸的是,鉴于黑客世界瞬息万变,大多数优秀的网站已经具备了抵御“基础知识”攻击的安全性(但你仍然需要了解它们!)。“妙招”才是真正的赚钱利器。你以后可以通过浏览经验丰富的渗透测试人员博客、加入道德黑客社区以及观看鲜为人知的 YouTube 视频来学习这些技巧。如果你是第一个发现“妙招”的人,你就能进入名人堂,甚至可能获得丰厚的回报

以下是一些关于基础知识的优秀资源:

一旦你学习并练习了基础知识(下一节将详细介绍如何练习),你就可以继续学习一些“妙招”。以下是一些资源:

  • DEF CON 视频很棒
  • 漏洞记录:有很多地方可以找到,Medium 是一个不错的选择。也可以看看r/Netsec。此外,在 Google 中搜索你想了解更多漏洞的信息,并在后面加上“记录”或“POC”,例如“XSS 记录”。你会找到一些非常聪明的人发布的帖子,分享他们发现的新漏洞利用方法。
  • 寻找渗透测试社区并加入。令人惊讶的是,黑客攻击是一个非常社交化的领域,只需与其他渗透测试人员交流就能学到很多很酷的技巧。

3 - 使用 CTF 和 Wargames 进行练习

这才是有意思的地方。一旦你掌握了一些理论,就可以开始通过黑客挑战来练习了。这些是一些存在漏洞的 Web 应用程序,它们隐藏着一些“标记”,你可以通过利用这些应用程序来发现它们。

CTF(夺旗赛)比赛是现场活动,有记分牌和团队,而战争游戏的竞争性较弱,更像是练习技能的游乐场。

看看CTFtime上正在举办和即将举办的 CTF 比赛,虽然大多数比赛对新手来说都太难了。OWASP的 WebGoatOverTheWire是不错的对抗游戏。还可以看看OWASP 的 Juice ShopHacker101 CTFHack The BoxGoogle 的 XSS 游戏

虽然趣味十足且学习效果极佳,但请注意,战争游戏/CTF 所需的技能与实际应用(例如漏洞赏金计划)所需的技能略有不同。有可能你在 CTF 中得分最高,但完全无法胜任漏洞赏金计划(我曾经就遇到过这种情况),反之亦然。

兵棋推演之于漏洞赏金,就如同《文明5》之于管理一个真正的国家。兵棋推演可以教会你一些出色的策略和解谜技巧,但现实生活却截然不同——更多内容请见第五部分。

4 - 精通脚本编写

这会让你的生活变得轻松很多。Python 作为一种脚本语言非常棒,尤其是在黑客攻击方面。许多 CTF 和漏洞赏金任务都需要一些暴力破解操作,例如发送大量数据包和哈希计算,而所有这些都可以通过编写自己的 Python 脚本轻松完成。

了解一下pwntools,一个 Python CTF 框架。它简化了漏洞利用的编写!以下是如何发送数据包的。

我建议你创建一个文件夹来保存你自己的 Python 脚本,以便日后在此基础上进行开发。这能为你节省多少时间,真的难以言表。

5 - 现实世界和漏洞赏金

有一天,你会在第一次中等难度的 CTF 挑战中脱颖而出,无需再谷歌搜索答案。你会感觉棒极了。很可能你已经为此花费了数小时,最终自己找到了答案,这种感觉会让你永远迷上渗透测试。

你现在是一名猎人。凶猛无比。势不可挡。

沟通技巧

你甚至可能以为自己现在可以开始赚钱了。但一旦你查看了漏洞赏金网站,你就会意识到自己完全不知道自己在做什么。没有任何线索告诉你漏洞在哪里。攻击面如此之广,你甚至不知道从哪里开始。而且,成千上万的优秀黑客已经把这个网站彻底清除了。

虽然可能有点令人沮丧,但真正的乐趣就从这里开始。你已经离开操场,准备和大孩子们一起玩耍了。一个好的起点是观看我之前链接的这个 DEF CON 视频,然后深入研究寻找好用的工具和更多 Nifty Tricks。

现在是时候开始学习网络侦察了。DEF CON 视频对此进行了详尽的介绍,随着你构建自己的侦察工具库,你将学到更多。

6-了解你的工具

工具并不能成就黑客。但如果没有工具,你很可能走不远。

我建议先下载几个“必备”工具,比如NmapBurp Suite。Nmap是一款发现工具,可以查找域名上的主机和开放端口,通常能让你大致了解网络状况。而 Burp Suite 则是你的新朋友。真的,它是网络黑客攻击的头号多功能工具。它的主要用途是捕获和编辑数据包,但它的功能远不止于此。我实在无法在这篇博文中充分展现它——你可以去谷歌搜索一下,看看一些教程视频。

了解了这两个之后,你就可以根据自己的情况,找到(或制作)最适合自己的工具了。以下是我最喜欢的一些工具:

  • Sublist3r:我太喜欢这个子域名枚举器了。它速度超快,而且能找到很多东西。
  • Aquatone:与 Sublist3r 类似,但功能更强大。速度换来了性能;我通常先运行 Sublist3r,然后在后台运行 Aquatone。
  • dirsearch:目录暴力破解器。
  • LinkFinder:发现 Javascript 文件中的端点。
  • recon-ng:一个完整​​的网络侦察框架,几乎无所不能。如果你找到合适的环境,它甚至能帮你遛狗、做饭。
  • SecLists:本身并非工具,而是一个用于暴力破解的列表集合。它几乎是 Web 渗透测试的必备工具——我差点就把它列为必备工具了。
  • Spotify 破解混音带,营造酷炫氛围

7 - 继续黑客攻击

我告诉过你这会很困难,不是吗?

渗透测试充满挑战,令人困惑,总之就是令人沮丧。但如果你真心想做这件事,你总会找到克服所有这些困难的方法。

尝试加入社区,例如TwitterBugcrowd上的社区,因为与他人一起的旅程总是更有趣。

请记住:这是一个真正重要的领域。它回报丰厚,而且你将为世界做出真正的贡献。黑帽黑客们也每天都在学习,而道德黑客社区也需要一切可能的帮助。祝你好运,一路顺风!

这篇文章最初发表在explainhownow.com上

文章来源:https://dev.to/ctrlshifti/how-to-learn-penetration-testing-a-beginners-tutorial-505a
PREV
使用 Mapbox、React 和 Cube.js 构建基于地图的数据可视化🗺数据集和 API 前端和 Mapbox 热图可视化动态点可视化数据模式点和事件可视化分级统计图可视化辉煌的结局
NEXT
6 个 CSS 简写属性,助你提升 Web 应用体验 为什么要关注简写属性?🎈 什么是简写属性? CSS 背景简写 CSS 边框简写 CSS 字体简写 CSS 内边距简写 CSS 填充简写 CSS 边距简写 结论