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-34908-check — Detecta de forma segura si un servidor UniFi OS es vulnerable a CVE-2026-34908 | Kitploit
Herramientas/GitHubGitHub/bishopfox/cve-2026-34908-check
ReconocimientoEscáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de Penetración
GitHubbishopfox/cve-2026-34908-check

CVE-2026-34908-check

Detecta de forma segura si un servidor UniFi OS es vulnerable a CVE-2026-34908

Ver Repositorio
6642hace 3 mesesRevisado por Kitploit

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

Script de Detección de Cadena RCE sin Autenticación en UniFi OS Server

Un detector seguro para la cadena de ejecución remota de código sin autenticación en UniFi OS Server ≤ 5.0.6, divulgado en el Boletín de Aviso de Seguridad 064 de Ubiquiti:

CVEClaseRol en la cadena
CVE-2026-34908 / CVE-2026-34909Control de acceso inadecuado / path traversalOmisión de la puerta de autenticación (el punto de apoyo)
CVE-2026-34910Validación de entrada inadecuada → inyección de comandosRCE sin autenticación alcanzada mediante la omisión

Corregido en UniFi OS Server 5.0.8.

¿Es seguro ejecutarlo?

Sí. El detector está diseñado para uso en producción y evaluaciones:

  • No se ejecuta ningún comando. La sonda alcanza el endpoint vulnerable sin un parámetro requerido, por lo que el controlador rechaza la entrada faltante y confirmamos el error desde ese error de validación.
  • No se cambia el estado del objetivo. Cada solicitud es un simple GET.
  • Protección contra falsos positivos. Un veredicto de VULNERABLE requiere tanto que la omisión de autenticación haya alcanzado el controlador vulnerable como que una solicitud de referencia (mismo endpoint, sin omisión) haya sido correctamente rechazada con 401.

Cómo funciona

UniFi OS utiliza nginx para servir sus servicios, el cual aplica la autenticación mediante una subconsulta. Esa comprobación de autenticación trata cualquier solicitud cuya URI cruda comience con /api/auth/validate-sso/ como pública, pero nginx enruta hacia el backend usando la URI normalizada (descodifica percentualmente %2f→/ y colapsa ../). Una solicitud como:

root@kitploit:~
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package

es tratada como pública (prefijo crudo) pero enrutada al endpoint interno autenticado de actualización de paquetes (ruta normalizada). Sin pkg_name, ese endpoint responde query param pkg_name required — demostrando que la omisión funciona y el controlador vulnerable es alcanzable.

El detector también envía una solicitud de referencia al mismo endpoint sin la omisión y requiere que devuelva 401 antes de declarar un host como vulnerable. La comprobación prueba el comportamiento vulnerable directamente — un veredicto de VULNERABLE significa que la omisión realmente alcanzó el sumidero.

Confirmar que el objetivo es UniFi OS antes de cualquier veredicto no vulnerable

Siempre que la sonda no confirme positivamente VULNERABLE o PARCHADO, el detector obtiene la página raíz y busca la huella digital del portal de administración de UniFi OS ( <title>UniFi OS</title>, window.UNIFI_OS_MANIFEST, id="portal-root", id="site-manager_portal-container"). Esto se aplica también a un 401: un host UniFi OS que aplique autenticación en la omisión es NO CONCLUSIVO, pero un proxy que no sea UniFi y que simplemente devuelva 401 para todo no lleva huella digital y se reporta como NO AFECTADO. Así que cada resultado "no vulnerable" se fundamenta en la huella digital: marcadores presentes → NO CONCLUSIVO; marcadores ausentes → NO AFECTADO (la CVE no aplica).

Requisitos

  • Python 3.7+, solo biblioteca estándar — sin paquetes de terceros.

Uso

root@kitploit:~
# host único (puerto predeterminado 11443)
./cve_2026_34908_check.py 192.168.1.10

# puerto explícito / formularios URL
./cve_2026_34908_check.py host-a:11443 https://host-b

# escanear una lista, un objetivo por línea (se permiten comentarios '#'), salida compacta
./cve_2026_34908_check.py -f targets.txt --brief

# salida legible por máquina para pipelines
./cve_2026_34908_check.py -f targets.txt --json > results.json

Opciones

Ejemplos

Una consola vulnerable (detallado, el predeterminado). La segunda línea es el detalle del veredicto; el marcador [!] y VULNERABLE se renderizan en rojo en una TTY:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10
[!] 192.168.1.10:11443: VULNERABLE
      auth bypass reached the vulnerable handler (no command executed); baseline correctly 401

Una consola parchada (5.0.8+):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.11
[+] 192.168.1.11:11443: PARCHADO
      nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior

Un host UniFi OS confirmado que la sonda no pudo clasificar → NO CONCLUSIVO. La línea de detalle distingue los dos casos (autenticación aplicada vs. respuesta inesperada):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.12 192.168.1.13
[?] 192.168.1.12:11443: NO CONCLUSIVO
      bypass blocked / auth enforced (HTTP 401) on a confirmed UniFi OS host — not confirmed vulnerable
[?] 192.168.1.13:11443: NO CONCLUSIVO
      UniFi OS detected, but probe returned an unexpected response: HTTP 302 text/html

