vulnhub靶场DC-2靶机渗透

一、靶机详情

DC-2 是 VulnHub 上 DC 系列的第二台入门级渗透测试靶机,难度简单,目标是获取 root 权限并收集 5 个 Flag,核心考点为 WordPress 信息枚举、密码字典生成(cewl)、SSH 登录与 Git 命令提权,适合巩固基础渗透流程。

配置介绍

  • 靶机:192.168.1.138
  • kali:192.168.1.134

二、信息收集

1.扫描目标信息

复制代码
nmap -sV -p- 192.168.1.138 
复制代码
dirsearch -u 192.168.1.138

Wappalyzer

三、搜寻漏洞及利用

根据信息收集得知目标 ip 开启了 80 端口,进行访问,发现访问不了,且我们输入的ip地址自动转化为了域名 http://dc-2,但是我的本地设备无法解析 dc-2 这个域名(比如本地 hosts 没有映射)。 需要修改本地 hosts 文件,把 dc-2 域名强制映射到 192.168.1.138,这样重定向到 dc-2 后,本地能正确解析到目标 IP。

1.获取 flag1

通过访问主页即可得到 flag1

2.暴力破解

根据 flag1 的提示,需要登录其他账号。信息收集中发现了登录地址

http://dc-2/wp-login.php?redirect_to=http%3A%2F%2Fdc-2%2Fwp-admin%2F\&reauth=1

这是一个wordpress的网站,我们采用专门针对wordpress的工具wpscan来进行爆破。

复制代码
wpscan常用语法:
wpscan --url http://dc-2/ 获取版本信息
wpscan --url http://dc-2/ -e p 扫描插件
wpscan --url http://dc-2/ -e u 枚举用户 > admin/jerry/tom

wpscan --url http://dc-2/ -e u

通过 wpscan 可以得到三个用户,admin、jerry、tom。接下来使用cewl对目标网站生成密码字典,然后爆破。

将 3 个用户写入 user.txt 中。

使用wpscan将user.txt与passwd.txt匹配爆破用户密码,成功爆破出 jerry 和 tom 用户的密码。

复制代码
wpscan --url http://dc-2/ -e -U /home/kali/Desktop/user.txt -P /home/kali/Desktop/passwd.txt

3.获取 flag2

使用jerry 用户和爆破出来的密码登录,得到 flag2.

4.ssh 连接

根据 flag2 的提示,需要找到另一个切入点。之前信息收集到的 7744 端口和 tom 用户还没用。密码是之前爆破出来的密码。

复制代码
ssh tom@192.168.1.138 -p 7744

访问 flag3.txt,提示 rbash

rbash(restricted bash)是Bash的一种受限模式,通常用于限制用户的操作,防止他们进行潜在的危险行为,比如访问不该访问的文件或修改系统设置。

5.rbash 绕过

查看可用命令

列出所有未被禁用的命令

复制代码
compgen -c

方法 1

可用使用 vi、less 这些未被禁用的命令查看 flag3.txt

复制代码
vi flag3.txt

方法 2 突破 rbash 限制

利用 bash 内置特性绕过 rbash 的路径 / 命令限制,分两步实现:

  1. 第一步:BASH_CMDS[a]=/bin/sh + a → 跳出 rbash 进入 /bin/sh

rbash 会限制直接执行 /bin/sh,但 BASH_CMDS 是 bash 内置的命令别名映射数组(rbash 默认没限制修改它):

  • 你给 BASH_CMDS[a] 赋值为 /bin/sh,相当于把 "命令 a" 映射成 "执行 /bin/sh";
  • 执行 a 时,rbash 会通过 BASH_CMDS 找到 /bin/sh 并执行,从而进入不受限的 /bin/sh****环境 (提示符从 tom@DC-2:~$ 变成 $,说明 shell 已切换)。
  1. 第二步:export PATH=$PATH:/bin/:/usr/bin/ → 恢复命令执行权限

