ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

渗透测试靶场全攻略:从入门到高阶练级路线与Docker部署

渗透测试靶场全攻略:从入门到高阶练级路线与Docker部署 练靶场这件事被问得最多的问题不是“哪个靶场好用”而是“我该先打哪个”。很多人一上来就下载VulnHub的镜像结果卡在信息收集阶段连入口都找不到然后开始怀疑人生。这个问题的根源不是能力不够而是靶场本身是有梯度的——它们就像健身房的器械和实战比赛的区别把顺序搞反了效率会低很多。这篇内容我把从新手到高阶阶段的常用靶场按路线整理了一遍覆盖DVWA、Pikachu这类入门靶场SQLi-Labs、XSS-Labs、Upload-Labs这类单点训练靶场再到VulnHub、红日靶场这类综合内网环境每一个都会讲到它适合谁、练什么、怎么搭、怎么算练完。文章后面附一套用Docker一键拉起多个靶场的部署方案以及我踩过的坑和必须守住的合规底线。不管你是刚入门想建立漏洞概念还是已经打过几台靶机想转SRC这份汇总应该都能给你一条比较清晰的路。1. 先想明白靶场练级路线到底该怎么排1.1 三阶段划分新手、进阶、高阶分别练什么靶场圈经常说的“新手→进阶→高阶”不是按照你在某平台打了多少台机器来分的而是按照你面对漏洞时的反应来分的。新手的核心任务是建立“漏洞是什么”的具象认知。这个阶段不需要你多能打只需要知道一个SQL注入长什么样、一个XSS弹窗是怎么发生的、一个文件上传为什么会被绕过。对应到靶场就是DVWA、Pikachu、WebGoat这类一个页面一个漏洞类型的训练环境。它们把漏洞拆得清清楚楚甚至代码就摆在眼前就是让你对照着看的。进阶阶段的核心任务是把单一漏洞类型练出肌肉记忆。这个阶段你已经知道SQL注入是怎么回事了但问题是遇到过滤、遇到编码、遇到WAF你就不知道怎么办。SQLi-Labs、XSS-Labs、Upload-Labs这种一个靶场只专攻一类漏洞、每次还给你整点新花样的环境就是干这个用的。练到后来你看到一个参数第一反应不是“它有没有注入”而是“它是什么注入、什么位置、怎么闭合、有没有输出点”。高阶阶段的核心任务是综合攻击链和真实环境对抗。VulnHub里的机器、红日靶场的域环境、HackTheBox的各类Challenge它们不会再告诉你“漏洞在第几关”而是给你一个黑盒让你自己完成从信息收集到拿权限到提权到横向的完整过程。这个阶段已经不是在练某一个点了而是在练你如何把点串成线。1.2 为什么不能跳级常见翻车场景我见过最典型的翻车型选手就是刚学会Burp Suite怎么开代理就直接去下载“红日靶场”打域渗透。结果呢Web层入口还没找到先被内网拓扑搞晕了就算侥幸拿到一台Web服务器的权限面对域控、横向、票据这些概念完全无从下手。这不是他笨是他前面两步的地基没打。靶场跳级的代价和真实项目里跳级的代价是一样的——你会漏掉大量底层细节。比如你直接打VulnHub的机器确实可以通过搜writeup把命令敲出来但你根本不知道为什么这个CMS的某个插件能导致命令执行为什么这个内核版本对应的提权exp能用换了环境你怎么变通。这些问题只有在单点靶场里一个一个练过、自己折腾过才会形成真正的判断力。另外还有一个现实原因学习效率。新手阶段跳去高阶靶场大概率是在硬啃writeup而不是在训练思维。真正的高效路径是每个阶段的任务都明确练完知道自己会了什么、不会什么。1.3 每个阶段的验收标准我习惯用“能不能独立完成”作为验收标准而不是“有没有通关”。阶段核心靶场验收标准新手DVWA、Pikachu能独立说清每个漏洞的原理、利用过程和修复方案不需要看writeup进阶SQLi-Labs、XSS-Labs、Upload-Labs每个关卡能用手工工具分别过一遍遇到过滤能自己构造绕过payload高阶VulnHub、红日靶场、HTB能从零开始完成一整条攻击链并输出完整的渗透测试报告这里有个时间参考新手阶段认真打1到3个月进阶阶段2到4个月高阶阶段没有尽头它是在实战中持续打磨的。注意这个时间不是每天泡一小时的算法而是“理解原理动手操作复盘总结”都做全的时间。如果只是照着writeup敲命令时间再长也没用。2. 新手区靶场逐个拆解DVWA、Pikachu与他们的兄弟2.1 DVWA四个难度等级就是四个学习阶段DVWA全称Damn Vulnerable Web Application翻译过来就是“该死的脆弱Web应用”。它是我见过最适合零基础入门的靶场原因只有一个同一个漏洞它给你准备了四个难度等级Low、Medium、High、Impossible。这四个等级本质上就是漏洞的四种状态——无防护、弱防护、强防护、修复后。Low等级是裸奔状态你输入什么它就直接拼接什么适合理解漏洞最原始的样子。Medium等级开始有简单的过滤比如对某些关键字做替换这时候你要学会绕过。High等级过滤更严格甚至用了参数化查询或白名单你需要结合业务逻辑来钻空子。Impossible等级是完全修复后的代码这里不是让你打的是让你看源码学习的。DVWA覆盖的漏洞类型很全SQL注入字符型、数字型、反射型XSS、存储型XSS、文件上传、命令注入、CSRF、SSRF新版加入了SSRF模块、文件包含、不安全的验证码流程、CSP绕过等。练法我建议这样先在Low等级把每个漏洞手动打一遍然后打开源码对照搞清楚为什么这个参数拼接会导致注入、为什么这段输出没有被编码。搭建方式在本文第5章会详细讲Docker下一条命令就能跑起来。2.2 Pikachu中文注释齐全的入门利器Pikachu是一个国产的开源靶场最大的优势是界面全中文而且每个漏洞模块都有配套的解释说明对新手非常友好。它覆盖的漏洞模块包括RCE远程命令执行、SQL注入、XSS、CSRF、SSRF、文件包含、文件上传、越权、目录遍历等。和DVWA相比Pikachu更像一个“带着注释的练习册”。它页面里往往直接告诉你这个漏洞是什么、怎么触发、有什么危害。比如SQL注入那一栏它会先给你演示一个登录框告诉你这就是注入点而不是像DVWA那样给你一个空白输入框让你自己摸索。我自己的经验是DVWA和Pikachu可以搭配着用。先拿Pikachu把中文概念吃透再去DVWA里用同样的思路练一遍英文环境。毕竟真实漏洞报告和SRC平台里大量资料是英文的早点习惯英文界面没坏处。Pikachu部署也不难如果是本地环境把源码放进PHPStudy的www目录配置好数据库密码访问install.php完成初始化就行。新手一般10分钟能搞定。2.3 WebGoat与bWAPP适合补充逻辑类漏洞除了DVWA和Pikachu还有两个老牌入门靶场值得了解。一个是OWASP的WebGoat它最大的特点是课程化每一课都是一个教学单元带着你一步步理解漏洞还会出题让你验证是否真的掌握了。WebGoat对SQL注入、XSS、路径遍历、不安全的反序列化这些经典漏洞讲得很细适合喜欢系统化学习的人。另一个是bWAPP它的口号是“有超过100种漏洞”确实覆盖面极广从Web漏洞到配置错误到逻辑缺陷都有。bWAPP有一个Bee-Box虚拟机版本开箱即用不用自己配环境。不过bWAPP的界面有些老旧部分漏洞的触发条件需要特定PHP版本新手如果遇到环境问题优先检查PHP版本不要死磕。这两个虽然不那么“现代化”但作为入门阶段的补充训练价值还是很高。如果时间有限我的建议是把DVWA和Pikachu吃透就够了WebGoat和bWAPP可以作为查漏补缺的工具书。新手阶段结束的标志是看到一个漏洞类型你能说出它的成因、危害、利用方式、修复建议并且能自己在一个干净环境里复现一遍。到这一步就可以进进阶区了。3. 进阶区单点漏洞怎么练出肌肉记忆3.1 SQLi-Labs从字符型注入到堆叠注入SQLi-Labs是专门练SQL注入的靶场一共64个Less覆盖了几乎所有SQL注入的场景。它的关卡设计是逐级递进的Less 1到4是基础的数字型/字符型注入Less 5到10是布尔盲注和时间盲注Less 11到22是POST注入Less 23到31是各种过滤绕过Less 32到37是宽字节注入Less 38到53是堆叠注入Less 54到64是综合挑战。练这个靶场我最想强调的一点是不要一上来就开SQLMap。前30关请务必用手工把每个注入点试探明白。你问“id1”看报错、用order by数字段、用union select找输出位这一整套流程走下来你才会真正理解SQL注入的闭合方式和查询逻辑。等到你对这些已经形成条件反射了再开SQLMap去对照工具的结果这时候工具对你来说就是提效的而不是依赖的。SQLi-Labs部署很轻量Docker或PHPStudy都行。注意数据库配置有些版本默认连的是root/root如果你本地MySQL密码不一样要去配置文件里改不然初始化就会失败。这个问题我后面第7章还会详细说。3.2 XSS-Labs过滤绕过的基本功XSS-Labs是专练XSS的靶场一共20关每一关都会过滤掉一些字符你要想尽办法构造payload触发弹窗。这些关卡里有大小写绕过、HTML实体编码、事件属性、伪协议、编码嵌套等非常考验对浏览器解析机制的理解。练XSS-Labs的重点不是“能弹窗”而是“能想明白为什么这样写能绕过”。比如某一关过滤了script标签你可能改用img srcx onerroralert(1)又有一关过滤了括号你可能要尝试用反引号或者编码绕过。每一关打完之后建议把服务器端的过滤代码翻出来看一遍确认它到底过滤了什么、用什么方式过滤的这样你的绕过思路才能真正长在自己身上。XSS-Labs同样支持Docker部署。不过有些关卡的payload在特定浏览器下会有行为差异建议准备一个Chrome或Firefox专门做测试。3.3 Upload-Labs文件上传绕过的完整链路文件上传是SRC和渗透测试里出场率极高的漏洞点Upload-Labs专门练这个。它每一关都是一种不同的上传校验方式前端JS校验、MIME类型校验、黑名单扩展名、白名单扩展名、二次渲染、图片马、00截断等等一共20多关。练这个靶场最大的收获是“绕过思路的积累”。比如前端校验用Burp抓包改包就能过MIME校验把Content-Type改成image/png就行黑名单校验要尝试各种可执行后缀比如php3、php5、phtml二次渲染要用图马工具生成内容不变的马。这些思路和场景高度绑定多打一关就多一种武器。要注意的是上传靶场本地测试你会接触各种WebShellWindows自带的杀毒软件和Defender很可能会直接隔离。这不是靶场坏了是安全软件在正常工作。实在影响练习可以把靶场目录加入排除项——前提是你很清楚自己在做什么而且靶场只在本地隔离环境里跑。3.4 进阶练法三遍原则单点靶场怎么算过关我的标准是“三遍原则”。第一遍不参考任何writeup自己尝试打卡住了允许查资料但查完要关掉资料重新独立走一遍。第二遍换工具或者换手法再过一遍比如SQLi-Labs第一遍手工第二遍用SQLMap两边结果要能对上。第三遍过了几个星期后再回顾如果在不翻笔记的情况下还能顺利打通说明这个点真正内化了。三遍原则最核心的价值是把“我看过”变成“我会用”。很多人打靶场像刷剧刷完就忘本质上就是只过了一遍“照着别人的流程敲命令”。进阶阶段的练法刻意要求自己“不查资料独立完成”是拉开差距的关键。4. 高阶区VulnHub、红日靶场与在线平台怎么选4.1 VulnHub从下载OVA到拿到flag的完整流程VulnHub是一个提供各类靶机镜像的平台每一台机器都是一个完整虚拟机你需要自己下载OVA文件导入VMware Workstation或VirtualBox然后从零开始渗透。整个流程通常是这样下载镜像导入虚拟系统后第一件事是发现目标IP。靶机默认通常和你的VMware处于同一网段用nmap -sn扫一下网段就能找到新出现的IP也可以用arp-scan。找到IP之后开始端口扫描和信息收集开放了哪些端口、跑着什么服务、Web应用是什么框架什么版本。然后根据指纹信息查找已知漏洞或尝试利用。拿到初始权限后再提权最终目标是读到flag文件。VulnHub里面经典的入门机器我推荐先打Kioptrix系列和DC系列。Kioptrix是很老但很经典的靶机路径清晰DC系列从DC-1到DC-9难度逐步提升DC-1特别适合第一次尝试VulnHub的人整个攻击链很完整又不会太复杂。打VulnHub和打单点靶场最大的区别是没有任何提示。你不知道入口在哪里、不知道漏洞是什么类型、不知道flag藏在哪。这个阶段最锻炼人的就是信息收集能力和耐心。我在这个阶段最大的体会是遇到瓶颈不要急着乱扫先回头把已经收集到的信息整理一遍很多时候线索早就出现了只是没注意到。4.2 红日靶场内网渗透与域环境实战红日靶场vulnstack是目前国内内网渗透训练的主流靶场它模拟的是真实的企业内网环境包含多台主机、Web服务器、域控、多种服务组件。打红日靶场你面对的不再是“一台机器拿root”而是一整个网络拓扑如何从外网Web入口打进去、如何后续利用内网主机、如何横向移动、如何拿下域控。这个靶场系列的版本很多红日靶场五是比较热门的版本整体攻击链覆盖了常见的Web漏洞利用、内网代理、密码收集、横向移动、域渗透等环节。因为是多台Windows机器的组合对硬件有一定要求官方推荐至少16G内存实际使用中8G内存会比较吃力建议用VMware批量导入确保快照功能正常。练习红日靶场的前提是Docker和单点靶场你已经练熟了。否则连入口Web端都打不进去。要注意红日靶场下载包很大解压密码和导入顺序要按官方说明操作不要自己乱改网络配置否则很可能出现网络不通、域环境起不来的问题。4.3 TryHackMe与HackTheBox在线平台的练习思路如果你不想在本地维护一堆虚拟机也可以考虑在线靶场平台。TryHackMe的特点是浏览器直接操作很多房间都有分步骤的教学指引很适合结构化学习新手到进阶都能找到对应路径。HackTheBox的Machines和Challenges就更偏向实打实的能力验证没有太多手把手教学氛围更接近真实渗透测试。在线平台的优点是环境不用自己搭、机器随时可用、社区writeup丰富玩起来很省心。缺点是需要一定的基础网络条件才能流畅访问如果经常加载资源失败会很影响体验。我的建议是本地靶场和在线平台可以互补本地用来练固定的训练项目在线平台用来扩展见识和接触更多类型的场景。4.4 高阶阶段的核心理念从漏洞到攻击链高阶阶段你要学会的一件事是把单个漏洞放到整个攻击链里去考虑。比如你在Web端发现一个文件上传点在本地靶场里可能上传一个Shell就结束了但在内网环境里这个上传点可能只是整个链条的第一步。拿到Web服务器权限之后下一步是什么网段里还有什么机器有没有域控当前权限能不能做更多事情这个思维转变其实是从“做题”到“做事”的转变。红日靶场和VulnHub的价值就在于此它们让你在合规的环境里练习完整流程。每次打完一套高阶靶场我强烈建议你写一份完整的渗透测试报告包括信息收集记录、漏洞利用过程、提权路径、内网横向思路以及每个环节用了什么工具什么命令。这份报告本身就是你面试或者接项目时最有力的能力证明。5. 搭建实操Docker一键拉起五个靶场5.1 为什么优先用Docker版本、隔离、可复现搭建靶场最头疼的问题就是环境依赖老靶场要PHP 5.6新靶场要PHP 7.4有些还要特定版本的MySQL全装在一台机器上必然冲突。Docker最大的价值就是隔离每个靶场一个容器互不影响想升级就升级想删掉重建就删掉重建一分钟搞定。另外Docker镜像通常会锁定好依赖版本比如DVWA官方镜像自带Apache和PHP环境你不需要自己折腾LAMP。这一点在Windows上尤其友好不用装PHPStudy、不用配置环境变量Docker Desktop装好之后命令行直接拉镜像跑容器就行。5.2 一条龙部署命令与compose配置先说最简单的方案用Docker逐个部署。DVWAdocker pull vulnerables/web-dvwa docker run -d -p 8080:80 --name dvwa vulnerables/web-dvwa启动后访问http://127.0.0.1:8080打开/setup.php页面点击“Create/Reset Database”完成初始化然后用默认账号admin/password登录即可。SQLi-Labs如果想用Docker推荐直接从GitHub拉源码自己构建因为社区镜像版本质量参差不齐git clone https://github.com/Audi-1/sqli-labs.git cd sqli-labs然后在该目录下创建Dockerfile或者在PHP环境里直接运行。如果只想快速体验用PHPStudy把源码放进www目录也可以访问http://127.0.0.1/sqli-labs/按提示创建数据库。Pikachugit clone https://github.com/zhuifengshaonianhanlu/pikachu.git把pikachu目录放进PHPStudy的www目录访问http://127.0.0.1/pikachu/点初始化填好MySQL账号密码就能用。XSS-Labs和Upload-Labs同样是源码部署逻辑从GitHub上搜索对应仓库下载放到web目录或容器里即可。如果你本地装了Docker Compose我推荐用下面这份配置统一管理version: 3 services: dvwa: image: vulnerables/web-dvwa ports: - 8080:80 restart: unless-stopped sqli-labs: build: ./sqli-labs ports: - 8081:80 restart: unless-stopped pikachu: build: ./pikachu ports: - 8082:80 restart: unless-stopped这样一个文件管理多个靶场想开哪个就开哪个容器的清理、重启、备份都很方便。5.3 没有Docker的环境PHPStudy方案如果因为机器太老或者公司电脑限制装不了DockerPHPStudy依然是最省心的替代方案。下载PHPStudy一键启动Apache和MySQL然后把靶场源码解压到WWW目录下浏览器访问对应路径即可。需要提醒的是老靶场对PHP版本敏感。SQLi-Labs和Pikachu在PHP 7.4以下一般没问题但到了PHP 8.x有些代码会直接抛出已废弃函数的警告导致页面异常。这时候在PHPStudy的“PHP版本”切换里把当前站点切成PHP 7.4大多数问题就解决了。这个坑我踩过不下三次每次都忘了先看版本。5.4 环境自检三步法靶场跑起来之后建议按以下三步自检避免练到一半才发现环境是坏的。第一步看首页能不能打开。如果白屏或者报500优先看PHP错误日志十有八九是扩展没开或版本不兼容。第二步看数据库初始化是否成功。DVWA的setup、Pikachu的install、SQLi-Labs的创建数据库都是独立的步骤没有完成初始化后续所有关卡都会报数据库连接错误。第三步找一个最简单的漏洞模块实测。比如DVWA的SQL Injection输入一个单引号看是否报错验证漏洞可触发。三步都通了说明这个环境可以放心用。6. 从靶场到实战把练习成果迁移到真实漏洞挖掘6.1 靶场和真实目标的差距在哪里很多人在靶场里打得很溜一上真实项目就懵了原因在于靶场和真实目标有三个巨大差异。第一漏洞密度差异。靶场里每个页面都藏着漏洞告诉你“这里有坑”真实目标可能整个站扫下来一个明显的漏洞都没有。实战中最难的不是利用漏洞而是发现漏洞。第二防护强度差异。靶场大多裸奔真实目标几乎都有WAF、日志监控或风控系统同样的SQLi payload打过去靶场直接报错真实站点给你一个403或者一个“非法请求”。第三业务复杂度差异。靶场漏洞是纯技术的真实漏洞往往藏在业务逻辑里订单金额能不能篡改、越权能不能看到别人的数据、验证码能不能重放。这些逻辑漏洞是纯技术靶场练不出来的。6.2 实战挖掘的常规切入点基于我自己做漏洞挖掘的经验真实目标上最常用也最容易出结果的切入点主要有几类。信息收集是起点子域名、端口、Web指纹、JS文件里的接口地址和密钥、目录扫描暴露的敏感文件。很多漏洞其实就藏在这些信息里比如一个内网接口暴露到公网、一个测试环境没下线、一个JS文件泄露了后台路径。越权测试是重点把普通用户的请求改一下ID看能不能访问别人的数据把低权限用户的请求重放一下看接口是否校验了角色。逻辑漏洞也是新高发点支付流程、密码找回流程、验证码逻辑都是SRC报告里的常客。SSRF这类漏洞现在也很常见尤其在AI服务里AI应用经常要请求用户提供的URL如果没做内网限制就很容易形成SSRF。打好靶场里的SSRF基础再迁移到这类业务场景会很快。6.3 如何用靶场训练反向设计实战练习靶场虽然练不到真实的业务逻辑漏洞但你可以主动设计“实战模拟”训练。比如在本地搭一个有多个服务的内网环境模拟一个应用由前端、后端、数据库三层组成练习从一个Web入口走到数据库的完整链路。或者自己搭一个带WAF的DVWA开着ModSecurity练习绕过WAF的SQL注入。这两年很多人在聊“AI漏洞挖掘”本质上也是把漏洞挖掘流程自动化信息收集自动化、漏洞检测自动化核心还是你对我上面那些手工流程足够熟悉否则自动化工具出了问题你都不知道怎么调。我个人还有个习惯把打过的每台VulnHub靶机当成一次真实的SRC项目来对待写发现、写过程、写修复建议。写得多了面对真实目标时思路会自然形成一套自己的打法而不是东一榔头西一棒子。7. 搭建与练习中常见的坑以及一条合规底线7.1 端口、数据库、PHP版本三大经典问题按我见过的求助频率排序靶场起不来或者打不通十有八九是这三类问题。端口冲突排第一。80端口经常被本机IIS、Apache或者其他开发环境占用你启动DVWA容器映射到80端口结果浏览器打开的是另一个服务。解决方式很简单映射的时候改个端口比如-p 8080:80访问的时候带上端口就行。数据库初始化失败排第二。很多靶场默认连的是root/root你本地MySQL密码复杂度要求高改成了别的初始化自然失败。解决办法是去靶场的配置文件里改数据库账号密码常见路径在config.inc.php或者inc/config.inc.php。PHP版本问题排第三这个上文说过了PHP 7.4是很多老靶场的稳定选择。遇到问题不要慌先看日志。Docker容器用docker logs 容器名PHPStudy用Apache错误日志日志里写的英文报错往往已经指出了问题方向。7.2 杀毒软件与系统防护的干扰Windows环境下练靶场杀毒软件和你之间是一场没有硝烟的战争。靶场里的WebShell样本、攻击payload很容易触发杀软警报然后文件被隔离、容器被中断你一脸懵。我的做法是在本地专门预留一台虚拟机跑靶场宿主机不装靶场环境这样既不会影响日常使用也方便做快照回滚。如果非要在宿主机跑可以给靶场目录加白名单但前提是你确认这些文件来源可信、且靶场只在隔离环境里使用。这里要认真提醒一句不要在公网服务器上搭建这些靶场练手更不要用这些靶场去测试未授权的系统这既是合规底线也保护你自己不惹麻烦。7.3 资源规划一台电脑怎么安排才不卡DVWA、Pikachu这些单机靶场资源占用很小Docker容器加起来也就几百兆内存普通8G内存的电脑轻松带起。但VulnHub和红日靶场就不一样了。红日靶场光是一套域环境就有三五台虚拟机每台至少分2G内存整套下来16G内存是比较舒适的门槛。如果只有8G内存建议一台一台地开打完了再启动下一台否则直接卡死。磁盘空间也要提前规划。一台VulnHub镜像普遍有1到3G红日靶场整套镜像下载下来十几个G很常见。建议单独给靶场虚拟机划分一块目录定期清理不再需要的OVA文件。7.4 合规底线与个人习惯最后说一条我在任何地方都反复提的底线靶场只能跑在自己的本地环境或授权的测试环境里漏洞挖掘只做SRC平台认领的目标或获得明确授权的目标绝不碰未授权系统。这个底线不是一句空话是真的会让你惹上法律风险的原则。个人习惯方面我现在会在本地常驻一套Docker靶场组合里面固定跑着DVWA、SQLi-Labs、XSS-Labs、Upload-Labs这几个经典环境。想练哪个漏洞就开哪个容器练完一键停止不占用后台资源。这个组合方案的部署代码也在第5章里给了照着做就能复制一套一样的。靶场这东西重要的不是收集多少个而是你有没有把每一个练透。希望这份路线和踩坑记录能让你少走一些我走过的弯路。
返回列表