🎉 Giảm 20% cho đơn hàng đầu tiên!✦🚚 Miễn phí vận chuyển cho đơn trên 500.000₫✦⚡ Flash Sale — Số lượng có hạn!✦🎁 Quà tặng kèm cho đơn từ 1.000.000₫✦🎉 Giảm 20% cho đơn hàng đầu tiên!✦🚚 Miễn phí vận chuyển cho đơn trên 500.000₫✦⚡ Flash Sale — Số lượng có hạn!✦🎁 Quà tặng kèm cho đơn từ 1.000.000₫✦
白帽黑客究竟如何攻入一个系统?从侦察到 Web Shell 的渗透测试六步流程
Quay lại Blog

白帽黑客究竟如何攻入一个系统?从侦察到 Web Shell 的渗透测试六步流程

4 tháng 11, 20263 phút đọcVũ Khôi
Tiếng Trung
#Tiếng Trung
Vũ Khôi

Vũ Khôi

Tác giả tại Wotech Electronics Blog

白帽黑客的渗透流程:用 Nmap 扫描网络、枚举 Web 表面、突破登录、利用文件上传漏洞并用脚本自动化

白帽黑客究竟如何攻入一个系统?从侦察到 Web Shell 的渗透测试六步流程

没有黑屏绿字乱闪,也没有"一条神奇命令"瞬间攻破服务器。一篇广受分享的 freeCodeCamp 实操课程总结显示,现实中的渗透测试(pentest)是一套系统而严谨的六步流程:用 Nmap 做网络侦察、枚举 Web 表面、突破身份验证层、利用文件上传漏洞植入 Web Shell,最后用 Bash 和 Python 把整个侦察环节自动化。

快速回答

  • 渗透测试(pentest)是指在合法授权下模拟真实攻击,在犯罪分子之前找出系统漏洞。
  • 标准流程包含六个阶段:(1)Linux 与命令行基础,(2)用 Nmap 做侦察与网络扫描,(3)Web 枚举与模糊测试(fuzzing),(4)用 Burp Suite 和 ffuf 攻击身份验证,(5)利用文件上传漏洞安装 Web Shell,(6)用 Bash 和 Python 实现自动化。
  • 这套流程的来源:freeCodeCamp 的实操课程《How Ethical Hackers Actually Break Into Systems》(讲师 Declan Middleton),全程在一台专门的 CTF 虚拟机里进行——合法、安全的实验环境。
  • 给防御者最大的教训:安全是一条链——一个服务泄露版本号、一个登录页没有限速、一个上传功能不校验文件类型,任何一环都足以丢掉整个系统。
  • 硬性边界:文中所有技术只适用于你自己的系统,或获得书面授权的系统;未经许可侵入他人系统属于违法行为。

什么是渗透测试?它和非法"黑客攻击"有什么区别?

渗透测试是安全专家——白帽黑客——在系统所有者授权下扮演攻击者角色的活动:使用网络犯罪分子同款的技术与工具,在漏洞被真实利用之前将其找出、证明并报告。渗透测试与非法攻击之间唯一、也是决定性的区别在于授权与事先约定的范围:同样一次端口扫描,有合同和明确范围就是安全服务;没有,就是可能被追究刑事责任的非法侵入。

在培训中,渗透测试在实验室和 CTF(Capture The Flag)虚拟机里练习——这些系统被故意做得带漏洞,供学员合法攻击。原帖作者 Lữ Minh Khương(VGU Tech Alumni 社群)总结的正是 freeCodeCamp 的这样一门课,作者也在开头写明:这是课程内容,不是现实中的"实战视频"。

六个阶段一览

阶段 目标 主要工具 / 技术
1. Linux 与命令行 掌握工作环境与目标机 Parrot OS / Kali Linux、终端、用户与权限管理
2. 侦察与网络扫描 绘制开放端口、服务与版本地图 Nmap(-sV、-sC、诱饵/SYN 隐蔽扫描、ProxyChains)
3. Web 枚举 找出技术栈、隐藏目录与端点 whatweb、curl -I、ffuf、dirsearch、SecLists 字典
4. 攻击身份验证 突破管理员登录门 Burp Suite 拦截请求、ffuf 爆破(Cluster Bomb)、rockyou.txt
5. 利用与 Web Shell 把应用权限变成服务器控制权 searchsploit / Exploit-DB、任意文件上传漏洞、PHP Web Shell
6. 自动化 加速重复性侦察 Bash 主机/端口扫描脚本、Python(socket、requests)

阶段 1:为什么一切从 Linux 和命令行开始?

大多数强大的安全工具都运行在 Linux 上(Parrot OS、Kali Linux 等专用发行版),安全从业者主要在终端而非图形界面里工作——因为命令行能精确控制进程、权限和网络,而且易于记录与自动化。

