Jenkins Arbitrary File Read to RCE via "Remember Me"
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
在这篇博客文章中,可以找到将 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
令牌准备
计算令牌过期时间:
连接令牌数据:
MAC 密钥解密
解密 MAC 密钥文件:
签名计算
计算 HMAC SHA256:
Cookie 编码
生成最终 Cookie:
会话认证
获取 CSRF 和会话令牌:
向 /crumbIssuer/api/json
发出请求以获取 Jenkins-Crumb
。
从响应中捕获 JSESSIONID
,该 ID 将与记住我 cookie 一起使用。
命令执行请求
发送带有 Groovy 脚本的 POST 请求:
Groovy 脚本可用于在 Jenkins 环境中执行系统级命令或其他操作。
提供的示例 curl 命令演示了如何使用必要的头和 cookie 向 Jenkins 发出请求,以安全地执行任意代码。
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)