全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

这几年比较火的一个漏洞就是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 字符串,可能无法利用,还需要继续查一下。


# python  # 模板注入  # 模板引擎  # python模板引擎  # Python实现的简单模板引擎功能示例  # Python的Flask框架标配模板引擎Jinja2的使用教程  # 深入解析Python的Tornado框架中内置的模板引擎  # 为Python的Tornado框架配置使用Jinja2模板引擎的方法  # Python的Flask框架中的Jinja2模板引擎学习教程  # Python Web开发模板引擎优缺点总结  # 如何用python写个模板引擎  # 还可以  # 尤其是  # 那就  # 还不  # 很可能  # 还需要  # 回了  # 先把  # 这几年  # 转换为  # 中就  # 一个普通  # 就可以  # 最原始  # 而返  # 也就是说  # library  # html  # payload  # functions 


相关文章: 制作企业网站建设方案,怎样建设一个公司网站?  如何快速完成中国万网建站详细流程?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何确保西部建站助手FTP传输的安全性?  电商平台网站制作流程,电商网站如何制作?  如何快速启动建站代理加盟业务?  建站之星2.7模板快速切换与批量管理功能操作指南  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  建站之家VIP精选网站模板与SEO优化教程整合指南  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速生成凡客建站的专业级图册?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  详解jQuery停止动画——stop()方法的使用  建站之星在线客服如何快速接入解答?  TestNG的testng.xml配置文件怎么写  网站制作报价单模板图片,小松挖机官方网站报价?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何在腾讯云免费申请建站?  如何零基础开发自助建站系统?完整教程解析  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  网页设计与网站制作内容,怎样注册网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  家具网站制作软件,家具厂怎么跑业务?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何快速搭建二级域名独立网站?  官网建站费用明细查询_企业建站套餐价格及收费标准指南    如何选择高效可靠的多用户建站源码资源?  如何在IIS管理器中快速创建并配置网站?  教程网站设计制作软件,怎么创建自己的一个网站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  已有域名如何快速搭建专属网站?  如何在企业微信快速生成手机电脑官网?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  文字头像制作网站推荐软件,醒图能自动配文字吗?  javascript中对象的定义、使用以及对象和原型链操作小结  佛山企业网站制作公司有哪些,沟通100网上服务官网?  实例解析angularjs的filter过滤器  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  平台云上自助建站如何快速打造专业网站?  行程制作网站有哪些,第三方机票电子行程单怎么开?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何在建站之星绑定自定义域名?  如何正确选择百度移动适配建站域名?  建站之星后台密码遗忘如何找回? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。