基础操作分两组:身份与系统管理——查看当前会话(whoami、hostname、用 uname -r 看内核版本)、管理账户与 sudo 权限(usermod -aG sudo、chmod);以及网络检查——查看本地网卡(ip a、ifconfig)、测试报文响应(ping)、发现同一子网内的在线设备(netdiscover)。听起来简单,却是后续每个阶段赖以建立的"字母表"。

阶段 2:Nmap 如何绘制系统地图?

面对一个陌生的 IP 地址,第一目标是搞清这台机器开了哪些"门":

  • 基础端口与服务扫描:Nmap 识别开放端口——经典实验里是 22(SSH)和 80(HTTP)。
  • 版本扫描(nmap -sV):精确认出软件与版本,例如 Debian 上的 Apache 2.4.x。版本信息是查找该版本已公开漏洞利用代码的钥匙。
  • 默认脚本扫描(nmap -sC):自动检查 robots.txt 等敏感文件——这类文件有时会意外暴露隐藏的管理路径,比如位于 /extplorer 的文件管理器。
  • 低可见度技术:当测试需要避开入侵检测系统(IDS/防火墙)时,测试者会结合诱饵 IP(-D RND:10)、SYN 隐蔽扫描(-sS)或通过 ProxyChains 路由来分散真实来源痕迹。

对防御者来说,这一阶段的信息非常直白:每一个对外暴露的服务、每一条泄露的版本信息,都是送给攻击者的免费情报。

阶段 3:Web 枚举在找什么?

当 80 端口开着、首页却只是默认页时,注意力转向应用层:

  • 技术指纹识别:whatweb,或用 curl -I 查看 HTTP 头,可以得知服务器架构、后端语言(如 PHP)和相关库。
  • 目录与文件模糊测试:dirsearch、ffuf 等工具配合 SecLists 等标准字典,大量尝试路径,找出界面上从未链接、但实际存在的端点、隐藏参数或子域名。
  • 按状态码过滤噪声:排除 403、404、301 响应,把注意力集中在真实存在的资源上,而不是成千上万条假线索上。

阶段 4:登录层是如何被突破的?

找到管理员登录页却没有凭据时,测试者分两步走:

  1. 用 Burp Suite 抓包分析:Burp 作为浏览器与服务器之间的拦截代理,记录登录 HTTP POST 请求的精确结构——username、password 参数、会话 cookie——从而完全搞清身份验证机制。
  2. 用 ffuf 自动爆破:把抓到的原始请求喂给 ffuf,用 Cluster Bomb 技术(多个字典组合尝试)配合 rockyou.txt 等常见密码字典。如果系统没有限速机制(rate limiting)且仍在使用默认或弱口令,找出正确组合只是时间问题。

这是现实中最常见的弱点之一,也是最便宜就能修好的:限制失败尝试次数、临时锁定账户、强制强密码、开启双因素认证。

阶段 5:从登录到 Web Shell 是怎么走的?

进入文件管理应用(实验里是老旧的 Web 文件管理器 eXtplorer)之后,测试者继续:

  • 查找已知漏洞:用 searchsploit(Exploit-DB 数据库)核查正在运行的软件版本是否存在已公开的漏洞。
  • 利用任意文件上传漏洞:如果应用允许上传或新建文件却不严格校验文件类型,攻击者就能把 Web Shell——一小段充当浏览器控制台的 PHP 脚本(如 p0wny-shell)——推送到 Web 目录。
  • 触发 Web Shell:只需访问刚上传文件的 URL,攻击者便在目标服务器上获得交互式命令界面:读写系统文件,并为下一步提权做准备。

这条链说明:一个为了"方便"而存在的上传功能,可以让它前面的所有防御层全部失效。

阶段 6:为什么渗透测试者必须自己写工具?

专业的渗透测试者不会对每个目标都把同样的命令手敲一遍。把侦察自动化是必备技能:

  • Bash 脚本:打包第一轮扫描——检查主机是否存活(ping)、快速扫描目标端口列表——节省初期时间。
  • Python 侦察工具:用 socket 库把域名解析为 IP(gethostbyname),用 requests 库自动获取 HTTP 状态码、提取完整响应头并分析服务器的响应结构。

能自己写工具,也是"工具使用者"和"懂系统的人"之间的分界线:当现成工具不适合当前场景时,测试者能自己造替代品。

防御者能从这个流程里学到什么?

每个攻击阶段都对应一层具体的防御,任何组织今天就可以自查:

