Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-35517 — Scripts de detección para Pi-hole FTLDNS RCE (CVE-2026-35517) mediante inyección de nueva línea, incluyendo un escáner en Python y un script Nmap NSE para la evaluación de vulnerabilidades basada en versiones. | Kitploit
Herramientas/GitHubGitHub/keraattin/cve-2026-35517
Escáneres de VulnerabilidadesExplotaciónRecopilación de InformaciónSeguridad WebSeguridad de RedesPruebas de Penetración
GitHubkeraattin/cve-2026-35517

CVE-2026-35517

Scripts de detección para Pi-hole FTLDNS RCE (CVE-2026-35517) mediante inyección de nueva línea, incluyendo un escáner en Python y un script Nmap NSE para la evaluación de vulnerabilidades basada en versiones.

Ver Repositorio
hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-35517 - Ejecución Remota de Código en Pi-hole FTLDNS mediante Inyección de Nueva Línea

CVE-2026-35517 CVSS 8.8 CWE-93 FTLDNS 6.0-6.5

TL;DR

Una vulnerabilidad de Ejecución Remota de Código en el motor FTLDNS de Pi-hole (versiones 6.0 a 6.5) permite a un atacante autenticado inyectar directivas de configuración arbitrarias de dnsmasq mediante la inserción de caracteres de nueva línea (\n) en el parámetro de API dns.upstreams. Dado que dnsmasq admite directivas que ejecutan comandos de shell, esta inyección de nueva línea se traduce directamente en ejecución completa de comandos en el sistema host.

Esto no es solo un error aislado, es una clase de inyección que afecta a , todos parcheados juntos en FTL v6.6.

cinco parámetros de configuración diferentes

Tabla de Contenidos

  • Datos Rápidos
  • ¿Qué es Pi-hole FTLDNS?
  • Análisis Profundo de la Vulnerabilidad
    • Entendiendo la Arquitectura
    • El Punto de Inyección
    • De Nueva Línea a Shell — La Cadena de Ataque
    • La Familia Completa — Cinco Vectores de Inyección
  • Análisis de Impacto
  • Versiones Afectadas
  • ¿Quién Está en Riesgo?
  • Detección
    • Escáner Python
    • Script Nmap NSE
    • Verificación Manual de Versión
  • Indicadores de Compromiso
  • Remediación
  • Referencias
  • Autor

Datos Rápidos

CampoDetalle
ID CVECVE-2026-35517
ProveedorProyecto Pi-hole
ProductoFTLDNS (pihole-FTL)
Versiones Afectadas6.0 a < 6.6
CVSS v3.18.8 (Alta)
CWECWE-93 — Neutralización Incorrecta de Secuencias CRLF
Vector de AtaqueRed
AutenticaciónRequerida (acceso admin/API de Pi-hole)
Interacción del UsuarioNinguna
Publicado7 de abril de 2026
Parcheado EnFTL v6.6 (publicado el 3 de abril de 2026)
Descubierto PorT0X1Cx
Avisos RelacionadosGHSA-23w8-7333-p9fj, GHSA-wxhv-w77q-6qwp, GHSA-28g5-gg88-wh5m, GHSA-fqv2-qhfh-ghcj, GHSA-vfmq-jrx3-wv3c

¿Qué es Pi-hole FTLDNS?

Pi-hole es uno de los sumideros DNS más ampliamente desplegados del mundo. Se sitúa en tu red, gestiona consultas DNS y bloquea anuncios y rastreadores a nivel DNS antes de que lleguen a tu navegador. Se utiliza en todas partes, desde configuraciones individuales con Raspberry Pi en apartamentos hasta despliegues empresariales que protegen miles de dispositivos.

FTLDNS (Faster Than Light DNS) es el motor principal de Pi-hole. Es un fork/envoltorio personalizado alrededor de dnsmasq, el conocido servidor DNS y DHCP. FTLDNS gestiona:

  • Resolución y caché de consultas DNS
  • Bloqueo a nivel DNS (la función principal de Pi-hole)
  • Funcionalidad de servidor DHCP
  • Registro de consultas y estadísticas
  • La API con la que se comunica la interfaz web