Un host que no es UniFi OS en absoluto → NO AFECTADO (el aviso no aplica):

root@kitploit:~
$ ./cve_2026_34908_check.py 203.0.113.9:443
[-] 203.0.113.9:443: NO AFECTADO
      no UniFi OS web fingerprint on / (probe HTTP 404) — target is not a UniFi OS Server

Escanear una lista, una línea alineada por host (--brief). El código de salida es 1 si algún host es VULNERABLE, si no 0 — útil en scripts:

root@kitploit:~
$ ./cve_2026_34908_check.py -f targets.txt --brief; echo "exit: $?"
VULNERABLE    192.168.1.10:11443
PARCHADO      192.168.1.11:11443
NO CONCLUSIVO 192.168.1.12:11443
NO AFECTADO   203.0.113.9:443
ERROR         10.0.0.1:11443  timeout
exit: 1

Salida legible por máquina para pipelines (--json). Cada resultado lleva el verdict más el bypass.state/bypass.detail detrás de él; los resultados ERROR llevan un campo error en lugar de bypass:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10 192.168.1.11 10.0.0.1 --json
[
  {
    "target": "192.168.1.10:11443",
    "bypass": {
      "state": "vulnerable",
      "detail": "auth bypass reached the vulnerable handler (no command executed); baseline correctly 401"
    },
    "verdict": "VULNERABLE"
  },
  {
    "target": "192.168.1.11:11443",
    "bypass": {
      "state": "patched",
      "detail": "nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior"
    },
    "verdict": "PARCHADO"
  },
  {
    "target": "10.0.0.1:11443",
    "verdict": "ERROR",
    "error": "timeout"
  }
]

Veredictos

Códigos de salida

CódigoSignificado
0Ningún objetivo devolvió VULNERABLE
1Al menos un objetivo es VULNERABLE
2Error de uso (argumentos incorrectos / archivo de objetivos ilegible)

Limitaciones

  • NO CONCLUSIVO no es una garantía de seguridad — confirma un host UniFi OS pero no pudo clasificarlo (autenticación aplicada en la omisión, o una respuesta inesperada). Un host que esté fuertemente filtrado o detrás de un proxy inesperado puede no ser clasificable solo desde la red. Confirme la versión en ejecución cuando sea posible.
  • NO AFECTADO significa que la página raíz no llevaba huella digital del portal UniFi OS (incluyendo hosts que devuelven 401 sin ella). Una consola UniFi OS oculta detrás de un proxy inverso que elimina o reescribe el HTML del portal podría ser reportada incorrectamente; confirme directamente si se espera que el objetivo sea UniFi OS.
  • El detector informa la alcanzabilidad del comportamiento vulnerable.

Remediación

Actualice UniFi OS Server a la versión 5.0.8 o posterior. La corrección añade una comparación de URI cruda vs. normalizada en nginx (cerrando la omisión de autenticación) y validación de entrada en la ruta de actualización de paquetes (cerrando la inyección de comandos).

Licencia

Este código se distribuye bajo una licencia MIT.

Aviso legal

El uso de esta herramienta para atacar objetivos sin consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no son responsables por cualquier uso indebido o daño causado por este programa.

Ver también

  • Boletín de Aviso de Seguridad 064 de Ubiquiti
  • Blog de Bishop Fox: Análisis técnico completo
Descargar herramienta
Respuesta de la sondaVeredicto
200 + marcadores de error del controladorVULNERABLE
400 (nginx rechaza la divergencia)PARCHADO (5.0.8+)
401, huella digital de UniFi OS presenteNO CONCLUSIVO (autenticación aplicada / omisión bloqueada)
401, sin huella digital de UniFi OSNO AFECTADO (no es un UniFi OS Server)
cualquier otra cosa, sin huella digital de UniFi OSNO AFECTADO (no es un UniFi OS Server)
cualquier otra cosa, huella digital de UniFi OS presenteNO CONCLUSIVO (respuesta inesperada)
IndicadorDescripción
targetsUno o más host, host:port, o https://host:port
-f, --targets-file ARCHIVOLeer objetivos desde un archivo (uno por línea; comentarios #)
--briefUna sola línea alineada por objetivo — ideal para escanear muchos hosts
--jsonEmitir resultados JSON estructurados
--timeout SEGSTiempo de espera por solicitud (predeterminado: 10)
--no-colorDeshabilitar salida coloreada (también respeta NO_COLOR y no TTY)
VeredictoSignificado
VULNERABLELa omisión de autenticación alcanzó el controlador vulnerable sin autenticación. Aplique el parche a 5.0.8+.
PARCHADOnginx rechazó la divergencia de ruta normalizada (comportamiento de 5.0.8+).
NO AFECTADONo hay huella digital del portal UniFi OS en la página raíz — el objetivo no es un UniFi OS Server, por lo que el aviso no aplica. Incluye hosts que devuelven 401 sin la huella digital (por ejemplo, un proxy no relacionado que rechaza todo).
NO CONCLUSIVOHost UniFi OS confirmado que no pudo clasificarse — verifique la versión manualmente. La línea de detalle del veredicto indica el caso: (a) la omisión fue bloqueada/autenticación aplicada (401), o (b) la sonda devolvió una respuesta inesperada.
ERRORFalla de conexión/timeout/TLS.