Jenkins Arbitrary File Read to RCE via "Remember Me"
在这篇博客文章中,可以找到将 Jenkins 中的本地文件包含漏洞转化为 RCE 的绝佳方法:https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
这是一个 AI 创建的摘要,内容涉及如何利用任意 cookie 来获取 RCE,直到我有时间自己创建摘要为止:
攻击前提
功能要求: 必须启用“记住我”(默认设置)。
访问级别: 攻击者需要整体/读取权限。
秘密访问: 能够读取关键文件中的二进制和文本内容。
详细利用过程
第一步:数据收集
用户信息检索
访问每个用户的用户配置和秘密,位于
$JENKINS_HOME/users/*.xml
,以收集:用户名
用户种子
时间戳
密码哈希
密钥提取
提取用于签名 cookie 的加密密钥:
秘密密钥:
$JENKINS_HOME/secret.key
主密钥:
$JENKINS_HOME/secrets/master.key
MAC 密钥文件:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
第二步:Cookie 伪造
令牌准备
计算令牌过期时间:
连接令牌数据:
MAC 密钥解密
解密 MAC 密钥文件:
签名计算
计算 HMAC SHA256:
Cookie 编码
生成最终 Cookie:
第三步:代码执行
会话认证
获取 CSRF 和会话令牌:
请求
/crumbIssuer/api/json
以获取Jenkins-Crumb
。从响应中捕获
JSESSIONID
,该 ID 将与记住我 cookie 一起使用。
命令执行请求
发送带有 Groovy 脚本的 POST 请求:
Groovy 脚本可用于在 Jenkins 环境中执行系统级命令或其他操作。
提供的示例 curl 命令演示了如何使用必要的头和 cookie 向 Jenkins 发出请求,以安全地执行任意代码。
Last updated