VulnHub DC-2靶机实战:渗透测试全流程与Linux提权详解

发布时间:2026/10/10 4:45:26
VulnHub DC-2靶机实战:渗透测试全流程与Linux提权详解 练靶场这个东西圈内人一般叫 CTF 靶机或者渗透测试靶场说白了就是一个故意留了漏洞的虚拟机环境。VulnHub DC-2 是其中一个很经典的系列靶机很多人入门 web 渗透、内网横向和 Linux 提权都会拿它当第一台完整练习机。这个靶机整体不复杂但链条很长从信息收集、WordPress 漏洞利用、密码爆破到 SSH 登录、受限 shell 绕过、再到最后提权拿到 root每一步都踩在真实渗透测试的常见套路上。这篇内容我就围绕 DC-2 这台靶机把完整思路、实际操作步骤和我在复现过程中踩过的坑一起写清楚适合已经会用基本 Linux 命令、想系统练一遍渗透测试流程的人参考。1. 先搞清楚 DC-2 在练什么1.1 靶机整体场景VulnHub 这类平台上的靶机都是为了一个目的设计出来的让安全爱好者在合法、可控的环境里练习攻防技术。DC-2 属于入门到进阶之间的难度不像最基础的靶机那样给一个漏洞直接打进去也不会像高阶靶机那样绕来绕去。它对人的要求是不只要会跑工具还要理解每个步骤在干什么。整体路径大概是这样的拿到一台虚拟机先要发现它开在哪个 IP 上然后扫描端口发现是一个 Web 服务和一个 SSH 服务。Web 服务跑的是 WordPress需要进一步枚举用户、跑密码字典想办法进后台。后台里会找到关键线索拿到一组 SSH 凭据。SSH 登录进去后发现是一个受限 shell不能随便执行命令要先绕过这个限制。最后在当前用户的基础上继续收集系统信息利用配置缺陷或特权程序完成提权读取最终的 flag 文件。这条链路你在真实渗透测试中经常碰到一个对外业务系统先被打点然后横向移动到内网主机再一步步提升权限。DC-2 的设计价值就在这儿它不考你某个偏门 CVE而是考你能不能把基本功串起来。1.2 适合哪些人练我建议具备以下基础的人直接上手 DC-2熟悉 Linux 基本操作知道 cd、ls、cat、find、grep 这些命令知道文件权限和用户概念。用过至少一种扫描工具比如 Nmap知道端口扫描的常见参数。了解 Web 应用的基本结构比如知道 CMS、登录后台、插件、主题这些概念。最好对密码爆破有概念知道字典是什么、为什么要用字典。如果这些还不太熟建议先把 Linux 基础和 Nmap 基础补一补再来打不然容易卡在很低级的环节失去练习意义。反过来如果你已经能熟练打 VulnHub 的 beginner 级别靶机那 DC-2 是非常好的下一个台阶。1.3 一台靶机到底能练出什么这可能是很多人忽略的一点。DC-2 打完以后你留下的不应该是几个 flag 字符串而是一套稳定的方法论信息收集要有顺序网络发现、端口扫描、服务指纹、目录扫描、CMS 指纹、用户枚举每一步的结果都是下一步的输入。攻击不是单点爆破而是链条推进。你从 Web 后台拿到的信息可能只是为了获得 SSH 口令SSH 口令可能又只是进入下一个权限层次的跳板。提权不是玄学是先看配置。sudo 权限、SUID 文件、环境变量、可写脚本、历史文件这些都属于常规检查项。说句实话能把这一套流程用熟练比背下十几个 CVE 编号有用得多。2. 环境搭建与开局准备2.1 下载导入靶机镜像学习 DC-2 当然需要先从对应渠道获取靶机虚拟镜像。它是 OVA 格式的虚拟镜像文件一个 OVA 文件拿来就能导入常见的虚拟机软件。导入的时候要点在于这台靶机本身就是一个完整的 Linux 系统你必须保证它能和你的攻击机保持在同一个局域网段内。我习惯的做法是攻击机用一个网卡设置为仅主机模式或自定义虚拟网络。DC-2 虚拟机导入后网络适配器也改成和攻击机同一个仅主机网络。两台虚拟机都启动然后从攻击机去发现 DC-2 的 IP。这里有个很多人第一次容易犯的错直接用 NAT 模式。NAT 模式下虚拟机可以上网但攻击机访问它通常更麻烦也不符合实战内网渗透场景。仅主机模式模拟的就是一个封闭的内网环境合理得多。2.2 从零定位靶机 IP靶机导入后你不知道它的 IP这是整个流程的第一步网络发现。如果你用的是常见 Linux 渗透测试发行版里面默认带一些工具比如sudo netdiscover -r 192.168.56.0/24我实际用的命令大多是这样的。netdiscover 会在指定网段内发送 ARP 请求收集所有在线主机的 MAC 地址和 IP。如果你清楚虚拟网络用的具体网段也可以用sudo arp-scan --interface eth0 --localnet这两个工具的原理都是基于 ARP区别不大挑一个顺手就行。扫描出来会看到很多虚拟机的网络设备怎么判断哪个是靶机呢经验是两个线索一个是新出现的陌生 IP另一个是网卡 vendor 信息。目标机器一般会自动获取 IP也会拿到一个合法的网段地址关键在于它的 IP 不在你的虚拟网络正常地址池里或者说它是那个之前你没见过的、新冒出来的 IP。找到 IP 以后建议先用 ping 测一下通不通。通了就继续往下走不通就去检查两台虚拟机的网络模式是不是同一个。2.3 端口扫描与服务指纹拿到 IP 后第一件事不是直接访问网站而是做一次全端口扫描。注意是全端口不是默认端口。很多服务就喜欢开在奇怪的高端口上漏扫一个端口就可能漏掉一条攻击路径。sudo nmap -sV -sC -p- 192.168.56.x这里参数解释一下-p-扫描全部 65535 个端口。-sV探测服务版本。-sC使用默认脚本集可以顺带跑一些基础的漏洞检测和指纹识别。扫描完会发现靶机只开放了两个关键端口22 端口跑 SSH80 端口跑 HTTP。其他端口基本没有可乘之机那就说明目标很明确想进去要么走 Web要么尝试 SSH 弱口令。实战中遇到这种情况我一般会先看 Web因为 Web 应用面大暴露点也多往往比直接怼 SSH 更容易突破。这里有个小细节你可能扫出来以后访问网站发现页面跳转IP 访问会自动被重定向到一个域名上去。这个很关键后面马上讲。3. Web 应用侦察与用户枚举3.1 识别 CMS 类型和版本用浏览器访问靶机 IP 时十有八九会看到页面跳转地址栏里的 IP 变成了 dc-2 之类的域名。这说明站点的配置用了基于域名的虚拟主机。这种情况下如果你直接拿着 IP 去请求服务端会返回一个默认页面或者直接重定向根本看不到真实业务。解决办法也很简单在攻击机本地 hosts 文件里加一条解析记录把这个域名解析到靶机 IPecho 192.168.56.x dc-2 | sudo tee -a /etc/hosts这里推荐用这种写法跟直接 echo 重定向的区别不大主要是防止手滑写错文件。加完以后再用域名访问就能正常看到 WordPress 站点了。WordPress 的特征非常明显你看到页面底部有 “Powered by WordPress”访问 /wp-login.php 有登录框或者看页面源码里 wp-content、wp-includes 这些路径基本就可以确定身份了。这时候可以想办法确认 WordPress 的版本号经验做法是看页面源码里生成的 meta 标签或者读 /readme.html 文件。3.2 跑一遍用户枚举确定是 WordPress 之后信息收集的重点就从页面本身转向用户和插件。WordPress 后台登录接口是可以枚举用户的常见手法有访问 /?author1看页面能否展示用户昵称。直接访问 /wp-json/wp/v2/users如果 REST API 没关会直接列出用户名。用专业扫描器做枚举。这一步用到 wpscan 其实是非常顺手的工具。它专门针对 WordPress 设计能扫插件、主题、用户还能跑密码爆破。wpscan --url http://dc-2/ --enumerate u枚举结果会列出一批用户名。我印象中 DC-2 直接跑出来的用户有 admin、jerry、tom 这几个。有些靶机版本可能探测方式不同但大体逻辑是拿到一批合法用户名。这里说个题外话很多人在这一步就直接去爆破密码了不着急。先去扫一下后台可能还有其他线索比如扫描常见目录gobuster dir -u http://dc-2/ -w /usr/share/wordlists/dirb/common.txt扫描的目的是看看有没有备份文件、隐藏目录、配置文件泄露之类的。DC-2 里通常没有太多可以走捷径的东西但养成这个习惯对后面的靶机很有帮助。3.3 后台可能藏着的思路进后台这一步DC-2 的常见玩法就是密码爆破。因为 WordPress 登录页有重定向和跳转爆破时如果直接用浏览器很麻烦用 wpscan 会方便得多wpscan --url http://dc-2/ --passwords /usr/share/wordlists/rockyou.txt --usernames admin,jerry,tomrockyou.txt 是常用的密码字典如果你的发行版默认没装完整版可能路径不一样。跑完以后通常能拿到其中一个用户的弱口令。我实际跑的时候admin 账户往往会花非常多时间弱口令概率低反而是普通用户容易出结果。不过有一点得提醒这种爆破操作仅在授权的靶场环境里边成立。不要拿这套东西去对线上系统做尝试任何未授权的测试都是高风险且违规的这应该是每个安全从业者的底线。爆破成功以后进 WordPress 后台这时候目的就变了不是改网站页面而是找线索。DC-2 里每个阶段都会留下提示后台编辑页面、文章内容或者页面模板里很可能藏着下一个入口需要的凭据信息。4. 应用访问控制突破4.1 拿到后台之后的重点进了 WordPress 后台这套一直有很多人卡住因为不知道接下来该干嘛。常见的误区是试图直接在后台传木马、反弹 shell。这不完全是错的但 DC-2 的场景更偏向于考察你能不能拿到额外的业务凭据而不是上来就做后门。后台里有一个操作是一定要做的把所有文章页面、固定页面都点开看看尤其是编辑页面里的内容。这些地方经常有隐藏信息。我记得 DC-2 中会提示你用某种方式从普通用户切到另一个用户的身份这通常意味着你需要一组 SSH 凭据去登录系统。在这个靶机里后台找到的内容远远不止是提示他们是真正可以利用的账号密码信息。拿到账户和密码以后就可以考虑 SSH 登录了。这里插一句经验很多新人喜欢在 Web 后台停留太久花大量时间想怎么注入命令、怎么改文件有时候反而忽略了最朴素的路。渗透测试中拿到明文口令直接登录 SSH是最稳定、最省事的方式。像一个正常的用户那样去登录系统而不是非要构造什么复杂攻击。4.2 SSH 登录受限 shell拿到 SSH 凭据后第一次尝试登录大概会成功ssh 用户名192.168.56.x但登录进去以后问题来了。你发现命令行只显示一两个可以执行的命令tab 补全也没有ls、cat、whoami 全都不好使。这个就是受限 shellrestricted shell在起作用。它限制了你的 PATH 环境变量只允许你在白名单里执行命令。这个限制其实就是 SSH 登录时指定的 shell 有问题。它把可以执行的命令限制在一个很小的集合里让你没法直接用普通方式浏览文件、执行工具。很多人到这里会卡很久因为感觉啥都干不了但其实绕过思路不复杂。受限 shell 只是限制了 PATH不是限制系统资源。核心思路是找到能逃逸到正常 shell 的方法。4.3 绕过受限 shell 的通用思路绕过受限 shell 的方法在业界已经有一套成熟的套路。经典办法包括利用 vi/vim/emacs 这类编辑器进入编辑器后再执行 shell 命令。利用 ftp、more、less、man 等分页程序在交互模式下发命令。直接调用可以执行外部命令的编程语言解释器比如 Python、Perl、Ruby。检查当前环境变量看看能否通过修改 PATH 恢复完整命令集。具体到 DC-2你登录进去以后可以先用 echo 看看 HOME、PATH 变量内容然后想清楚既然系统里有 Python 这类解释器那执行python -c import pty;pty.spawn(/bin/bash)或者通过环境变量设置新 PATH再执行 /bin/bash通常就能获得一个完整的 bash 环境。这里的原理你得理解受限 shell 只是限制了外部命令查找路径但你依然有权限运行绝对路径下的命令。也就是说你能用 /bin/bash 启动一个永久 shell。限制你的是调用方式不是操作系统本身。绕过之后你就可以用完整命令浏览目录、查看文件、寻找下一个提权目标了。这里我提醒一下投标机如果版本不同可能需要尝试几种绕过姿势但基本上逃不开上面的思路。关键是自己动脑去测而不是机械照抄。5. 权限边界与提权面梳理5.1 进系统先做信息收集拿到一个可用的 shell 之后很多人会很兴奋直接去找 flag。但对渗透测试来说flag 不是最终目标提权路径才是。拿到 shell 后第一件事是摸清当前用户身份、权限、系统结构和可写文件。常用命令我可以给一套固定三板斧查看当前身份id、whoami。查看内核和操作系统版本uname -a、cat /etc/os-release。查看有无特殊权限配置sudo -l。重点说 sudo -l。这条命令的作用是列出现在用户能执行的 sudo 命令。不需要密码的部分会直接显示出来这是提权最优先检查的点。DC-2 在这个阶段一般会有一条线索某个用户可以不需要密码或者用当前密码执行某个特定命令以另一个用户身份执行命令。你的目标就是想清楚这个 sudo 条目能干什么以及怎么利用它获得控制权。如果 sudo -l 显示空也不要灰心。DC-2 里面还有一层东西就是要搞清楚已登录用户的 HOME 目录、别人留下的可读文件、以及有哪些 SUID 文件。普通用户能读取到的敏感文件往往藏着下一个用户的 SSH 密码这个在上一步或者当前目录里很容易找到。5.2 SUID 文件与特权程序排查提权这条路我习惯按优先级查sudo 配置SUID 文件环境变量可控的脚本可写的系统服务文件内核漏洞DC-2 到这一层的设计其实并不复杂。它不会要求你去搞内核编译而是考察你对 sudo 机制的理解。这也更贴近真实场景大多数系统被拿下不是因为内核漏洞而是管理员给了太宽松的权限。如果排查到某个二进制文件或者脚本可以以另一个用户身份运行那么思路就打开了。比如常见的利用方式如果允许用 root 权限运行某编辑器那么进入编辑器以后调用 shell 就完事了。如果允许运行某个包管理工具那也可以通过它的插件机制来执行命令。这个阶段的重要教训是先看它能干什么再想怎么利用。很多人一看到 sudo 条目就慌不知道从哪下手。实际上很多这类工具本身就有执行命令的功能只是你需要从它的官方功能出发而不是硬造攻击。5.3 从普通用户切换到另一个用户提权常常不是一步登天的。DC-2 里你会经历从 Web 用户到系统普通用户再到另一个更高权限用户的切换过程。这一步通常依赖密码复用或者密码泄露。比如你在某处找到了另一个用户的密码然后通过 SSH 重新登录到那个用户可能会进入一个比之前稍微宽松点的环境或者拥有执行 sudo 的权限。这种用户到用户的横向切换本质就是账号权限的递进。我在这里分享两个实际心得密码收集一定要全面。不只是用户在浏览器里输入的密码也要检查配置文件、历史命令、备份文件、环境变量。切换用户后第一时间重新执行 sudo -l。权限情况可能完全不同看起来有新机会。6. Linux 提权实战与复盘6.1 提权操作的前置检查如果你已经能执行 sudo -l并看到了可以以 root 身份运行的条目恭喜你已经到了最后一步。但别急着执行命令先确认三个问题当前密码或者该用户密码是否还能用于 sudo。目标命令是否真的以 root 权限运行还是以某个中间用户身份运行。该命令是否有交互模式能否在交互模式里逃逸到 shell。这些检查在真实环境中都有意义。现实中 sudo 配置经常会用通配符可能带来简单的路径替换提权。所谓路径替换就是某个程序允许你用 root 权限执行但它自己又会调用另一个可执行文件而这个文件刚好可以由你来写于是你把自己的恶意脚本替换进去等它以 root 身份执行时你的命令也就跟着以 root 权限运行了。6.2 root 权限验证与最终 flag提权成功后自然是验证身份sudo id看到输出里 uid0(root)就说明已经拿到了最高权限。然后读取 root 目录下的 flag 文件整个靶机流程就结束了。读 flag 的时候注意文件通常在 /root 目录下普通用户之前不能进root 可以。拿到 flag 以后建议做一次复盘把你从最初的信息收集到最终提权每一步用的命令和思路写下来。这会变成你自己的一本方法手册比做笔记都有用。我记得我第一次打 DC-2 的时候卡在受限 shell 上足足一个多小时当时对 pty 模块和 shell 逃逸不熟踩了坑才明白。后来再去打其他靶机遇到类似的受限环境很快就反应过来了。这就是复盘的价值。6.3 防御视角这套靶机说明了什么站在防守方的角度看 DC-2它暴露了几个非常典型的真实问题WordPress 后台使用了弱密码爆破风险极高。系统给用户的默认权限过宽普通用户可以轻松读取到其他用户的敏感文件。sudo 配置存在滥用风险没做好最小权限隔离。系统使用了受限 shell但绕过方式太常见并没有真正限制住用户。这些在真实企业环境里每一项都是安全隐患。所以打完靶机以后我强烈建议你再切换成防守视角如果你是这台服务器的管理员你会怎么加固比如给 WordPress 后台开启双因素认证、限制登录尝试次数、给普通用户单独配置 sudo 规则而不是直接给宽泛权限、关闭不必要的服务端口。这样一遍下来DC-2 的价值就不只是攻破一台靶机而是帮你建立了一套攻防对照的安全观。7. 常见卡点与个人实操心得7.1 高频卡点速查我整理了打 DC-2 过程中最常见的几个卡点按出现概率排序找不到靶机 IP。原因基本是攻击机和靶机不在同一个虚拟网络。访问网站被重定向到域名。需要在 hosts 里添加解析记录。WordPress 登录爆破半天没动静。尝试的用户名可能不对口字典也可以换换看。SSH 登录后没法执行命令。受限 shell先找 Python 或者其他解释器绕一下。拿到了新用户不会继续。重新 sudo -l重新看目录别在旧权宇宙里一直绕。提权命令看起来没反应。检查 sudo 条目是不是允许带参数考虑路径替换或者其他工具交互模式。这些问题基本都是初学者必经之路。你卡住一次就把卡住的命令和原因记录下来下次自然就快了。7.2 过程里比较重要的几个细节打这套靶机时有几个点我特别有体会第一不要过度依赖单个工具。wpscan 能枚举用户、爆密码但如果你对 WordPress 目录结构和默认路径有基础直接用 curl 访问特定页面也能拿到信息。手工方式有时候更可靠。第二命令输出要逐行看。比如登录后台以后页面上写的一行提示可能就是你下一步的钥匙。很多人一进后台就奔着主题编辑器去了反而漏掉了最明显的信息。第三环境差异会导致路径不同。用 wpscan 爆破时如果字典路径不对工具会直接报错SSH 登录时如果是旧版本 OpenSSH可能默认加密算法不同需要额外加参数。这些不是靶机本身的问题而是环境兼容性。7.3 后续还能怎么进阶打完 DC-2 以后如果想继续夯实这套技能我建议按这个顺序往下走去打同一系列的 D 系靶机前后难度衔接得很自然你会进一步熟悉不同 CMS 和提权手法。自己搭建一个 WordPress 站点刻意设一个弱口令和一个宽松 sudo 配置然后自己复测一遍。把 DC-2 中的步骤写成一份完整的渗透测试报告包括目标、过程、危害、修复建议这能帮你提前适应真实安全服务的工作模式。我在实际操作中的体会是靶机数量不在多而在于你肯不肯把每一台都吃透。DC-2 这一台如果能把整个链条理解到位后面很多入门级别的靶机都会变得很轻松。尤其是受限 shell 和 sudo 提权这两个知识点是高频考点必须重点掌握。最后再说一句打靶机只是模拟场景一定只在自己搭建的实验环境里操作任何对未授权目标的探测和攻击都不应该做。技术在学安全的边界更要守住。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询