SSTI
Server Side Template Injection(服务端模板注入)
1 | from flask import Flask, request |
跑起来:
测试payload:
1 | <http://127.0.0.1:5000/?name=guest.{{(9999-1111)}}> |
1 | http://127.0.0.1:5000/?name=guest.{{'aaa'.upper()}} |
问题代码:
1 | t = Template("Hello " + name) |
我们把断点打在return
第一个跟进到的是asyncsupport.py
在self
变量中我们看到其实注入poc已经解析完成了{{9999-1111}}
因此我们跟进前面的
问题出在t = Template("Hello " + guest)
:
其将"Hello " + guest
传入jinja2.Template
并解析输出Hello guest.8888
再使用render
方法渲染