Vulnhub-DarkHole 1

水平越权+文件上传+环境变量提权

靶机下载地址 点击跳转

靶机下载后用vm打开,保持开启状态就好

Kali和靶机同为桥接模式,所在网段为192.168.13.0/24

照例使用nmap探测存活主机,判断靶机ip地址

192.168.13.87为靶机ip

nmap -sS -sV 192.168.13.87 详细探测开放端口

wps94

wps95

开放http服务的80端口和ssh 22号端口

访问 http://192.168.13.87:80/ login登录

wps96

Dirsearch 目录遍历

wps97

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

wps98

wps99

登录后发现,URL :id=2

尝试能否直接修改id

wps100

wps101

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

wps102

wps103

返回修改成功

现在知道id为1的用户,密码为:123123,尝试爆破用户名

wps104

用户名:admin 密码:123123

wps105

成功登录 id=1的账号

wps106

有文件上传点,php一句话木马上传

做了文件校验

wps107

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

wps108

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

wps109

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

wps110

wps111

蚁剑连接成功

wps112

新建反弹shell 脚本

text.php

wps113

Kali开启监听

nc -lvvp 6666

wps114

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

wps115

成功监听到

wps116

寻找可以提权的用户:

cat /etc/passwd | grep /bin/bash

wps117

进入darkhole 与 john用户家目录

wps118

wps119

发现john用户下有可疑文件

wps120

只有toto 文件有权限运行,运行一下 toto 文件,发现它以 john 用户的身份运行类似 id 的命令。使用该文件提权:(环境变量提权)

  1. 在本地编辑新的 id 文件,写入 /bin/bash,给执行权限。

  2. 然后将文件路径写入到原有环境变量前,这样使用 id 命令时就会优先匹配此路径下的 id 文件运行。

  3. 所以运行 toto 文件使用 john 身份调用 id 命令,实际上就是使用 john 身份调用 id 文件运行,即可获得 john 的 shell。

wps121

创建一个新 id 文件:

echo '/bin/bash' > /tmp/id

赋予权限:

chmod +x /tmp/id

改变环境变量:

export PATH=/tmp:$PATH

再次运行 ./toto 文件 获得john 权限。

wps122

此时有权限查看 password和user文件

第一个flag:DarkHole{You_Can_DO_It}

获得密码为:root123,使用john 账户登录。开启22端口,ssh连接

wps123

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

wps124

看到 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

wps125

回到 / 目录下

wps126

可以查看 root.txt 文件

第二个flag:DarkHole{You_Are_Legend}

参考解题:https://www.cnblogs.com/GCom/p/17694330.html