进入 /bin/sh 后,默认 PATH 可能仍被 rbash 限制(只有少量目录),导致 ls/cat 等命令找不到:

  • export PATH=$PATH:/bin/:/usr/bin/ 是手动添加核心命令目录到 PATH;

  • /bin 和 /usr/bin 是系统命令(ls/cat/su 等)的默认存放路径,添加后 shell 就能找到这些命令,所以 ls/cat 可以正常执行了。

    BASH_CMDS[a]=/bin/sh
    a
    export PATH=PATH:/bin/ export PATH=PATH:/usr/bin/

6.获取 flag3

7.切换 jerry 用户

根据 flag3 的提示,切换用户,密码是之前爆破出来的密码。

8.获取 flag4

切换到 jerry 用户目录,查看 flag4.txt

四、提权

在 jerry 用户中,查看可以使用的 root 权限命令

复制代码
find / -user root -perm -4000 -print 2>/dev/null

查看当前用户可以通过 sudo 执行的命令

复制代码
sudo -l

git 提权

使用 git 命令进行提权,在执行以下命令后直接在末尾输入!/bin/bash,然后按下回车,进入 root 用户。

复制代码
sudo git help status

获取 final-flag

五、知识总结

1.wpscan

wpscan 是一款用于WordPress网站的黑盒安全扫描工具,主要用于检测 WordPress的已知漏洞,还可以枚举用户、暴力破解密码等,Kali Linux 默认预装。

基础命令:

wpscan --url http://dc-2/ -e u # 枚举用户都有哪些

wpscan --url http://dc-2/ -e -U /home/kali/Desktop/user.txt -P /home/kali/Desktop/passwd.txt # 爆破的用户,-U 为用户文件,-P 为爆破使用的密码

wpscan --url http://dc-2/ #获取版本信息

wpscan --url http://dc-2/ -e p #扫描插件

2.cewl

cewl 是一款字典生成工具,核心通过爬虫爬取指定 URL、提取页面单词生成自定义字典,常用于渗透测试中的密码暴力破解,Kali Linux 默认预装。

cewl http://example.com -w password.txt # 基础生成

cewl http://example.com -d 3 -e -n -w emails.txt # 爬取深度设为 3 并提取邮箱

3.rbash 绕过

rbash 全称是 Restricted Bash(受限 Bash), 它是 Bash 的一种"特殊模式",相当于给这个工作台加了很多限制,把用户的操作范围死死限制在指定区域内。如下图则是设置了 rbash。

