【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绕过技术通过回显内容的真假进行爆破,从而实现对防火墙的绕过。

➡️

继续阅读