Vulnhub-DarkHole 1
水平越权+文件上传+环境变量提权
靶机下载地址 点击跳转
靶机下载后用vm打开,保持开启状态就好
Kali和靶机同为桥接模式,所在网段为192.168.13.0/24
照例使用nmap探测存活主机,判断靶机ip地址
192.168.13.87为靶机ip
nmap -sS -sV 192.168.13.87 详细探测开放端口


开放http服务的80端口和ssh 22号端口
访问 http://192.168.13.87:80/ login登录

Dirsearch 目录遍历

先尝试看看注册新用户,用户名:123、密码:123、邮箱:123@163.com


登录后发现,URL :id=2
尝试能否直接修改id


被拦截了,有做水平越权拦截。尝试抓包,提交修改密码请求


返回修改成功
现在知道id为1的用户,密码为:123123,尝试爆破用户名

用户名:admin 密码:123123

成功登录 id=1的账号

有文件上传点,php一句话木马上传
做了文件校验

修改后缀,上传成功。找到上传位置

查看上传的文件,发现没有被解析

Upload/ 为上传路径。后经过多次尝试,phtml文件可以被解析


蚁剑连接成功

新建反弹shell 脚本
text.php

Kali开启监听
nc -lvvp 6666

蚁剑虚拟终端执行php反弹shell

成功监听到

寻找可以提权的用户:
cat /etc/passwd | grep /bin/bash

进入darkhole 与 john用户家目录


发现john用户下有可疑文件

只有toto 文件有权限运行,运行一下 toto 文件,发现它以 john 用户的身份运行类似 id 的命令。使用该文件提权:(环境变量提权)
-
在本地编辑新的 id 文件,写入 /bin/bash,给执行权限。
-
然后将文件路径写入到原有环境变量前,这样使用 id 命令时就会优先匹配此路径下的 id 文件运行。
-
所以运行 toto 文件使用 john 身份调用 id 命令,实际上就是使用 john 身份调用 id 文件运行,即可获得 john 的 shell。

创建一个新 id 文件:
echo '/bin/bash' > /tmp/id
赋予权限:
chmod +x /tmp/id
改变环境变量:
export PATH=/tmp:$PATH
再次运行 ./toto 文件 获得john 权限。

此时有权限查看 password和user文件
第一个flag:DarkHole{You_Can_DO_It}
获得密码为:root123,使用john 账户登录。开启22端口,ssh连接

查看john用户能执行的sudo命令

看到 john 用户可以以管理员身份运行 /home/john/file.py。那么只要通过此文件执行获取 shell,即可获得管理员权限。
1.将获取 shell 的命令加入到此 python 文件。
echo 'import os;os.system("/bin/bash")' > file.py
2.以管理员身份执行即可。
sudo python3 /home/john/file.py

回到 / 目录下

可以查看 root.txt 文件
第二个flag:DarkHole{You_Are_Legend}
浙公网安备 33010602011771号