Jenkins文件读取漏洞拾遗(CVE-2024-23897)

💡 原文中文,约7500字,阅读约需18分钟。
📝

内容提要

Jenkins存在文件读取漏洞(CVE-2024-23897),允许未经授权访问文件。漏洞由Jenkins使用的args4j库引起,当参数以“@”开头时,自动将文件内容作为参数读取。攻击者可以通过操纵命令行参数并使用“help”和“who-am-i”命令来读取文件内容。然而,该漏洞存在一些限制,例如需要启用“Anonymous User Read”选项并且服务器的字符集需要与读取二进制文件兼容。

🎯

关键要点

  • Jenkins存在文件读取漏洞(CVE-2024-23897),允许未经授权访问文件。
  • 漏洞由Jenkins使用的args4j库引起,参数以'@'开头时会自动读取文件内容。
  • 攻击者可通过操纵命令行参数和使用'help'、'who-am-i'命令来读取文件内容。
  • 漏洞利用存在限制,需启用'Anonymous User Read'选项,且服务器字符集需与读取二进制文件兼容。
  • Jenkins命令行接口解析命令时使用args4j库,导致文件读取漏洞。
  • Jenkins的权限控制方案包括匿名用户可读、旧鉴权模式、登录用户权限等。
  • 当Jenkins开启'匿名用户可读'功能时,大部分命令可被调用,关闭时仅'help'和'who-am-i'可用。
  • 攻击者需使Jenkins返回文件内容,利用命令行参数错误返回文件内容。
  • 可以通过读取/proc/self/environ和/proc/self/cmdline获取Jenkins根目录。
  • 敏感文件包括用户信息、密码、Token等,攻击者可通过漏洞读取这些文件。
  • 用户密码以BCrypt哈希编码存储,需破解才能获取明文。
  • Remember-Me Cookie的生成与校验依赖于多个敏感文件的内容。
  • 读取二进制文件时,UTF-8字符集可能导致数据丢失,需使用兼容字符集。
  • 漏洞利用的核心限制在于'匿名用户可读'选项和服务端字符集兼容性。
➡️

继续阅读