news 2026/10/10 4:45:24

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 端口跑 SSH,80 端口跑 HTTP。其他端口基本没有可乘之机,那就说明目标很明确:想进去,要么走 Web,要么尝试 SSH 弱口令。实战中遇到这种情况,我一般会先看 Web,因为 Web 应用面大,暴露点也多,往往比直接怼 SSH 更容易突破。

这里有个小细节,你可能扫出来以后访问网站发现页面跳转,IP 访问会自动被重定向到一个域名上去。这个很关键,后面马上讲。

3. Web 应用侦察与用户枚举

3.1 识别 CMS 类型和版本

用浏览器访问靶机 IP 时,十有八九会看到页面跳转,地址栏里的 IP 变成了 dc-2 之类的域名。这说明站点的配置用了基于域名的虚拟主机。这种情况下,如果你直接拿着 IP 去请求,服务端会返回一个默认页面或者直接重定向,根本看不到真实业务。

解决办法也很简单,在攻击机本地 hosts 文件里加一条解析记录,把这个域名解析到靶机 IP:

echo "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 后台登录接口是可以枚举用户的,常见手法有:

  • 访问 /?author=1,看页面能否展示用户昵称。
  • 直接访问 /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,tom

rockyou.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 全都不好使。这个就是受限 shell(restricted 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 文件与特权程序排查

提权这条路,我习惯按优先级查:

  1. sudo 配置
  2. SUID 文件
  3. 环境变量可控的脚本
  4. 可写的系统服务文件
  5. 内核漏洞

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

看到输出里 uid=0(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 提权这两个知识点,是高频考点,必须重点掌握。最后再说一句,打靶机只是模拟场景,一定只在自己搭建的实验环境里操作,任何对未授权目标的探测和攻击都不应该做。技术在学,安全的边界更要守住。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 4:45:18

Claude记忆管理实战:上下文锚定与会话状态增强方案

1. “claude-mem”不是官方产品,而是开发者社区自发构建的记忆增强实践体系“claude-mem”这个词最近在技术社区和AI工具讨论区高频出现,但它不是Anthropic官方发布的SDK、插件或API功能,也没有对应的GitHub官方仓库、文档页面或版本号。它本…

作者头像 李华
网站建设 2026/10/10 4:45:15

低温环境下考虑电池寿命的微电网优化调度Matlab复现

低温环境下考虑电池寿命的微电网优化调度,Matlab复现该怎么做?这套EI论文的思路和坑我一次性说清楚。做电力系统优化调度的朋友,这几年应该没少被“储能”和“电池寿命”这两个词来回折腾。电池不便宜,换一组储能电池的成本可能比…

作者头像 李华
网站建设 2026/10/10 4:44:09

数组完整版:从内存连续性到CPU指令的底层解析

1. 为什么“数组”值得写一篇“完整版”?——它不是语法糖,而是数据世界的地基你翻过任何一本编程入门书,第一章准有“变量”,第二章大概率就是“数组”。但绝大多数教程讲完int arr[5] {1,2,3,4,5}、arr[0]取第一个元素、循环遍…

作者头像 李华
网站建设 2026/10/10 4:43:52

QGIS实操:从Excel表格到可打印专题图的全流程指南

直接上结论:把一张几百行的Excel销售台账变成一张能直接打印上墙的县域烟花爆竹零售点专题图,QGIS就能干完,而且一个人半天就能搞定。我最近刚好用QGIS处理了一批某县的烟花爆竹零售许可数据,源文件就是个普通Excel表格&#xff0…

作者头像 李华
网站建设 2026/10/10 4:43:16

万能网卡驱动原理与实战:芯片ID匹配、版本控制与安全安装

1. 项目概述:一张驱动光盘,为什么能解决90%的网络适配器“失联”问题?“万能网卡驱动”这个词,在装机圈、维修点、企业IT支持岗里,几乎就是“救急包”的代名词。它不是某家厂商的官方产品,也不是操作系统自…

作者头像 李华
网站建设 2026/10/10 4:43:01

AnyPS5跨平台串流工具:低延迟架构设计与参数调优实战

1. 从“AnyPS5”这个标题说起:一个跨平台串流工具的设计与实现第一次看到“AnyPS5”这个标题,我脑子里蹦出来的第一反应是:这又是一个想把手柄游戏搬到任意屏幕上玩的串流项目。做过局域网串流的人都知道,这件事听起来简单&#x…

作者头像 李华