☰
Breach 3靶场实战:从环境搭建到信息收集拿下第一个入口
2026/9/25 3:32:21 网站建设 项目流程

最近在复盘vulnhub上的Breach 3靶场,把它当成一次完整的实战前演练。说实话,这几年带人入门安全测试,最常被问到的问题不是“漏洞怎么利用”,而是“我连入口都找不到,接下来干什么”。DVWA和Pikachu这类靶场练的是漏洞原理,而Breach 3这类综合靶场练的是完整思路,两者正好互补。这篇文章就把Breach 3的“第一部分”单独拉出来聊透:从环境搭建、目标探测,到找到第一个可利用入口,整个流程里的方法和坑我都写出来,适合刚学完基础Web漏洞、准备往综合靶场进阶的人参考。

1. 从标题看Breach 3靶场的定位与学习价值

1.1 它和DVWA这类单点靶场有什么不一样

DVWA是一个基于Apache+PHP+MySQL的应用,里面把SQL注入、XSS、CSRF、文件上传这些漏洞做成菜单,点开就能练,它解决的是“漏洞长什么样、怎么触发”的问题。Pikachu也是类似路线,更偏向中文教学场景,每个漏洞点都标得明明白白。这类靶场的优点是上手快、反馈直接,缺点是太“点菜式”了,真实环境里没人帮你把漏洞标注好。

Breach 3不是这种玩法。它是vulnhub上一台经典的“boot to root”靶机,所谓boot to root,就是给你一个虚拟机的启动入口,你需要从零开始,最后拿下系统最高权限才算通关。靶机里面会模拟出一个有站点、有服务、有用户行为的业务环境,可能是博客系统、论坛程序,也可能藏着备份文件、数据库、内部账号。你根本不知道漏洞在哪个角落,一切都得靠信息收集和逻辑推断。

我用一个不太严谨但很好理解的类比:DVWA像是在健身房练器械,每个动作都固定了;Breach 3则是让你到野外跑一趟越野,路上有什么障碍,得自己看、自己绕。两者都需要,但后者更接近真实需求。

1.2 为什么把“第一部分”单独拿出来讲

我经常看到有人下载完Breach 3,启动靶机后对着黑屏发呆,甚至怀疑镜像坏了。其实问题出在习惯上:大家一上来就想“打漏洞”,但忽略了整个流程中最吃功夫的前半段——信息收集。

这部分内容我习惯称它为“第一部分”:从靶机开机到找到第一个能交互的入口。很多人以为入口是扫描器跑出来的,实际上恰恰相反,入口是“串线索”串出来的。举个例子,你会在某个备份目录里找到一个数据库文件,数据库里存着一个后台用户名的哈希,哈希爆破后登录后台,后台里才有一个上传点。这条链路里任何一环漏了,后面全断。把第一部分单独讲,就是想让刚入门的人先把这套“线索串联”的节奏练熟,而不是急着去搜exp、跑工具。

1.3 打这个靶场前需要什么基础

不需要你有多深的经验,但三个基本功得扎实。

第一个是Linux命令。至少会切换目录、查看文件、看进程和网络连接、理解用户权限,因为这些操作在打靶过程中会被反复使用。第二个是网络常识,比如TCP端口、HTTP状态码、DNS解析、内网网段这些概念,搞不清楚很容易在环境配置上卡一天。第三个是常见Web漏洞的原理,不需要会写很复杂的payload,但至少能说清楚SQL注入是干什么的、文件上传的校验点在哪里、命令执行为什么危险。

如果你这三个方面都比较模糊,我建议先花两周把DVWA的低中高三档过一遍,再来看这篇会更顺畅。基础越扎实,越能体会到Breach 3第一部分的设计精妙。

2. 靶场环境的搭建与准备工作

2.1 虚拟机选型与镜像导入

vulnhub上Breach 3的镜像下载下来,通常是一个.ova文件,这种格式打包了虚拟机的配置和磁盘,直接用VirtualBox导入最省事。打开VirtualBox,选择“导入虚拟电脑”,选中.ova文件,一路下一步就好。导入时注意看一下虚拟机名称和磁盘路径,磁盘空间不足会导致导入失败。我遇到过几次导入到一半报错,排查下来全是宿主机磁盘不够,先把C盘或者存放虚拟机的分区清理出10GB以上再操作。

