这几年比较火的一个漏洞就是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小时内与您取得联系。