MrRobot靶机渗透
免责声明
重要提醒:本文档/文章仅限于合法的学习与研究目的,严禁用于任何非法、违规或损害他人权益的活动
本文档所有技术演示仅在本地虚拟机环境中进行,不涉及任何真实在线系统或商业游戏。作者不对任何读者因误用本文内容而引发的账号封禁、数据丢失、法律追责或其他后果承担任何责任。
如本文无意中涉及任何可被滥用的技术细节,纯属客观描述现有公开机制,不提供可执行方案,也不承担后续责任。
阅读/使用本文即表示您已完全理解并同意以上条款。如不同意,请立即停止阅读。
信息搜集
扫网段和端口:
nmap -sn 10.144.71.0/24
nmap -sV -p- -T5 10.144.71.233
开了22,80,439三个端口,看80端口,刚开的时候其实有点懵:

跟虚拟终端一样,然后就只能运行这么几个命令,而且2/3是视频,每个都敲了一遍没找到什么可以利用的点,上dirsearch,发现速度有点慢,那就让它自己慢慢扫着,我们尝试一下常见的路径,这里robots.txt很容易出来
fsocity.dic
key-1-of-3.txt
很明显第一个key就这么出来了,然后再看另一个,给了一大堆东西,看着像是字典一样的,可能就是为后续爆破做准备的,先下载到kali中【这里推荐kali打开复制然后粘贴,物理机上粘贴之后kali里面编辑会卡死】

扫出来了WP的页面,看了一遍好像只有登录进去之后才行,随便输入一下,有相应显示:

竟然先判断账户对不对,那么我们就先把账户给搞出来,我先用wpscan尝试了一下:
wpscan --url http://10.144.71.233/wp-login.php -enumerate u
账户爆破
但是没有找到啥账户,那么就上之前我们拿到的字典开始爆破,先爆破用户名即可,BP里面运行:

爆破得到Elliot【小写也可以】
再后面就是爆破密码了,这里我的是wpscan爆破,BP里面太慢了,但是也爆破了差不多半小时:

获取shell
进去之后先看了一下Users,发现还有一个mich05654,而且个人简介那边还写了:

不知道有没有用,而且这里可以直接更改密码,改个123456登录一下看了一下好像没啥用,那就还是在elliot这里找线索。
目录翻了一遍之后看到可以执行PHP代码的地方:

方便一点的话可以直接用kali里面的反弹shell脚本:
cd /usr/share/webshells/php
cat php-reverse-shell.php
只要修改ip和端口就行了,脚本里面也注明了修改的地方,后面再访问http://10.144.71.233/wp-admin/404.php回到kali中即可看到反弹成功:

后渗透
接下来还是找剩下两个key文件,在家目录下有一个robot

里面有两个文件,一个是key,另一个看着像密码,但是直接看key提示无权访问,那么只能看另一个md5文件:
robot:c3fcd3d76192e4007dfb496cca67e13b
在线网站解密一下:

解密出来是这么一串:
abcdefghijklmnopqrstuvwxyz
应该是密码吧,切换用户看一下:

确实是这样,那么最后一个便是提权才能看到了吧,看下SUID:

这里nmap竟然有权限,具体看一眼:
ls -la /usr/local/bin/nmap
-rwsr-xr-x 1 root root 504736 Nov 13 2015 /usr/local/bin/nmap
是root,看一下帮助看看参数版本啥的:

3.8.1,然后还有一个interactive,我记得好像之前做到过,但是用的是别,网上搜一搜有关的,找到这么一篇文章
文章直接具体描述了利用方式,所以这里就尝试直接执行

拿到最后一个key:

复盘
感觉这次写的有点水
这次靶机难度其实一般,没有那么多弯弯绕绕,但有一个重点是当我们拿到有86w的字典时,如果直接进行爆破的话需要很久,并且可能字典中有很多重复的,那我们如何对这个大字典进行去重精简呢,我们可以输入以下命令:
grep -P '^[[:print:]]+$' pass.txt | awk '!seen[$0]++' > pass_clean.txt
- 第一部分:
grep -P '^[[:print:]]+$' pass.txt
作用:从 pass.txt 中筛选出纯可打印字符的行,过滤掉乱码、二进制内容、中文等。
| 符号 | 含义 |
|---|---|
| grep | 文本过滤命令 |
| -P | 使用 Perl 正则引擎(支持更高级的写法) |
| ^ | 匹配行首 |
| [[:print:]] | POSIX 字符类,代表所有可打印字符(字母、数字、标点、空格) |
| + | 前面的字符出现 1 次或多次(确保不是空行) |
| $ | 匹配行尾 |
| pass.txt | 要处理的文件 |
- 第二部分:
awk '!seen[$0]++'
作用:保留原始顺序的前提下去除重复行。
| 部分 | 含义 |
|---|---|
| awk | 文本处理语言/工具 |
| seen | 一个关联数组(类似于 Python 的字典),名字可以随便取 |
| $0 | 当前读到的整行内容 |
| !seen[$0]++ | 核心逻辑 |
对于每一行内容 $0:
第一次出现时:
seen[$0] 初始值为 0(未定义视为0)
!seen[$0] → !0 → 真
执行默认动作:print $0(打印该行)
seen[$0]++ → 值变为 1
第二次出现时:
seen[$0] 值为 1
!seen[$0] → !1 → 假
不打印
seen[$0]++ → 值变为 2
第三次出现时:
seen[$0] 值为 2
!seen[$0] → 假
不打印
- 第三部分:> pass_clean.txt
即重定向输出
然后我们再打开文件看一下,可以发现只有11451行了,那拿这个进行爆破的话效率肯定高:

总结
终于水完了,感觉不应该打这台的
总之本次靶机对字典去重的一个深入了解,再回顾了kali中的反弹shell脚本的具体利用.后面我又尝试了在Media里面传图片马,这里应该是白名单后缀,服务器还会对上传的图片进行一次渲染,但我用渲染过后的图片再跑一次脚本生成图片马之后再上传不知道为啥还是不行,蚁剑连接不了,并发这里因为是数字递增我也没尝试成功,那这次靶机到这里就结束了,下一次打Funbox,再往后就要上内网了,任重而道远😔

浙公网安备 33010602011771号