rbash(Restricted Bash)是为了限制用户操作而设计的受限 shell,通常会:

  1. 限制 PATH 环境变量(仅包含少量目录,默认不包含 /bin//usr/bin 等核心命令目录);
  2. 禁止使用绝对路径执行命令;
  3. 禁止修改 PATH 等环境变量。cat 命令的默认路径是 /bin/cat,但你的当前环境中 PATH 未包含 /bin,因此直接输 cat 会提示找不到。

绕过方法:

(1) 利用已授权的可执行程序(内置 / 白名单程序)绕过

compgen -c

该命令可以查询 rbash(以及普通 Bash)环境中当前用户已授权、可直接执行的程序 / 命令列表。

(2) BASH_CMDS 修改

BASH_CMDSa=/bin/sh

a

export PATH=$PATH:/bin/

export PATH=$PATH:/usr/bin/

命令 1:BASH_CMDS[a]=/bin/sh

这是在 给 Bash 内置的命令哈希表 BASH_CMDS****新增 / 修改一个键值对 ,具体是将键a 映射到可执行程序 /bin/sh(系统的 Bourne Shell)。通俗理解:BASH_CMDS 是 Bash 用来缓存「已执行过的命令路径」的哈希表,目的是加快后续命令查找速度(不用重复扫描 PATH)。这条命令相当于「手动给这个缓存表加了一条记录,告诉 Bash:当用户输入命令 a 时,直接去执行 /bin/sh」。

命令 2:a

执行我们刚刚在 BASH_CMDS 中定义的伪命令 a,本质上就是 间接调用 /bin/sh**,启动一个新的 Bourne Shell 会话** 。 通俗理解:因为命令 1 已经把 a 和 /bin/sh 绑定了,输入 a 就等同于输入 /bin/sh,只是换了一个更简短的 "别名",执行后会进入 sh 的交互环境(跳出原来的 Shell 上下文) 。 这条命令能生效的前提是 BASH_CMDS[a]=/bin/sh 配置成功,且当前环境允许执行 /bin/sh。

命令 3:export PATH=$PATH:/bin/,命令 4:export PATH=$PATH:/usr/bin/

这两条命令的核心作用是将 /bin/和 **/usr/bin/两个系统核心命令目录添加到 **PATH环境变量中 。两条命令执行后,保留 PATH 原有配置,扩展命令查找路径,让系统能直接执行这两个目录下的 ls、cp、bash 等核心命令。 同样仅在当前终端会话生效,关闭终端或重启系统后配置丢失 。

4.提权(git)

find / -user root -perm -4000 -print 2>/dev/null

这条命令的核心功能是:在整个 Linux 系统中(从根目录 **/**开始),查找所有「由 root 用户拥有」且「设置了 SUID 特殊权限(权限标识为 4000)」的可执行文件,同时将查找过程中产生的错误信息隐藏不显示,只输出符合条件的文件路径。

sudo -l

sudo -l 的核心功能是:列出当前登录用户在系统中被授权(或未被授权)执行的 sudo****命令权限,简单说就是 "查看当前用户能用 sudo****以其他用户(通常是 root)身份执行哪些命令"。

NOPASSWD::可选标识,代表执行该命令时无需输入当前用户的密码,直接执行即可

git 提权

sudo git help status

这条命令的表面功能 是:以 root****用户权限(通过 sudo****提权),查看 Git 工具中 status****子命令的详细帮助文档(包括命令用法、参数说明、示例等)。

实则不然,git help 命令在调用帮助文档时,会默认调用系统的「分页器程序」(通常是 less 或 more)来展示长篇帮助内容,less/more 这类分页器程序内置了执行 Shell 命令的功能,可以通过该功能直接提权获取 root 权限。

简单说:sudo git help status 是通过「提权执行 git 帮助」→「调用分页器 less/more」→「利用分页器执行 Shell 命令」的链路,实现权限突破。

具体操作:

  1. 终端输入 sudo git help status,会进入 less 分页器的帮助文档展示界面(此时已处于 root 权限的分页器进程中);
  2. 在 less 界面中,直接按下键盘上的 ! 键,此时终端会出现一个命令输入提示符;
  3. 输入 bash 或 /bin/sh,回车后即可直接调出root 权限的完整 Shell 终端,实现提权:

在less界面中执行(按下!后输入)

!bash # 调出root bash终端(优先选择)

!/bin/sh # 若bash不可用,调出root sh终端

相关推荐
学逆向的13 小时前
win32注入代码
开发语言·网络安全·api·win32
Web Security Loop14 小时前
MAC安装最新Burpsuite pro详细步骤教程
web安全·macos·网络安全·安全性测试
墨云安全20 小时前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
刘婉晴1 天前
【APP安全测试】Frida 基础
网络安全
科技象限1 天前
数据防泄密系统怎么选?看它怎么把几道防线叠成网
运维·安全·网络安全·安企神
sbjdhjd1 天前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
sbjdhjd2 天前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
Dachui_11222 天前
内网穿透如何限制访问地区?ZeroNews Geo Location 区域访问控制实践
运维·网络安全·内网穿透·访问控制·远程办公·api安全·ip白名单
HackTwoHub2 天前
DeepSeek Harness 红队破甲插件|适配 SRC 挖掘场景,区分平台拦截与模型原生输出,用于大模型安全边界合规测评研究
安全·web安全·网络安全·系统安全·密码学·网络攻击模型·安全架构
菩提小狗2 天前
每日安全情报报告 · 2026-10-09
网络安全·漏洞·cve·安全情报·每日安全