|attr 过滤器绕过实现 Python SSTI# vulnerable_app.py - Flask with Jinja2 SSTI via 'attr' filter
from flask import Flask, request, render_template_string
app = Flask(__name__)
@app.route('/')
def index():
name = request.args.get('name', 'World')
# UNSAFE: directly renders user input as template
template = f"<h1>Hello {name}!</h1>"
return render_template_string(template)
if __name__ == '__main__':
app.run(port=5000)
|attr 过滤器实现服务端模板注入一个 Flask 应用将用户输入传递给 render_template_string,从而导致服务端模板注入。即使部分关键字被屏蔽,|attr 过滤器仍可用于绕过过滤器并实现远程代码执行。
pip install flask
python vulnerable_app.py
python exploit_ssti_attr.py