Flask 内存马从初识到进阶 - 兼容新版 Flask 的内存马打法

💡 原文中文,约7000字,阅读约需17分钟。
📝

内容提要

本文探讨了如何利用 Flask 中的 SSTI 漏洞动态添加后门路由以执行命令。通过分析不同版本的 Flask,提供了兼容新版的 payload,简化了攻击过程,避免了反弹 shell 的复杂性,并使用 eval 执行代码注册后门路由。

🎯

关键要点

  • 本文探讨如何利用 Flask 中的 SSTI 漏洞动态添加后门路由以执行命令。
  • 反弹 shell 复杂性高,且需要公网服务器,常常受到环境限制。
  • 内存马是动态修改 Flask 服务端逻辑,添加后门路由以执行命令。
  • 可以通过 SSTI 或其他 RCE 漏洞,使用 eval 执行代码注册后门路由。
  • Flask 的路由表可以在运行时动态修改,使用 app.add_url_rule 添加路由。
  • 新版 Flask 中,app.add_url_rule 不能在处理第一个请求后调用。
  • 需要将 app._got_first_request 修改为 False,以便继续添加新的路由。
  • 编写 payload 时,可以使用 gc 模块遍历 Python 中的所有对象以找到 app 对象。
  • payload 可以通过 eval 执行,支持 SSTI 和其他方式。
  • 提供了一个压缩的 payload 示例,加载时会延时 3 秒以确认成功。
  • 可以使用 fenjing 生成绕过 WAF 的 payload。
  • 本文仅供技术研究与讨论,严禁用于非法用途,违者后果自负。
➡️

继续阅读