Aquí está el detalle clave: FTLDNS genera archivos de configuración de dnsmasq a partir de ajustes proporcionados por el usuario a través de su API. Si cambias el servidor DNS upstream en el panel de administración de Pi-hole, FTLDNS escribe ese valor en un archivo de configuración de dnsmasq y reinicia el servicio. Esa ruta de escritura es donde reside la vulnerabilidad.


Análisis Profundo de la Vulnerabilidad

Entendiendo la Arquitectura

root@kitploit:~
+------------------+            +------------------+               +------------------+
|   Panel Admin    |  API/Web   |   Motor FTLDNS   | Escritura de  |    dnsmasq       |
|    (Web UI)      | ---------> |  (pihole-FTL)    | Configuración |   (DNS/DHCP)     |
+------------------+            +------------------+ ------------> +------------------+
                                        |                                   |
                                  Lee ajustes,                        Lee configuración,
                                  escribe archivos                    sirve DNS/DHCP
                                  de configuración                    a la red

Cuando un administrador cambia los servidores DNS upstream a través de la interfaz web o la API de Pi-hole, el flujo es:

  1. La interfaz web envía una solicitud a la API de FTLDNS con el nuevo valor de DNS upstream
  2. FTLDNS valida la entrada (o más bien, falla en validarla correctamente)
  3. FTLDNS escribe el valor en una directiva de configuración de dnsmasq
  4. dnsmasq se reinicia y lee la nueva configuración

El Punto de Inyección

El parámetro dns.upstreams está diseñado para aceptar direcciones de servidores DNS como 8.8.8.8 o 1.1.1.1. FTLDNS las escribe en la configuración de dnsmasq como directivas server=:

root@kitploit:~
# Entrada normal: "8.8.8.8"
# Genera:
server=8.8.8.8

El problema: FTLDNS no sanea los caracteres de nueva línea en la entrada. Un atacante puede inyectar \n para salir de la directiva server= prevista e inyectar líneas de configuración completamente nuevas:

root@kitploit:~
# Entrada maliciosa: "8.8.8.8\ndhcp-option=6,evil.dns.server"
# Genera:
server=8.8.8.8
dhcp-option=6,evil.dns.server

Esto por sí solo ya sería preocupante (secuestro de DNS mediante inyección de opciones DHCP). Pero empeora.

De Nueva Línea a Shell — La Cadena de Ataque

dnsmasq admite una directiva de configuración llamada dhcp-option que puede hacer referencia a scripts externos y, lo que es más crítico, admite varias directivas que pueden ejecutar comandos en escenarios específicos. La cadena de explotación se ve así:

root@kitploit:~
Paso 1: El atacante se autentica en Pi-hole 
        (credenciales por defecto, contraseña débil, CSRF, sesión comprometida)

Paso 2: El atacante envía una solicitud API para actualizar dns.upstreams:
        
        POST /api/dns/upstream
        {
          "upstreams": ["8.8.8.8\n<directiva maliciosa de dnsmasq>"]
        }

Paso 3: FTLDNS escribe el valor en el archivo de configuración de dnsmasq 
        sin sanear la nueva línea

Paso 4: La directiva inyectada de dnsmasq se analiza como una 
        opción de configuración legítima

Paso 5: Dependiendo de la directiva inyectada, el atacante logra:
        - Secuestro de DNS (redirigir todas las consultas DNS)
        - Envenenamiento DHCP (enviar configuraciones maliciosas a los clientes)
        - Ejecución de comandos mediante las capacidades de scripting de dnsmasq
        - Escritura de archivos en rutas arbitrarias

La idea clave es que esto no se trata de explotar una vulnerabilidad de dnsmasq; dnsmasq funciona como está diseñado. La vulnerabilidad es que FTLDNS permite que entrada no confiable se filtre al archivo de configuración, convirtiendo una API de gestión de configuración en un punto de inyección de configuración arbitraria.

La Familia Completa — Cinco Vectores de Inyección

El investigador (T0X1Cx) descubrió que el mismo patrón de inyección de nueva línea afecta a cinco parámetros de configuración diferentes de FTLDNS. Esto es un problema sistémico: el código carecía de saneamiento de entrada en todos los ámbitos:

AvisoParámetroQué Controla
GHSA-23w8-7333-p9fjdns.upstreamsServidores DNS upstream
GHSA-wxhv-w77q-6qwpdns.hostRecordRegistros de host DNS personalizados
GHSA-28g5-gg88-wh5mdns.cnameRecordsMapeos de registros CNAME
GHSA-fqv2-qhfh-ghcjdhcp.leaseTimeDuración de concesión DHCP
GHSA-vfmq-jrx3-wv3cdhcp.hostsAsignaciones estáticas de hosts DHCP

