iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 模板引擎的注入问题分析
  • 842
分享到

Python 模板引擎的注入问题分析

模板引擎Python 2022-06-04 18:06:27 842人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这几年比较火的一个漏洞就是jinjia2之类的模板引擎的注入,通过注入模板引擎的一些特定的指令格式,比如 {{1+1}} 而返回了 2 得知漏洞存在。实际类似的问题在python原生字符串中就存在,尤其是P

这几年比较火的一个漏洞就是jinjia2之类的模板引擎的注入,通过注入模板引擎的一些特定的指令格式,比如 {{1+1}} 而返回了 2 得知漏洞存在。实际类似的问题在python原生字符串中就存在,尤其是Python 3.6新增 f 字符串后,虽然利用还不明确,但是应该引起注意。

最原始的 %


userdata = {"user" : "jdoe", "passWord" : "secret" }
passwd = raw_input("Password: ")

if passwd != userdata["password"]:
  print ("Password " + passwd + " is wrong for user %(user)s") % userdata

如果用户输入 %(password)s 那就可以获取用户的真实密码了。

format方法相关

https://docs.python.org/3/library/functions.html#fORMat

除了上面的payload改写为 print ("Password " + passwd + " is wrong for user {user}").format(**userdata) 之外,还可以


>>> import os
>>> '{0.system}'.format(os)
'<built-in function system>'

会先把 0 替换为 format 中的参数,然后继续获取相关的属性。

但是貌似只能获取属性,不能执行方法?但是也可以获取一些敏感信息了。

例子: Http://lucumr.pocoo.org/2016/12/29/careful-with-str-format/


CONFIG = {
  'SECRET_KEY': 'super secret key'
}

class Event(object):
  def __init__(self, id, level, message):
    self.id = id
    self.level = level
    self.message = message

def format_event(format_string, event):
  return format_string.format(event=event)

如果 format_string 为 {event.__init__.__globals__[CONFIG][SECRET_KEY]} 就可以泄露敏感信息。

Python 3.6中的 f 字符串

这个字符串非常厉害,和javascript es6中的模板字符串类似,有了获取当前context下变量的能力。

https://docs.python.org/3/reference/lexical_analysis.html#f-strings


>>> a = "Hello"
>>> b = f"{a} World"
>>> b
'Hello World'

而且不仅仅限制为属性了,代码可以执行了。


>>> import os
>>> f"{os.system('ls')}"
bin   etc   lib   media  proc   run   srv   tmp   var
dev   home   linuxrc mnt   root   sbin   sys   usr
'0'

>>> f"{(lambda x: x - 10)(100)}"
'90'

但是貌似 没有 把一个普通字符串转换为 f 字符串的方法,也就是说用户很可能无法控制一个 f 字符串,可能无法利用,还需要继续查一下。

--结束END--

本文标题: Python 模板引擎的注入问题分析

本文链接: https://www.lsjlt.com/news/13857.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript模板引擎实例分析
    本篇内容主要讲解“javascript模板引擎实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript模板引擎实例分析”吧! ...
    99+
    2024-04-02
  • springboot中Thymeleaf模板引擎的示例分析
    这篇文章给大家分享的是有关springboot中Thymeleaf模板引擎的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。模板引擎springboot我们目前是以jar包的形式打包,实际上我们之前是打成w...
    99+
    2023-06-29
  • SpringBoot引入模板引擎实现视图解析
    目录视图解析1. 视图解析方式2. 使用3. 原理视图解析 SpringBoot 不支持 JSP,需要引入第三方模板引擎进行技术进行页面渲染 1. 视图解析方式 转发、重定向以及自定...
    99+
    2024-04-02
  • nodejs前端模板引擎swig的示例分析
    这篇文章主要为大家展示了“nodejs前端模板引擎swig的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs前端模板引擎swig的示例分析”这...
    99+
    2024-04-02
  • 基于Node.js模板引擎jade的示例分析
    这篇文章主要为大家展示了“基于Node.js模板引擎jade的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于Node.js模板引擎jade的示例分析...
    99+
    2024-04-02
  • node前端模板引擎Jade之标签的写法分析
    这篇文章主要为大家展示了“node前端模板引擎Jade之标签的写法分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“node前端模板引擎Jade之标签的写法分析...
    99+
    2024-04-02
  • SpringBoot+Thymeleaf基于HTML5现代模板引擎的示例分析
    这篇文章主要介绍了SpringBoot+Thymeleaf基于HTML5现代模板引擎的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。开始使用1.引入依赖SpringB...
    99+
    2023-05-31
    springboot thymeleaf html5
  • js模板引擎art template数组渲染的示例分析
    这篇文章主要介绍js模板引擎art template数组渲染的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是art-templateart-template 是一个简约...
    99+
    2024-04-02
  • Node.js的路由、EJS模板引擎、GET和POST请求实例分析
    本篇内容介绍了“Node.js的路由、EJS模板引擎、GET和POST请求实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、路由官方...
    99+
    2023-07-02
  • Node.js 模板引擎的奥秘:深入浅出,拨云见日
    ...
    99+
    2024-04-02
  • python模块引入问题如何解决
    这篇文章主要介绍“python模块引入问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python模块引入问题如何解决”文章能帮助大家解决问题。1.pycharm运行python脚本的过程...
    99+
    2023-07-05
  • C++模板>>编译问题举例分析
    本篇内容主要讲解“C++模板>>编译问题举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++模板>>编译问题举例分析”吧!在编译理论中,通常将编译过程抽象为5个主...
    99+
    2023-06-17
  • Node.js 模板引擎的内幕:剖析机制,识破玄机
    ...
    99+
    2024-04-02
  • 解决SpringBoot引用别的模块无法注入的问题
    目录引用别的模块无法注入的问题问题描述解决方法多模块项目中无法注入其他模块的springbean引用别的模块无法注入的问题 前段时间尝试着利用空闲时间搭建了一个IIM消息通信系统,目...
    99+
    2024-04-02
  • python模块引入问题和解决方案
    目录1.pycharm运行python脚本的过程2.python命令运行python脚本常见模块引入问题3.python命令运行python脚本模块引入问题的解决方案3.1模块和当前...
    99+
    2023-03-09
    python模块引入
  • pymysql解决sql注入问题的示例分析
    这篇文章将为大家详细讲解有关pymysql解决sql注入问题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. SQL 注入SQL 注入是非常常见的一种网络攻击...
    99+
    2024-04-02
  • 踏入 Node.js 模板引擎的迷宫:探索未知,揭开奥秘
    ...
    99+
    2024-04-02
  • 关于rust的模块引入问题
    目录Rust语言的特点Rust的应用worker.rs文件,简单看一下student.rs看一下teacher.rs看一下第一部分是一个绝对路径的引入第二部分是相对路径的引入第三部分...
    99+
    2024-04-02
  • Python Django 模板引擎解密:让你的网页焕发生机
    Django 模板引擎是 Django Web 框架中一个强大的工具,它允许你分离业务逻辑和表示层。通过使用模板,你可以轻松地创建和渲染动态 HTML 页面,从而简化 Web 开发过程。 模板语法基础 Django 模板使用一种简单易学的...
    99+
    2024-04-02
  • nodejs中art-template模板语法引入及冲突的示例分析
    小编给大家分享一下nodejs中art-template模板语法引入及冲突的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用Webstorm创建nodejs express应用时...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作