如果你用的是VMware Workstation,也可以导入.ova,但导入后会多一些坑。最典型的是固件类型和网络适配器不匹配:靶机镜像在VirtualBox下默认用BIOS引导,到了VMware里可能默认变成EFI,导致开机黑屏或无法进入系统。解决办法是编辑虚拟机设置,把“固件类型”改成BIOS,同时把网络适配器类型改成e1000或vmxnet3,具体哪种要试一下才知道。另外建议把内存调到2GB以上、CPU给2核,打Web渗透的时候浏览器和扫描工具同时开,配置太低会很卡。

2.2 Host-only还是NAT:靶场网络模式的选择

这一步是新手最容易踩坑的地方,我详细说一下。

VirtualBox里常见的网络模式有三种。NAT模式下,虚拟机可以访问外部网络,但虚拟机和虚拟机之间默认是隔离的,也就是说你的攻击机Kali和靶机Breach 3虽然都在NAT模式下,却互相看不见。桥接模式会让虚拟机直接挂在宿主机所在的局域网里,有可能拿到一个随机IP,在公司或者宿舍网络里还可能干扰到别人的设备,不太推荐。所以打靶场我强烈建议用Host-only模式。

Host-only模式相当于宿主机内部划了一个虚拟交换机,只有宿主机和接入同一个Host-only网络的虚拟机才能互相通信,外界的设备和流量进不来,安静又可控。VirtualBox装好后默认会创建一个Host-only网络,网段通常是192.168.56.0/24,DHCP分配的地址范围是192.168.56.101到192.168.56.254。Kali攻击机和Breach 3靶机都把网络模式改成Host-only,然后同时启动,两台机器就能互相访问了。

启动后先在攻击机里确认一下网卡,输入ip addr看看是否拿到了192.168.56.x的地址。如果没拿到,多半是DHCP没开,或者网卡没启用,可以手动配置静态IP:地址填192.168.56.2,掩码255.255.255.0,网关可以不填。靶机一般会自动获取,如果它没获取到,进靶机控制台用ip addr查看,再手工配置。

2.3 快照、记录和复现习惯

打靶场和真实渗透有一个很大区别:真实环境出了事要负责,靶场里随便折腾。但随便折腾不等于没有策略,我强烈建议养成熟练使用快照的习惯。

镜像导入后、第一次启动前,先拍一个“干净快照”。这样无论后面网络配置改崩了、靶机服务打挂了、还是自己不小心把系统搞坏了,都能一键回到最初状态。另一个更实用的做法是,在每次关键节点后都拍一个新快照,比如当你成功进入后台、拿到初始shell、提权成功后,各拍一张。复现或者写笔记的时候,可以直接跳回某个阶段,不用从头跑一遍,非常省时间。

同时我建议用Markdown文件记录整个打靶过程,不要只在脑子里记。内容包括:当前靶机IP、攻击机IP、发现的端口和服务、访问过的路径、尝试过的账号密码、失败的原因。很多人打靶失败不是因为技术不够,而是因为没有记录,过半小时就忘了自己扫过什么,重复劳动浪费时间。

3. 第一部分实操:信息收集与入口发现

3.1 存活探测:先把靶机的IP找出来

靶机启动后第一件事,就是确认它已经连上了Host-only网络。先在攻击机里用ip addr确认自己的IP属于哪个网段,然后扫描这个网段里的存活主机。

我习惯用netdiscover -r 192.168.56.0/24来做,这个工具通过ARP请求直接询问网段内所有主机,速度很快,而且不依赖目标是否回应ping。没有netdiscover的话,用nmap -sP 192.168.56.0/24也可以,但有个坑:如果靶机禁ping,-sP可能看不到它。遇到这种情况,改用nmap -Pn 192.168.56.0/24,它跳过主机发现,直接对网段内所有地址做端口探测,虽然慢一点,但能扫出开着端口的机器。

还有一种最笨但最可靠的办法:直接打开靶机的控制台窗口,登录进去运行ip addr,看它自己分配的地址是多少。很多靶机开机后会打印一个欢迎界面,上面甚至直接写了IP,遇到这种直接记下来就好。需要注意的是,有些vulnhub镜像默认不启用DHCP,需要手动在靶机里配置IP,如果你发现靶机一直拿不到地址,先看它的/etc/network/interfaces文件。