Cada uno de estos parámetros escribe en archivos de configuración de dnsmasq, y cada uno falló en sanear los caracteres de nueva línea. La corrección en FTL v6.6 añadió una validación de entrada adecuada que rechaza caracteres de nueva línea (y otros caracteres de control) en todos los parámetros de configuración.


Análisis de Impacto

En el host de Pi-hole:

  • Ejecución completa de comandos con los privilegios del proceso FTLDNS (normalmente root o usuario pihole)
  • Dado que Pi-hole a menudo se ejecuta en dispositivos dedicados (Raspberry Pi) o como contenedor privilegiado, esto frecuentemente significa acceso root
  • Acceso de lectura/escritura de archivos al sistema de archivos del host
  • Persistencia mediante trabajos cron, claves SSH o archivos de sistema modificados

En la red (impacto descendente):

  • Secuestro de DNS — redirigir todas las consultas DNS a servidores controlados por el atacante
  • Envenenamiento DHCP — enviar configuraciones maliciosas de DNS, puerta de enlace o NTP a todos los clientes DHCP
  • Posicionamiento de hombre en el medio — al controlar el DNS, el atacante puede redirigir el tráfico de cualquier dominio
  • Recolección de credenciales — redirigir endpoints de autenticación a servidores de phishing
  • Distribución de malware — redirigir dominios de actualización de software para servir payloads maliciosos

Factores de amplificación de riesgo:

  • Pi-hole es a menudo el único servidor DNS en la red; compromételo y controlas la resolución de nombres de todos los dispositivos
  • Muchas instalaciones de Pi-hole usan contraseñas de administrador por defecto o débiles
  • Las instancias de Pi-hole se exponen frecuentemente a toda la red local, no solo a administradores
  • Los ataques CSRF contra la interfaz web de Pi-hole podrían desencadenar la explotación sin autenticación directa

Versiones Afectadas

VersiónEstado
FTLDNS 6.6+Parcheado
FTLDNS 6.0 – 6.5Vulnerable
FTLDNS 5.x y anterioresNo afectado (arquitectura de API diferente)

Para verificar tu versión:

root@kitploit:~
pihole -v
# o
pihole-FTL --version

¿Quién Está en Riesgo?

Riesgo alto:

  • Instancias de Pi-hole accesibles desde segmentos de red no confiables
  • Despliegues que usan contraseñas de administrador por defecto o débiles
  • Pi-hole expuesto a internet (sorprendentemente común en Shodan)
  • Entornos de hosting compartido donde múltiples usuarios acceden a la misma red

Riesgo moderado:

  • Instancias de Pi-hole en redes domésticas bien segmentadas con contraseñas fuertes
  • Despliegues detrás de VPN con autenticación multifactor

Riesgo menor (pero aún así parchear):

  • Instancias de Pi-hole aisladas o desconectadas de la red
  • Despliegues de solo lectura o con API deshabilitada

Detección

Escáner Python

El script de Python detecta instancias vulnerables de Pi-hole mediante análisis basado en versión.

Cómo funciona:

  1. Huella digital — Identifica Pi-hole mediante indicadores de la interfaz de administración (contenido de página, cabeceras)
  2. Consulta de versión API — Consulta los endpoints de API de Pi-hole v5 y v6 para obtener información de versión de FTL
  3. Comparación de versiones — Analiza la cadena de versión de FTL y verifica contra el rango vulnerable (6.0 ≤ v < 6.6)
  4. CVEs relacionados — Si es vulnerable, marca los cinco avisos de inyección de nueva línea relacionados

No se envían payloads de inyección. La prueba es completamente de solo lectura y segura.

Uso:

root@kitploit:~
# Instalar dependencias
pip install -r requirements.txt

# Objetivo único (HTTP, puerto por defecto 80)
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1

# Puerto personalizado
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t pi.hole -p 8080

# Modo HTTPS (cambia automáticamente al puerto 443)
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 10.0.0.1 --https

# Escaneo masivo desde archivo
python CVE-2026-35517_PiHole_FTLDNS_detector.py -f targets.txt

# Salida JSON guardada en archivo
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1 --json -o results.json

