SSTI模板注入与flask基础

humbie   ·   发表于 2022-10-24 16:02:37   ·   学习杂记

SSTI服务端模板注入:

模板使用过程:
服务端 -> 模板文件 ->模板引擎 ->用户端。

flask是python上的web应用程序框架,可以让web程序开发人员在能够忽略底层协议和线程管理的情况下编写web应用程序。
flask基于Werkzeug WSGI工具包和jinja2模板引擎。
SSTI注入漏洞主要出现于jinja2模板引擎。
二次渲染:把网页模板中的一些可以改变的参数和控制语句确定。(通过渲染改变模板未确定的内容)

传参语句:{{ … }}
控制语句:{% … %}
注释:{# … #}
传参就是让二次渲染获得到要确定的值进行执行。
通过构造传参如:{{2*2}}的形式探测返回值(如同SQL)
(但是可能会被过滤。)
构造payload时一般是通过将传参改为具体函数。

[护网杯 2018]easy_tornado
这个题就是SSTI的简单例子。前面不赘述了(hint里告诉了是文件名和cookie_secret的md5)主要是找cookie_secret。
(题目中有render和tornado,就是提示SSTI)
tornado是web应用框架和模板相关。render是tornado里的函数,可以生成html模板,是一个渲染函数。
传参值是msg是先在网页传参中试这改传参{{1}},发现error后传参是msg。
上网搜索cookie_secret发现他存在于Tornado框架的附属文件handler.settings。
直接msg={{handler.settings}},看到cookie_secret。即可获得值,然后根据前面规则获得flag。

打赏我,让我更有动力~

0 条回复   |  直到 2022-10-24 | 310 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.