被利用的弱点 对应的修复
无用服务仍开着、软件版本暴露 关闭不用的端口/服务、隐藏版本信息、按计划打补丁和更新
管理目录和端点被 fuzzing 找出来 绝不靠"秘密路径"做安全;给管理区域加身份验证和 IP 限制
登录无限速、默认/弱口令 限制尝试次数、临时锁定、改掉所有默认值、开启 MFA、使用强密码
上传功能不校验文件类型 在服务端校验扩展名与内容、把上传文件存到 Web 根目录之外、绝不给上传目录执行权限
没人看日志 监控登录与访问日志中的异常——上面几乎每一步都会在日志里留下清晰痕迹

常见问题

学渗透测试从哪里开始?

按照这门课本身的路径:先打牢 Linux 和命令行,再学网络基础(端口、协议、DNS),然后才是扫描与利用工具——并且只在实验室或获准的 CTF 虚拟机里练习,绝不要拿别人的真实系统练手。

渗透测试就是跑现成工具吗?

不是。现成工具(Nmap、Burp Suite、ffuf)只是表层;决定结果的是系统化思维——读懂扫描结果、把小线索串成攻击链、并在需要时用 Bash/Python 写自己的自动化,正如流程的阶段 6 所示。

没有安全团队的小企业先自查什么?

最便宜、收益最高的三件事,恰对应这条链里断掉的三环:改掉所有默认密码并开启登录尝试限制;审计网站上所有的文件上传功能;关闭不用的端口/服务,并升级已停止支持的软件。

Web Shell 有多危险?

非常危险。Web Shell 让攻击者直接在 Web 服务器上获得交互式控制界面——窃取数据、篡改网站、植入更多恶意代码,并以这台服务器为跳板打进内网。它往往是重大数据泄露事件的起点。

我能不能拿别人的网站"帮忙测一下"这些技术?

不能——在法律上,无论意图好坏,没有系统所有者的授权就是非法侵入。合法的渗透测试永远需要事先的书面协议与范围,或者只在实验室/CTF 环境里进行。

结语

freeCodeCamp 这门课呈现的全景表明,真正的渗透测试是一份耐心与方法的工作:大部分时间花在侦察、枚举和串联线索上,而"拿下服务器"的那一刻,不过是一条早已脆弱的链条的最终结果。对运维者和企业主来说,理解这个流程不是为了去攻击谁,而是为了确切知道自己的链条断在哪一环——赶在别人用不受欢迎的方式指出它之前。

来源:Lữ Minh Khương 在 Facebook 社群 VGU Tech Alumni 的分享帖(2026 年 11 月 3 日),总结自 freeCodeCamp 课程《How Ethical Hackers Actually Break Into Systems》,由 Wotech Electronics 编辑并补充防御视角整理。

Bài viết liên quan

实测:Claude Code 单干 vs 三 Agent 团队——慢近一倍、便宜一点,但在大型安全任务上胜出

4 tháng 11, 2026 · 3 phut doc

实测:Claude Code 单干 vs 三 Agent 团队——慢近一倍、便宜一点,但在大型安全任务上胜出

一位开发者公布了一组相当少见的实测数据:让 Claude Code 独自完成任务,正面对比一个由三个 Agent 组成的"团队"——Claude 任技术负责人做协调、廉价的 pi agent 写代码、Codex 做独立评审——在同一个 Rust 项目、同一起始提交上,用盲审(blind review)打分。结果与很多人的预期相反:多 Agent 工作流并不更快,甚至慢了近一倍;省下的钱也比想象中…

以每月不到 50 美元运行 5 个 OpenClaw AI 智能体 24/7:组织之道

3 tháng 11, 2026 · 1 phut doc

以每月不到 50 美元运行 5 个 OpenClaw AI 智能体 24/7:组织之道

AI 社区正在热议一则分享:有人基于开源平台 OpenClaw 运行着一支由 5 个 AI 智能体(AI Agent)组成的"团队",全天候 24/7 连续运转,每月总成本不到 50 美元。这个数字挑战了大众的普遍认知——通用 AI 智能体系统必然昂贵、只属于大企业。本文将分析这样一支智能体小队如何运作、成本为何能压到如此之低,以及自行部署前需要权衡的事项。

谷歌开源 Elephant-Goldfish 模型:\"用大象做设计,用金鱼做评审\",让 AI 不再自夸

2 tháng 11, 2026 · 3 phut doc

谷歌开源 Elephant-Goldfish 模型:\"用大象做设计,用金鱼做评审\",让 AI 不再自夸

谷歌刚刚公开了 Elephant-Goldfish Model(EGM)——一套开源技能集,让公司数千名工程师用 AI agent 起草软件设计规格,再由一群"没有记忆"的评审者从零开始审查。目标非常具体:终结 AI 自己写规格、自己评审、然后永远夸好的循环——正是这种循环让大量隐藏假设和边界情况漏了过去。