3.2 端口扫描:别一上来就拉满负载

找到IP后,先做一次全端口TCP扫描,目的是了解目标开放了哪些服务。我常用的命令是nmap -sS -p- -T4 目标IP,这个命令扫全部65535个端口,速度快,但不会带版本识别。第一轮只做端口发现,不要加-sV -sC,因为全端口加版本和脚本扫描会非常慢,而且动静很大。

第一轮扫完,看到开放端口列表后,再针对具体端口做详细识别。比如发现80端口开放,就运行nmap -sV -p 80 目标IP,确认Web服务的具体版本;再运行nmap -sC -p 80 目标IP,调用默认脚本看看有没有明显的配置问题。这里有个经验:-sC脚本库里有不少主动型脚本,比如枚举、暴力猜解,在靶机上跑没问题,但在真实测试中要谨慎。靶场里跑一跑能帮我们快速定位一些常见入口,比如robots.txt、目录列表、版本漏洞。

扫描结果记得完整保存下来。我会把每个开放端口的服务版本、指纹信息整理到Markdown里,因为后面判断利用方案时,版本信息就是最重要的依据。

3.3 Web页面探索与目录爆破细节

Breach 3这类靶机一般都会开放HTTP服务,所以网页探索是第一部分的重点。打开浏览器访问目标IP,第一件事不是急着乱点,而是先看页面源代码。靶场出题人有个习惯,喜欢把提示放在HTML注释里、隐藏的div标签里、外部JS文件里。按Ctrl+U查看源码,搜索”comment”、”hidden”、”password”、”user”这些关键词,经常会有惊喜。

然后查看robots.txt,这个文件本来是用来告诉搜索引擎哪些目录不能抓取,但在靶场里常常直接暴露敏感路径。还要注意页面里的Cookie内容,有些靶场会在Cookie里做文章,可能是编码后的路径,也可能是base64串。如果页面能跳转到一个登录框,先别急着爆破,观察一下登录框附属的表单字段名,看看有没有隐藏字段。

目录爆破是Web探索的另一个必备环节。我习惯用gobuster或dirsearch跑。字典选择很关键,默认的小字典扫一遍很快,但容易漏;建议用SecLists里的directory-list-2.3-medium.txt,大小适中,覆盖率高。线程数控制在50左右,太高容易把靶机服务打崩。爆破过程中要多关注状态码变化,不要只盯着200。302重定向说明存在登录跳转,403可能是敏感目录被禁止访问,204、301也可能藏线索。看到异常状态码就手动访问一下,确认页面内容再判断价值。

3.4 把线索拼起来:锁定第一个入口

信息收集到最后,手里会有一堆零散线索:某个路径、某个版本号、某个用户名、某个备份文件。第一步入口通常不是单一漏洞,而是这些线索的串联结果。

比如你在/backup目录下找到了一个数据库备份文件,下载下来后发现里面有个users表,表中有个管理员用户名和一个哈希值。把哈希先识别类型,再放到字典里爆破,得到明文密码。接着用这个密码尝试登录后台,登录后发现后台有日志查看功能,日志参数存在命令注入。这种情况下,真正的入口其实是那个数据库备份文件,漏掉它就什么都做不下去。

Breach 3的第一部分核心就是这种“由点到线”的推理训练。我的建议是每发现一个线索都立刻访问或验证,不要攒着不看。看到路径就访问,看到用户名就测试默认密码和弱口令,看到版本号就在本地翻一翻对应版本的历史漏洞记录。把所有线索按优先级排个序:能直接交互的服务优先,有版本漏洞信息的服务其次,纯静态页面放在最后。这样做的好处是,一旦某个点验证不通,可以快速换下一个,不浪费时间。

4. 漏洞利用与权限建立的通用方法

4.1 先识别指纹,再选路线

进入利用阶段前,很多人会犯一个错误:直接上漏洞扫描器对着目标一顿扫。结果往往是扫出一堆误报,真正能利用的一个都没有。正确的做法是先做指纹识别。

