SSTI tricks
利用思路
- Read
- Template syntax
- Security documentation
- Documented exploits
- Explore the environment
- Create a custom attack
常用探测语句
1.模板类型识别
${7*7}
a{*comment*}b
${"z".jion("ab")}
{{7*7}}
{{7*'7'}}
补充:
ERB : <%= 7*7%>
详见labs/ERB.md
Tornado :
Mako 和 Tornado 在 SSTI 利用上是“姊妹”关系,它们的利用哲学和威力几乎一模一样。最大的区别只是语法标签的不同(${}
vs {{ }}
, <% %>
vs {% %}
)。一旦
识别出目标是 Mako 模板,就可以运用和 Tornado 相同的直接代码执行思路来利用它,这比对付 Jinja2 要简单得多。
2.
in Java-based templating languages, you can sometimes list all variables in the environment using the following injection:
${T(java.lang.System).getenv()}
参考文档:https://portswigger.net/web-security/server-side-template-injection/exploiting