尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

网络安全靶场(Range)是什么?从选型到实战的完整指南

网络安全靶场(Range)是什么?从选型到实战的完整指南 开篇先回答标题这个问句range这个词你在不同场合会看到完全不同的解释。写代码的人看到range第一反应是Python里那个生成整数序列的函数或者Go语言里遍历数组的关键字搞Java开发的可能瞬间想起Parameter index out of range这个让人头疼的报错玩Minecraft的玩家会想到WorldEdit里按范围批量操作的指令玩ESP32硬件的朋友可能刚被requires chip revision in range这个提示折磨过。但在网络安全圈子里range只有一个含义——靶场。是的安全的靶场英文就是range全称通常叫Cyber Range直译过来是网络射击场。这个叫法相当形象打靶需要靶子练渗透测试、漏洞挖掘、应急响应这些技术同样需要一个合法合规、能随便打的靶子。真实业务系统不能乱动生产环境碰一下就是事故那去哪里练手答案就是range。这篇文章不打算只讲概念我想把靶场这层窗户纸彻底捅破它到底是什么、解决了什么问题、现在主流有哪些、各自适合什么人、搭建的时候有哪些坑、以及最重要的——怎么练才不是白练。如果你正在学Web安全、渗透测试或者已经在安全行业但觉得自己缺一个系统化的训练环境这篇内容应该能帮到你。1. range这个词在安全圈到底指什么1.1 从射击场到网络靶场一个军事术语的演变先把这个词的来龙去脉讲清楚。Range在英文里的本义之一是射击场、靶场就是军队或警队打靶训练的那块地方。为什么安全领域要借用这个词因为网络安全攻防和射击训练的逻辑高度相似你不能对着真人开枪来练枪法所以需要一块专门的场地、专门的靶子弹药用空包弹或标记弹确保能练出肌肉记忆又不会误伤。网络靶场干的是同一件事——把真实网络环境里的系统、漏洞、攻击手法搬到隔离环境里让安全人员放开手脚去攻击和防守。国内安全圈常说的靶场对应的英文其实分两类。一类是CTF比赛中用的题英文叫Challenge通常以题目形式存在解一道是一道比如Pikachu里的SQL注入关卡。另一类才是真正意义上的Range它更接近一个完整的、可交互的网络环境比如一套带漏洞的Web应用、一个内网渗透环境甚至是模拟出来的整个企业网络架构。国内圈子常提的红日靶场内网靶场指的就是后者。所以当你看到有人问你知道range是干什么的吗他问的其实是靶场这玩意儿到底是干嘛用的它为什么能在安全学习里占这么重要的位置1.2 靶场和漏洞环境不是一回事这里要理清一个容易混淆的概念。严格来说靶场不等于漏洞环境。漏洞环境是一台机器或一个容器里运行着有漏洞的软件比如一个老版本的Apache、一个存在SQL注入的PHP应用。靶场则是一个完整的训练场景它可能包含多个漏洞环境、多台主机、网络拓扑、流量交互甚至还有防守方角色。你可以理解成漏洞环境是一个健身器材靶场是一间健身房。器材只能练某个特定部位健身房才能让你模拟完整的训练计划。以这个标准回头看DVWA、Pikachu这类的Web漏洞练习平台其实更接近漏洞环境集合体——它们内部包含了很多漏洞点但整体上还是一个单体应用没有复杂网络结构。而Vulnhub上的那些靶机镜像、红日靶场这类内网渗透环境才是更完整意义上的Range。理解这个区别很重要因为很多人入门时练了DVWA就以为自己打过靶场了结果去面试时被人问你做过内网靶场吗一下子答不上来——这两个东西的训练目标完全不同。1.3 为什么靶场对初学者来说是个门槛说句实在话现在靶场学习的最大门槛不是找不到资源而是资源太多、信息太碎。随便一搜DVWA、Pikachu、SQLi-Labs、XSS-Labs、Upload-Labs、Vulhub、Vulfocus、红日靶场、字节的CTF靶场……甚至还有各种在线的、需要注册的商用靶场平台。每一个的名字都有人推荐但没人告诉你它们之间的区别、各自适合什么阶段、应该按什么顺序去练。结果就是很多人今天下一个DVWA明天装一个Pikachu后天又在折腾Vulnhub每个都是浅尝辄止最后什么也没练出来。这篇文章后面会专门按阶段帮你把这堆东西理清楚。2. 为什么搞安全必须有个合法挨打的地方2.1 法律红线下的刚性需求这个道理其实不用我多说但还是要强调一遍未经授权对真实系统进行渗透测试在国内是违法行为后果可以相当严重。网络安全法、刑法第二百八十五条这些条文不是闹着玩的。所以想练技术唯一的合法路径就是在自己搭的环境、或获得授权的环境里进行。靶场的存在本质上解决的就是这个合法性问题——它给你一块可以随便打、打坏了也不心疼的自留地。这个合法属性对学习心态的影响其实很大。你在真实系统上不敢做的操作——比如对一个输入框无脑注入几十种payload、对某个端口做全量扫描、把网站的验证码逻辑整个绕过去——在靶场里都可以放手做。做安全测试最忌讳的就是畏手畏脚靶场能让你完全放下心理负担把各种招式都试一遍这种试错自由是学习效率的重要保障。2.2 漏洞的活体样本比任何文档都有说服力再说一个可能没那么多人意识到的事情靶场里跑的每一个漏洞都是活着的漏洞样本。你看一百篇SQL注入原理分析不如在一个真实的MySQLPHP环境里亲手注入一次。因为当你亲手触发漏洞的时候数据库返回的报错信息、页面渲染的差异、响应时间的变化这些反馈是文字描述替代不了的。我特别喜欢用靶场带新人的一个原因是靶场能让漏洞的因果关系变得极其直观。比如在Pikachu里做反射型XSS你往URL参数里塞一段script页面真的弹窗了新人那一刻的顿悟感是看多少PPT都换不来的。再比如在SQLi-Labs里做布尔盲注你一个一个字符去猜数据库名过程中能看到页面真假的交替变化这种体感上的理解比任何理论讲解都深刻。2.3 从看懂到会打靶场是唯一的桥梁很多自学安全的人有个共同困境教程看懂了视频跟下来了但自己一动手就废。原因很简单——看别人打和自己打是两码事。靶场恰好就是连接看懂和会打的桥梁。它给你一个标准化的、难度递进的练习对象让你能在低风险环境下完成从理论到实践的跨越。举个例子Burp Suite这个工具看教程觉得也就那样抓包、改包、重放步骤很简单。但真正在靶场里做一次完整的SQL注入你会发现流程远没那么顺畅可能需要先判断注入点再确认注入类型然后测列数、测回显位置、查库名、查表名……中间任何一步出错都要回头排查。这个过程没有靶场根本练不了也恰恰是这个不顺畅的过程才真正锤炼了实战能力。3. 主流靶场怎么选从入门到进阶的分级清单3.1 入门级DVWA与Pikachu先把漏洞手感找出来先说入门首选。DVWADamn Vulnerable Web Application应该是全球知名度最高的Web漏洞靶场它的核心特点是同一个漏洞设置了四个安全等级Low、Medium、High、Impossible你可以在低等级先理解漏洞原理再逐步提高难度感受防护措施对利用方式的影响。这种同漏洞多难度的设计非常适合零基础入门。Pikachu是另一个国内常用的Web漏洞靶场中文界面、漏洞类型覆盖非常全从SQL注入、XSS、CSRF到越权、文件包含、SSRF基本都有而且每个漏洞都配了原理说明。它对新手特别友好的一点是漏洞点的代码注释很详细你可以一边看提示一边练习。如果要说DVWA和Pikachu怎么选我的建议是两个都装先用Pikachu建立对漏洞类型的全景认知再用DVWA的等级递进加深理解。3.2 专项训练级SQLi-Labs、XSS-Labs、Upload-Labs一个漏洞打穿打透过了入门阶段你会发现Web漏洞每个方向都能挖得很深。SQL注入这一个点就有联合查询注入、布尔盲注、时间盲注、堆叠注入、报错注入等十几种利用方式光靠DVWA里那几关根本练不透。这时候就需要专项靶场。SQLi-Labs是一个只专注SQL注入的靶场一共60多关从最基础的数字型/字符型注入开始一路到绕过WAF、二次注入、堆叠注入等进阶技巧基本把SQL注入的常见场景都覆盖了。XSS-Labs则专门练跨站脚本每一关都是一种不同的绕过思路。Upload-Labs练的是文件上传漏洞从前端校验绕过到服务端MIME校验、扩展名绕过、图片马等等。这三个靶场是同一个作者c0ny1的系列作品风格统一难度递进合理。这类专项靶场最大的价值在于单点深挖。它强迫你在一个漏洞类型上反复折腾直到你能不看教程、光靠经验判断出当前场景该用哪种注入/绕过方式。这个能力在实战中极其重要因为真实站点的漏洞往往混合了多种防护你需要能从攻击面快速匹配合适的利用链。3.3 综合实战级Vulhub、Vulfocus与红日靶场贴近真实场景练完专项靶场下一步就该碰真实漏洞环境和综合环境了。Vulhub是一个基于Docker和docker-compose的漏洞环境集合里面包含了几百个真实历史漏洞的复现环境——比如某个CMS的已知CVE、某个中间件版本的反序列化漏洞。它的价值在于让你接触真实世界的漏洞而不是教学化的练手题目。用它的前提是你得懂Docker基本操作不过门槛也不高。Vulfocus可以理解成Vulhub的在线/图形化版本你不需要自己搭建直接在浏览器里拉取漏洞环境就能开打。红日靶场则完全是另一个维度的东西它模拟的是完整的内网渗透环境边界打点、内网穿透、横向移动、域渗透一整套流程。这类靶场通常需要你具备一定的内网知识储备建议放到进阶阶段再碰。3.4 三个典型靶场的适用阶段参考考虑到很多人一上来就不知道该从哪个开始我直接给一个参考路径按这个顺序走基本不会太乱阶段靶场训练目标前置要求入门2-4周Pikachu、DVWA建立漏洞类型认知理解Web攻击原理懂HTTP协议基本流程会简单的HTML/PHP语法专项4-8周SQLi-Labs、XSS-Labs、Upload-Labs把单一漏洞类型练透熟悉各种绕过姿势已完成入门级靶场真实漏洞复现2-4周Vulhub、Vulfocus接触历史CVE漏洞熟悉真实漏洞利用流程会Docker基本操作能看懂漏洞描述内网渗透长期红日靶场系列、Vulnhub学习边界突破-内网渗透-横向移动-域控完整链路掌握Web渗透懂得HTTP、DNS、SMB等协议了解Windows域基础4. 搭建靶场最容易踩的坑环境、版本与依赖4.1 PHP版本是Web靶场搭建的第一大坑接下来聊实操。DVWA、Pikachu、SQLi-Labs这些经典的PHP靶场最大的坑几乎都集中在PHP版本上。这些靶场大多是为PHP 5.x时代设计的到了PHP 7.4甚至8.x就会出现各种兼容性问题函数被弃用了、某些语法不被支持了、数据库扩展连不上了。我自己第一次搭DVWA时就被坑过一次——系统里装的是PHP 8.0结果登录后页面一片空白查了半天日志才发现是mysql_connect()这个老函数在PHP 7.0以后已经被移除了。解决办法有两个一是直接用Docker跑靶场环境镜像里会把PHP版本钉死这也是现在最省心的方式二是手动在系统里装PHP 5.6或7.0但说实话没必要折腾自己。4.2 Docker是把双刃剑用好了省心用不好更闹心说到Docker多说几句。Vulhub、Vulfocus这类靶场几乎都依赖Docker运行但很多新手在装Docker这一步就放弃了——不是Docker本身有多难而是它有两个绕不开的坎镜像下载速度和系统兼容性。镜像下载速度的问题最直接的解决办法是配置国内镜像加速器。这里我提供一个实操过的配置方法在/etc/docker/daemon.json里加入镜像源地址然后重启Docker服务。另外提醒一句Vulhub拉取漏洞环境时一个环境可能要拉好几个镜像几百MB甚至上GB都有可能务必保证磁盘空间充足。系统兼容性方面如果你是Windows用户建议直接装Docker Desktop配合WSL2使用。但注意Docker Desktop对老版本Windows 10支持有限遇到内核不兼容的情况很常见遇到这类问题去查WSL2的更新日志比搜靶场启动失败更能解决问题。4.3 启动失败类问题先看端口再看日志靶场搭建过程中启动失败绝对是最常见的报错关键词。以Pikachu为例最常见的原因是端口被占用——它默认跑在8080端口如果你本地已经有Nginx、Apache、或者其他服务占了8080启动自然失败。解决思路是先netstat -ano查端口占用换一个端口重新映射就行。另一个常见原因是数据库没起来或者数据库密码不匹配。很多Web靶场内置了数据库连接配置比如DVWA的配置文件里写死了一个数据库密码如果你的MySQL不是这个密码页面就会报数据库连接错误。这种问题不要慌找到靶场根目录下的配置文件改一下就行DVWA是config/config.inc.phpPikachu是inc/config.inc.php。4.4 关于在线靶场的取舍顺便提一嘴在线靶场。现在国内有不少在线靶场平台Vulfocus也有在线版。对于网络条件好、不想折腾本地环境的人来说在线靶场确实方便打开浏览器就能开打。但我个人建议如果条件允许还是自己本地搭一遍。原因有两点第一搭靶场的过程本身就是学习——你会碰到PHP版本、MySQL配置、Docker网络这些真实运维问题解决一次比刷十道题都有用第二本地环境完全可控有些靶场做内网渗透测试需要用到多台虚拟机互联这种场景在线平台很难完全模拟。5. 靶场学习的正确姿势别光通关要会复盘5.1 推荐工具链Burp Suite SQLMap 手工验证练靶场不是裸练就能效率最大化一套趁手的工具链能让你事半功倍。我个人最推荐的组合是Burp Suite抓包改包 SQLMapSQL注入自动化验证 手工Payload验证。学习路径应该是这样的先用浏览器开发者工具看请求的来龙去脉再用Burp Suite拦截、修改请求发现参数位置和提交方式接下来尝试手工构造Payload最后用SQLMap做自动化验证。注意顺序——先手工、后工具。手工能让你理解漏洞的本质工具能帮你提高效率、验证判断。一上来就用SQLMap一把梭虽然能跑出结果但你根本不知道为什么能注入成功下次实战遇见变种就抓瞎。5.2 通关只是起点真正的学习在复盘里很多人练靶场的方式是打开一个关卡用工具跑一下拿到flag然后开下一关。这种方式练一百关也是白练。正确的做法是每过一关至少复盘三个问题这个漏洞是怎么产生的去看源码这个漏洞为什么能这样利用结合HTTP请求和响应如果我来修复我会怎么做结合代码审计视角。以SQLi-Labs第一关为例你注入成功后应该去看后端的SQL语句是怎么拼接的理解为什么会破坏原有的SQL逻辑然后思考如果需求方要求修复这个问题应该用参数化查询还是过滤关键字。这种攻击者防御者双视角的复盘方式才是靶场训练的最大价值。5.3 刻意训练给自己设限比自由发挥更有效练靶场到了中后期我强烈建议你给自己增加难度。比如打SQLi-Labs时限制自己不能用SQLMap全部手工注入打XSS-Labs时要求自己不能直接看网上现成的payload打一个带WAF的靶场时要求自己payload必须绕过WAF检测。这种戴镣铐跳舞的训练方式能倒逼你去理解底层原理而不是依赖现成工具链。我记得自己练SQLi-Labs到第30关左右的时候强制自己全程不用工具纯手工去判断注入类型、猜解字段数、构造联合查询。那段时间虽然进度很慢有些关卡要折腾一下午但打完那一遍之后我对SQL注入的理解完全上了一个台阶——现在回头看这个慢恰恰是最快的。5.4 把靶场经验和文档沉淀下来最后分享一个比较个人化的习惯每打通一个靶场关卡我都会在本地Markdown文档里记录下整个利用链包括请求包长什么样、关键Payload是什么、为什么会这样构造、有哪些替代方案。这个习惯的好处是半年后当你碰到一个实战站点思路卡住的时候翻一下自己的靶场笔记往往能很快找到灵感。而且这东西时间越久越值钱。靶场会更新、漏洞会过时但你沉淀下来的解题思路和攻击模式是迁移能力。我到现在面试新人的时候都很喜欢看对方有没有自己的技术笔记——有没有沉淀是最能看出一个人是真学了还是在刷关卡的。6. 从靶场到实战最后一步怎么走6.1 靶场练熟了不等于实战就能打这个道理必须说透。靶场里的漏洞是已经标注好的、环境是稳定的、目标是明确的——你知道这里有个洞只需要考虑怎么打进去。但实战不是这样一个真实业务系统你首先要做的事情是找洞信息收集、子域名枚举、指纹识别、目录扫描、端口探测……做了一大圈侦察可能才找到一个不起眼的入口。靶场训练能让你会打但会发现是另一项技能需要靠真实环境下的持续练习来积累。6.2 把靶场当成攻击模式库来用虽然靶场不等于实战但靶场确实能帮你建立一个攻击模式库。每在靶场上练熟一种攻击方式你的脑库里就多一种作战预案。比如你通过Vulhub复现过Shiro反序列化漏洞那么你在实战中看到一个使用了Shiro框架的系统你就会有意识地检测默认密钥你在红日靶场上完整走了一遍域渗透流程遇到真实内网环境时你至少知道从哪下手、下一步该做什么。这也是为什么我一直强调专项靶场比综合靶场更重要——专项靶场练的是模式识别综合靶场练的是流程编排。两者都要但顺序不能反。6.3 最后一步去参加实战类项目或CTF比赛当你靶场练到一定阶段光靠练习环境已经喂不饱你了这时候就该找更真实的挑战。两个方向去打CTF比赛或者去参与有授权的实战类项目SRC漏洞挖掘、护网行动等。CTF的题目虽然也是人造的但解题思路天马行空能极大拓宽你的攻击面认知SRC或护网这类项目则能让你接触真实业务场景逼着你在信息收集、漏洞利用、报告撰写等多个维度同时成长。我在实际培训中见过太多靶场战神——DVWA满级、SQLi-Labs通关、红日靶场全套拿下但拿到授权打一个真实系统就手足无措。问题就出在只练了如何在已知漏洞里完成利用没练如何在未知系统里找到漏洞。所以我最后补充一句靶场只是起点它给你的是自信和基础但从会打靶场到能做实战中间还隔着大量的信息收集训练和场景经验的积累。这个道理想明白之后你再看你知道range是干什么的吗这个问题心里应该有自己的答案了——Range是训练场是你摔跟头不用赔钱的地方但绝不是你该一直待着的地方。练好它然后走出去。
返回列表