指纹识别的意思是确定目标运行的是什么软件、什么版本。打开网页后,看Meta标签里的generator字段,看CSS、JS文件引用的路径,比如出现wp-content多半是WordPress,出现/administrator多半是Joomla,出现generator" name="Generator"会告诉你具体CMS类型。也可以用专门的指纹识别工具,比如whatweb,它会把目标的技术栈一口气列出来,节省大量时间。

知道目标是什么组件后,利用路线就很清晰了:如果是开源CMS,直接查这个版本有哪些已知漏洞,很多靶场考点就藏在版本CVE里;如果是自研应用,重点测参数、文件上传和业务逻辑;如果是常见的中间件,比如某个版本的Apache、Tomcat,则优先看对应解析漏洞和路径穿越问题。这个思路在真实测试中同样适用,先缩小范围,再精准打击。

4.2 登录、上传和命令执行场景的拆解思路

常见的第一步入口无非三种场景:登录框、上传点、命令执行参数。

登录场景下,不要只想着弱口令爆破。先看看能不能找到合法用户的凭证,比如备份文件、配置项、历史页面里的信息残留。如果只有哈希,先识别哈希类型,再决定用字典还是规则爆破,而不是拿一个rockyou字典从头跑到底。另外注意观察登录逻辑本身,有些靶场会在找回密码、验证码校验、响应包字段上留漏洞。

上传场景下,先看前端的限制,比如只允许jpg格式。用BurpSuite拦截请求,看服务端是否校验了Content-Type、扩展名、文件头。绕过的思路包括修改扩展名大小写、双写扩展名、在扩展名后面加空格和点,以及配合解析漏洞换取执行权限,这些手法属于基础功,值得逐个尝试。

命令执行场景通常隐藏在某个参数里,比如日志查看、ping测试、搜索功能。重点观察参数是否被拼接到系统命令中,是否有WAF过滤,回显在哪里。如果没有直接回显,可以利用带外通道来确认漏洞点了。但我这里不贴具体payload,毕竟是学习环境,自己动手构造一次,印象会深得多。

4.3 拿到首次shell后的稳定与枚举

拿到初始访问权限后,不要急着大喊“通关了”,因为初始权限通常非常低,可能是Web服务的www-data,也可能是某个普通用户。这个阶段的重点变成了两件事:稳定会话和系统枚举。

稳定会话是因为很多反弹shell或Webshell连接很不稳定,网络抖动一下就断了。我会先确认当前用户身份和交互能力,再考虑升级成交互式shell。在Linux靶机里,可以利用Python的pty模块来获得一个完整终端,这是最常用的手段。之后在条件允许的情况下,备份自己的公钥到目标用户目录,方便后续重新登录。

系统枚举是提权前最关键的环节。需要逐项检查:当前用户能执行哪些sudo命令、有哪些文件当前用户可写、系统计划任务里有没有以高权限运行的脚本、有没有特殊的SUID文件、网络端口里有没有只监听本地的额外服务。这些命令的输出拼起来,就是一条清晰的提权路线图。很多靶机的设计意图是“sudo配置不当”或“计划任务调用了用户可写脚本”,只要枚举够细,一般都能找到突破口。

提权本质上就是把权限从低往高提的过程。常见路径包括:sudo配置里出现某种免密命令、某个定时任务以root身份运行但你却能修改对应脚本、系统内核版本对应公开漏洞、某个应用以root权限运行且存在利用点。这部分需要耐心验证,遇到一个就试一个,失败的记录下原因,继续下一个,直到拿到root。

5. 常见问题与排错实录

5.1 靶机导入后没有网卡怎么处理

症状表现是靶机启动后,控制台里执行ip addr只看到lo回环接口,看不到eth0或者ens33这类正常网卡。大部分原因是虚拟机网卡类型和靶机系统不匹配,或者网卡没有被加载。

先把虚拟机完全关机,然后在网络设置里把网卡类型改一下。VirtualBox里通常默认是Intel PRO/1000,如果不行就换成virtio-net;VMware里默认是e1000或vmxnet3,来回切换一次再看。改完启动后,在靶机控制台里等待30秒左右,再执行ip addr,有时网卡驱动加载比较慢。如果还是不行,直接在靶机里手工让网卡接管IP,编辑/etc/network/interfaces或者使用dhclient eth0命令,很多Linux镜像默认不用NetworkManager,需要手动拉起接口。

