python flask ssti学习笔记

访客3年前黑客资讯506

python flask ssti学习笔记

学ssti就像是对python原理的一层深入探索,入口很简单,就是用户输入未经过滤便被服务器模板渲染,将其当作变量解析替换,从而达到读取文件或者执行命令等目的

简单示范

漏洞代码:

以上代码存在ssti漏洞点在于render_template_string函数在渲染模板的时候使用了%s来动态的替换字符串,我们知道Flask 中使用了Jinja2 作为模板渲染引擎,{{}}在Jinja2中作为变量包裹标识符,Jinja2在渲染的时候会把{{}}包裹的内容当做变量解析替换。

简单验证

image-20200202201526733

服务器将{{}}的内容直接执行后返回了结果

image-20200202201646169

直接返回出配置变量值,存在敏感信息

入门操作

爆全局变量

任意文件读取

ctf题目中大多数是需要读取flag或者读取其他源码的

接下来利用一些骚操作读取文件吧

python中,不用引入直接使用的内置函数称为 builtin 函数,例如我们通常用的open,chr,ord等等

image-20200217204039400

利用关键字寻找与读文件有关的类

Python2

image-20200202205202185

这不是我们很熟悉的file吗,直接用就好了

image-20200202205714666

或者让我们更加深入一点

python2没有ipython,输出比较混乱我们用python3的相同类替代分析下

image-20200202213634563

Python3

同上,可以找出不少读取文件的类,只是这里file变成了open函数

image-20200202213801294

随便找一个

image-20200202213914313

命令执行

利用函数导入os库执行命令

利用本身已经导入os库的类执行命令

利用执行命令

利用执行命令

Python2

利用eavl函数执行命令

先寻找含有eval函数的类

image-20200203101525355

利用本身导入os库的类执行命令

寻找含有os库的类

image-20200203101951477

剩下的两个 ***

查看 *** 的位置

查看的位置

查找模块的位置

查找 *** 的位置(在这里使用可以实现一样的效果,步骤一样,不再复述)

调用 ***

利用commands 进行命令执行

Python3

利用eavl函数执行命令

先寻找含有eval函数的类

image-20200203103031827

利用本身导入os库的类执行命令

寻找含有os库的类

image-20200203101951477

过滤绕过 ***

过滤中括号

过滤引号,过滤class等关键字

是flask中的一个属性,为返回请求的参数,这里把当作变量名,将后面的路径传值进来,进而绕过了引号的过滤

image-20200203113035142

image-20200203113319817

过滤或或

过滤关键字

base64编码绕过

使用实例访问属性时,调用该 ***

例如被过滤掉关键词

字符串拼接绕过

利用hex编码,base64编码,[::-1]等绕过关键词过滤

过滤花括号

使用{% if ... %}1{% endif %}

利用声明变量和内置过滤器

以下 *** 仅在jinja2中实验成功

声明变量

在模板中添加变量,可以使用(set)语句。

语句来创建一个内部的作用域,将语句放在其中,这样创建的变量只在代码块中才有效

image-20200826105403681

变量可以用链接

image-20200826111256677

内置过滤器

变量可以通过 过滤器修改。过滤器与变量用管道符号分割,并且也 可以用圆括号传递可选参数。多个过滤器可以链式调用,前一个过滤器的输出会被作为 后一个过滤器的输入。

例如会移除 name 中的所有 HTML 标签并且改写 为标题样式的大小写格式。

过滤器接受带圆括号的参数,如同函数调用。这个例子会 把一个列表用逗号连接起来:。

image-20200826105902303类似于php中的过滤器,过滤器种类太多,具体项目我复制到另一个文档里了

https://jinja.palletsprojects.com/en/master/templates/#builtin-filters

image-20200826110425905

几个例子

image-20200826110847935

image-20200826111140399

绕过过滤

image-20200826111335097

我们可以利用过滤器构造任意的字符

首先利用属性弄出字符来(没有可以用别的)

image-20200826111702443

结合一些普通 *** ,截取字符,例如单引号:

image-20200826111851168

相关文章

黑客帮忙找手机定位-黑客能力(黑客能力有多大)

黑客帮忙找手机定位-黑客能力(黑客能力有多大)

黑客帮忙找手机定位相关问题 黑客价格划分相关问题 怎么知道你的手机是否被黑客控制过 2011黑客ko是谁(adamts13是什么)...

如何找黑客查看她的微信聊天记录吗(黑客查看微信聊天记录)

1在微信主接口中切换至”设置“选项卡,然后在打开的接口中找到并点击“通用”选项菜单。此时就会进行“通用+Q”设置必要,那还是+邱400合12连。 只需要下一个数据恢复工具到电脑上就可以开始恢复了:首先...

免费微信聊天记录监控 无死角监视别人手机微信活动-免费接单黑客

免费微信聊天记录监控 无死角监视别人手机微信活动-免费接单黑客 微博的「已读」功能下线了。 我想起奇葩说以前有一期讨论“时保联是不是暴政”,陈咏开说:其实真正的暴政是「已读不回」。时保联至少...

新型安卓病毒GhostPush来袭:自动下载安装应用

我国网络病毒应急处理管理中心根据对互联网技术的检测发觉,最近一种感柒安卓机的病原体a.expense.GhostPush.a出現,众多安卓机客户应当心严防。 该病毒是一款消息推送运用类病毒,开机自启...

近期热门影戏下载:《希特勒回来了》《陀地驱魔人》《鬼乡》

最近被炒上热门,具有话题度的影戏不少 挑选了几部对照有影响力,剧情还不错的 影戏荒的同伙周末可以下载看看,消磨下时间 —– 《希特勒回来了》 磁力链接: magnet:?xt=ur...

网络黑客可以帮忙追回被骗的钱吗(网络黑客联系方式)

网络黑客可以帮忙追回被骗的钱吗(网络黑客联系方式)

  不可以!   这样简单粗暴的回答,肯定是没有说服力的。   作为认真反诈的黑白呸,一定要给大家说出个123来   如果你想搞清楚为什么,请划动你可爱的小手继续看下去   追回被骗的钱,是每一个受害...