# Timeout aumentado
python CVE-2026-35517_PiHole_FTLDNS_detector.py -t 192.168.1.1 --timeout 20

Opciones:

FlagDescripciónPor defecto
-t, --targetIP u hostname del objetivo—
-f, --fileArchivo con objetivos, uno por línea (se admiten comentarios #)—
-p, --portPuerto del objetivo80
--httpsUsar HTTPS (cambia automáticamente el puerto a 443 si el puerto es 80)Desactivado
--timeoutTimeout de conexión en segundos10
--jsonSalida en formato JSONDesactivado
-o, --outputGuardar resultados en un archivo—

Ejemplo de salida:

root@kitploit:~
╔══════════════════════════════════════════════════════════════╗
║  CVE-2026-35517 - Detector RCE de Pi-hole FTLDNS             ║
║  Inyección de Nueva Línea en dns.upstreams → Ejecución de    ║
║  Comandos                                                     ║
║  CVSS: 8.8 (Alta) | Afecta: FTLDNS 6.0 - 6.5                 ║
╚══════════════════════════════════════════════════════════════╝

[*] Escaneando 192.168.1.1:80...

Objetivo: 192.168.1.1:80
============================================================
  [*] Pi-hole detectado
      Interfaz de administración: Accesible
      API accesible:  Sí
      Versión FTL:     v6.4
      Versión Core:    v6.3
      Versión Web:     v6.4

  Evaluación CVE-2026-35517:
    [VULNERABLE] FTLDNS 6.4 está dentro del rango vulnerable (6.0 - 6.5).
    Actualiza a FTL v6.6 o posterior inmediatamente.

  Vulnerabilidades relacionadas (también parcheadas en FTL v6.6):
    [-] GHSA-wxhv-w77q-6qwp: RCE mediante inyección de nueva línea en dns.hostRecord
    [-] GHSA-28g5-gg88-wh5m: RCE mediante inyección de nueva línea en dns.cnameRecords
    [-] GHSA-fqv2-qhfh-ghcj: RCE mediante inyección de nueva línea en dhcp.leaseTime
    [-] GHSA-vfmq-jrx3-wv3c: RCE mediante inyección de nueva línea en dhcp.hosts

  Remediación:
    1. Actualiza Pi-hole FTL a la versión 6.6 o posterior
    2. Ejecuta: pihole -up
    3. Verifica con: pihole -v
    4. Revisa los controles de acceso a la API y la configuración de autenticación
    5. Revisa los registros en busca de señales de explotación (cambios inusuales en la configuración DNS)

Script Nmap NSE

root@kitploit:~
# Instalar el script NSE
sudo cp CVE-2026-35517_PiHole_FTLDNS.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

# Escaneo básico
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS <objetivo>

# Escanear puertos comunes de Pi-hole
nmap -p 80,443,8080,4711 --script CVE-2026-35517_PiHole_FTLDNS <objetivo>

# Escaneo de subred — encontrar todas las instancias de Pi-hole en una red
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS 192.168.1.0/24

# Combinado con detección de versión
nmap -sV -p 80,443 --script CVE-2026-35517_PiHole_FTLDNS <objetivo>

# Escanear objetivos desde un archivo
nmap -p 80 --script CVE-2026-35517_PiHole_FTLDNS -iL targets.txt

Ejemplo de salida de Nmap:

root@kitploit:~
PORT   STATE SERVICE
80/tcp open  http
| CVE-2026-35517_PiHole_FTLDNS:
|   VULNERABLE:
|   RCE en Pi-hole FTLDNS mediante configuración de DNS upstream
|     Estado: VULNERABLE
|     IDs:  CVE:CVE-2026-35517
|     Factor de riesgo: Alto (CVSS: 8.8)
|     Fecha de divulgación: 2026-04-07
|     Información adicional:
|       Versión FTL: v6.4
|       Versión Core: v6.3
|       Versión Web: v6.4
|       Avisos relacionados también corregidos en FTL v6.6:
|         GHSA-wxhv-w77q-6qwp (inyección en dns.hostRecord)
|         GHSA-28g5-gg88-wh5m (inyección en dns.cnameRecords)
|         GHSA-fqv2-qhfh-ghcj (inyección en dhcp.leaseTime)
|         GHSA-vfmq-jrx3-wv3c (inyección en dhcp.hosts)
|       Remediación: Actualizar a Pi-hole FTL v6.6+ (pihole -up)
|     Referencias:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35517
|_      https://github.com/pi-hole/FTL/security/advisories/GHSA-23w8-7333-p9fj

Verificación Manual de Versión

Si tienes acceso SSH al host de Pi-hole:

root@kitploit:~
# Verificar versión de FTL
pihole-FTL --version

# O mediante la CLI de Pi-hole
pihole -v

# Verificar mediante API (v6)
curl -s http://pi.hole/api/info/version | python3 -m json.tool

# Verificar mediante API (v5)
curl -s http://pi.hole/admin/api.php?versions | python3 -m json.tool

Si la versión de FTL está entre 6.0 y 6.5 (inclusive), eres vulnerable.


Indicadores de Compromiso

Qué buscar:

  • Entradas inusuales en la configuración de dnsmasq — Revisa /etc/dnsmasq.d/ y /etc/pihole/ en busca de directivas inesperadas
  • Ajustes de DNS upstream modificados — Verifica que tus servidores upstream configurados no hayan sido cambiados
  • Llamadas API inesperadas — Revisa el registro de consultas de Pi-hole y los registros de acceso a la API en busca de solicitudes de cambio de configuración
  • Comportamiento DNS anómalo — Clientes resolviendo dominios a direcciones IP inesperadas
  • Nuevos trabajos cron o claves SSH — Si el host ha sido comprometido mediante ejecución de comandos
  • Anomalías de procesos — Procesos hijos inesperados generados por dnsmasq o pihole-FTL

Comandos para investigar:

root@kitploit:~
# Revisar configuraciones de dnsmasq en busca de líneas inyectadas
grep -r "dhcp-option\|addn-hosts\|conf-file\|log-facility" /etc/dnsmasq.d/

# Buscar modificaciones recientes de configuración
find /etc/pihole /etc/dnsmasq.d -mtime -7 -ls

# Revisar el registro de depuración de Pi-hole
pihole -d

# Verificar procesos en ejecución en busca de anomalías
ps aux | grep -E "dnsmasq|pihole"

# Revisar crontab en busca de persistencia
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/

Remediación

Acción inmediata — actualiza ahora:

root@kitploit:~
# Actualizar Pi-hole (incluye FTL, Web y Core)
pihole -up

# Verificar la actualización
pihole -v
# La versión de FTL debe ser >= 6.6

Si no puedes actualizar inmediatamente:

  1. Restringe el acceso a la API — Configura Pi-hole para aceptar solo conexiones API desde IPs confiables
  2. Cambia la contraseña de administrador — Usa una contraseña fuerte y única: pihole -a -p
  3. Aislamiento de red — Asegúrate de que la interfaz de administración de Pi-hole solo sea accesible desde una VLAN de gestión
  4. Deshabilita la API remota — Si solo usas la interfaz web local, restringe la API a localhost

Acciones posteriores al parche:

  1. Audita la configuración DNS — Revisa todos los archivos de configuración de dnsmasq en busca de directivas inyectadas
  2. Verifica los servidores upstream — Confirma que tus ajustes de DNS upstream sean correctos
  3. Busca persistencia — Revisa trabajos cron no autorizados, claves SSH o archivos de sistema modificados
  4. Revisa las concesiones DHCP — Si DHCP es gestionado por Pi-hole, verifica las configuraciones de concesión
  5. Monitorea el comportamiento DNS — Observa patrones de resolución anómalos durante los próximos días

Referencias

  • Aviso de Seguridad de GitHub — GHSA-23w8-7333-p9fj (dns.upstreams)
  • Aviso de Seguridad de GitHub — GHSA-wxhv-w77q-6qwp (dns.hostRecord)
  • Aviso de Seguridad de GitHub — GHSA-28g5-gg88-wh5m (dns.cnameRecords)
  • Aviso de Seguridad de GitHub — GHSA-fqv2-qhfh-ghcj (dhcp.leaseTime)
  • Aviso de Seguridad de GitHub — GHSA-vfmq-jrx3-wv3c (dhcp.hosts)
  • Notas de la Versión de Pi-hole FTL v6.6

Autor

Kerem Oruç - Ingeniero de Ciberseguridad

  • GitHub: @keraattin
  • Twitter: @keraattin
Descargar herramienta