5.2 攻击机扫描不到靶机IP怎么办

这个问题出现频率极高,我把它拆成几个原因来看。

第一个原因,Host-only网络根本没启用。打开VirtualBox的全局设置,在“网络”里的“仅主机网络”页面,看DHCP服务器是否开启,虚拟网卡是否处于启用状态。在VMware里则要检查虚拟网络编辑器中的VMnet1是否被禁用。第二个原因,两个虚拟机不在同一网段。攻击机是192.168.56.2,靶机却是192.168.1.x,那就说明靶机的网络配置不对,或者靶机拿到的是其他网卡分配的地址。第三个原因,靶机禁ping。用nmap -sn检测不到时,换nmap -Pn,或者直接看靶机控制台里的IP。

这里给一张排查顺序表,照着走基本都能解决:

现象可能原因解决办法
靶机只有lo接口网卡类型不匹配关机,改虚拟网卡类型,重启
攻击机能上网但扫不到靶机两台不在同一Host-only网段手工配置攻击机和靶机的IP到同一网段
ping不通但端口好像开着靶机防火墙屏蔽ICMP使用nmap -Pn跳过主机发现
扫一遍什么都没有靶机服务没起来等30秒后再扫,或重启靶机服务

5.3 端口扫描和服务状态不稳定

有时第一轮扫描看到80端口开放,想再详细识别一下,结果端口消失了,或者目录爆破到一半连接被断开。多半不是靶机真的关了服务,而是扫描强度太高把靶机上的服务打崩了。

我总结下来的经验是:目录爆破线程控制在50以内,全端口扫描不要带太重的脚本,nmap的-T4已经够快。如果发现服务崩了,重启靶机,等它完全起来再继续。另外一个容易被忽视的问题是IP变化,如果靶机使用DHCP,可能在多次重启后拿到了不同地址,导致之前扫描的结果对不上。遇到这种情况,把靶机的IP固定下来,或者每次操作前先确认一下当前IP是否变化。

5.4 工具联动时的典型坑

打靶过程中会频繁切换BurpSuite、nmap、sqlmap、浏览器等工具,最常见的问题是代理设置混乱。例如BurpSuite开了代理监听,准备抓Web请求,但浏览器的代理设置没有同步修改,结果半天抓不到包。反过来,使用sqlmap时它默认会走系统代理,如果代理没关,可能导致扫描流量绕到Burp再出去,不仅慢,还可能因为配置不当出现诡异结果。

我在实践中的做法是:固定一套代理配置,BurpSuite默认监听127.0.0.1的8080端口,浏览器设置为同一个代理;需要运行sqlmap时,显式指定--proxy参数指向同一个代理,或者干脆临时关闭Burp,让流量直连目标。还有一个很实用的习惯:每切换一个工具之前,先确认目标主机IP有没有变化,再确认当前工具的代理设置,最后才是执行扫描命令。

6. 打靶记录的几个好习惯

6.1 信息收集记录模板

打靶这事,光靠兴奋撑不了多久,真正拉开差距的是工整的记录习惯。我自己的信息收集表长这样:

目标属性发现内容备注
目标IP192.168.56.3固定不变
开放端口80, 330680为主入口
Web指纹Apache 2.4,PHP 7.4存在版本风险点
敏感目录/backup, /admin/backup可目录列表
关键账号admin, backupuser来源:备份文件
可利用漏洞上传点绕过待验证

每次做完一项操作,就在表里加一行。不要嫌麻烦,因为当你打了两小时后卡住,回来看这张表,马上就知道哪里还没覆盖到。

6.2 卡住时的排查顺序

打到一半没有任何进展是常态,别急着换exp或者乱扫。我的习惯是先按顺序做三件事:第一,重新确认端口扫描结果,是不是有漏扫的高位端口;第二,回到Web页面,把刚才没有仔细看的源码和目录重新翻一遍;第三,检查自己的记录表,看有没有线索被记下来但还没验证过。

大多数情况下,卡点都不是漏洞利用技术不够,而是信息收集阶段漏了一项。Breach 3这种靶场的乐趣就在于,你永远不知道下一个入口是藏在某个备份文件里,还是藏在一个看似无关的版本号里。把第一部分练扎实了,后面的路自然就好走了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询