【CTF】Flask SSTI姿势与手法总结 Cheatsheet速查表
💡
原文中文,约11600字,阅读约需28分钟。
📝
内容提要
SSTI(服务端模板注入)发生在MVC框架的视图层,利用用户输入执行恶意代码,可能导致信息泄露和代码执行。本文总结了Flask中SSTI的利用方式,包括获取类和函数、执行命令等,提供了示例和脚本,以帮助理解和防范此类攻击。
🎯
关键要点
- SSTI(服务端模板注入)发生在MVC框架的视图层,利用用户输入执行恶意代码。
- SSTI可能导致信息泄露、代码执行和GetShell等问题。
- 本文总结了Flask中SSTI的利用方式,包括获取类和函数、执行命令等。
- 通过访问Python内部属性,可以获取可执行命令的库和函数。
- 使用__globals__属性可以访问当前空间下的模块、方法和变量。
- 获取object类的方式包括__mro__和__bases__。
- 可以通过__subclasses__()方法获取所有子类列表。
- 信息泄露的示例包括泄漏环境变量和配置。
- 文件读取和写入的示例展示了如何利用SSTI进行敏感文件操作。
- 内存马的实现方式包括使用add_url_rule和before_request_funcs等。
- WAF绕过技术通过回显内容的真假进行爆破。
- 提供了示例脚本用于自动化SSTI攻击。
- 文中提到的技术信息仅供参考,读者需谨慎使用并遵守相关法律法规。
❓
延伸问答
什么是SSTI?
SSTI(服务端模板注入)是在MVC框架的视图层中,利用用户输入执行恶意代码的攻击方式。
SSTI可能导致哪些安全问题?
SSTI可能导致信息泄露、代码执行和获取Shell等安全问题。
如何在Flask中利用SSTI进行攻击?
可以通过访问Python内部属性,获取可执行命令的库和函数,利用__globals__属性执行命令。
如何防范SSTI攻击?
防范SSTI攻击的关键在于对用户输入进行严格的验证和过滤,避免直接将用户输入用于模板渲染。
SSTI攻击中常用的Python属性有哪些?
常用的Python属性包括__mro__、__bases__、__globals__等,这些属性可以帮助获取类和函数信息。
WAF绕过技术在SSTI攻击中如何应用?
WAF绕过技术通过回显内容的真假进行爆破,从而实现对防火墙的绕过。
➡️