Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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-11374-check — Script di rilevamento per CVE-2026-11374 | Kitploit
Strumenti/GitHubGitHub/bishopfox/cve-2026-11374-check
Strumenti DifensiviScanner di VulnerabilitàExploitSicurezza WebPenetration TestingThreat Intelligence
GitHubbishopfox/cve-2026-11374-check

CVE-2026-11374-check

Script di rilevamento per CVE-2026-11374

Vedi Repository
28 giorni faNon ancora revisionato

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

Script di rilevamento della precondizione CVE-2026-11374 ManageEngine AD360

Uno script di rilevamento per la precondizione di sfruttamento di CVE-2026-11374, una falla del ticket SSO prevedibile che porta all'acquisizione non autenticata di account nell'intera suite ManageEngine AD360. I quattro prodotti interessati condividono il ManageEngineADSFramework:

ProdottoBuild vulnerabileBuild corretta
ADSelfService Plus≤ 65286529
RecoveryManager Plus≤ 63206321
M365 Manager Plus≤ 48164817
ADAudit Plus≤ 87028703

Nelle build vulnerabili, il ticket SSO è semplicemente System.currentTimeMillis() (un timestamp prevedibile) campionato al login della vittima, quindi può essere riutilizzato tramite il cookie CUSTOM_SSO_TICKET per dirottare la sessione. La correzione sostituisce il ticket con UUID.randomUUID() (un identificatore sufficientemente casuale). Il percorso di replay è raggiungibile solo quando il prodotto è integrato con AD360: ADSFilter lo vincola a isProductIntegrated(). Questa condizione è la precondizione che questo strumento verifica.

NOTA: questo rilevatore conferma la precondizione, non la vulnerabilità stessa. Un risultato POTENTIALLY_AFFECTED non è un verdetto di vulnerabilità confermata — vedi sotto per maggiori informazioni.

È sicuro eseguirlo?

Sì. È progettato per l'uso in produzione e per valutazioni.

  • Non viene sfruttato nulla. La sonda invia un ticket SSO non valido (1700000000000, un valore in millisecondi sufficientemente passato da non poter mai essere presente in cache), quindi non viene mai recuperata alcuna sessione. Il server ci dice solo di cancellare i cookie che abbiamo inviato.
  • Nessuna modifica allo stato del target. Ogni richiesta è una semplice GET, e gli unici cookie coinvolti sono quelli usa-e-getta inviati dallo strumento.
  • Nessun brute force o risoluzione di sessione. Lo strumento non tenta la risoluzione attiva del ticket-timestamp che dimostrerebbe la sfruttabilità; quella è sfruttamento piuttosto che rilevamento, ed è fuori dall'ambito qui (vedi Limitazioni).

Cosa può e cosa non può dirti

La patch di CVE-2026-11374 ha modificato solo il modo in cui viene generato il ticket (da millisecondi a UUID); non ha cambiato il percorso di cookie-replay che questa sonda esercita. Di conseguenza, un'installazione patchata risponde in modo identico byte-per-byte a una vulnerabile per qualsiasi richiesta non autenticata.

Cosa può fare lo strumento, senza autenticazione e in modo non distruttivo:

  • Confermare che un prodotto in scope raggiungibile ha attivo il percorso di cookie-replay CustomSSO (cioè è integrato con AD360), che è la precondizione di sfruttamento di CVE-2026-11374.
  • Identificare quale dei quattro prodotti sia, tramite il cookie di sessione specifico per prodotto.
  • Leggere al meglio il numero di build di un asset come suggerimento. Questo è disponibile su ADSelfService Plus, ADAudit Plus e M365 Manager Plus; non disponibile su RecoveryManager Plus.

Cosa non può fare:

  • Distinguere vulnerabile da patchato. Non esiste un segnale sicuro, passivo e non autenticato per farlo. Un risultato POTENTIALLY_AFFECTED significa che la precondizione è soddisfatta e dovresti verificare il livello di patch, non che l'host sia confermato vulnerabile.
  • Confermare la sfruttabilità. Dimostrare che un host è effettivamente sfruttabile richiede osservare il formato di un ticket generato (un numero a 13 cifre è vulnerabile, un UUID è patchato, entrambi richiedono visibilità autenticata o direttamente sull'host), leggere conf/product.conf localmente, o risolvere attivamente un ticket attivo (vera sfruttamento, volutamente non implementato qui).
  • Fidarsi completamente di un numero di build ADSelfService Plus inferiore alla soglia corretta. Il ?build= di ADSSP a volte è la build reale e a volte un segnaposto congelato che riporta un valore inferiore alla build corretta, quindi un valore sotto la soglia è ambiguo e lo strumento lo segna come inconcludente. Un valore pari o superiore alla build corretta è comunque un segnale affidabile di patch, poiché il segnaposto è sempre troppo basso per raggiungerlo.

Requisiti

  • Python 3.7+ e la libreria requests. Installa con pip install requests.

Utilizzo

root@kitploit:~
# single host (prefer a URL or host:port; ports differ per product)
./cve_2026_11374_check.py https://adssp.example.com:8888

# multiple hosts (scheme optional: https is tried first, then http)
./cve_2026_11374_check.py host-a:8081 host-b:8365

# scan a list, one target per line ('#' comments allowed), compact output
./cve_2026_11374_check.py -f targets.txt --brief

# machine-readable output for pipelines
./cve_2026_11374_check.py -f targets.txt --json > results.json

Le porte predefinite variano a seconda del prodotto (ADSelfService Plus 8888, ADAudit Plus 8081, M365 Manager Plus 8365, RecoveryManager Plus 8090), quindi passa un URL o host:port. Un host semplice usa per impostazione predefinita 8888.

Opzioni

Esempi

Una console integrata AD360 (verbose, l'impostazione predefinita). La seconda riga chiarisce che questa è la precondizione e non un verdetto di vulnerabilità; la terza è l'indicazione della build con il massimo sforzo possibile:

root@kitploit:~
$ ./cve_2026_11374_check.py https://adssp.example.com:8888
[!] https://adssp.example.com:8888: POTENTIALLY_AFFECTED
      ADSelfService Plus: AD360-integrated, CustomSSO replay path active - precondition met. Not confirmed vulnerable; verify patch level (fixed build 6529).
      build: 6519 (below fixed 6529 - inconclusive: ?build= may be a stale placeholder or a hotfix)

Un'installazione standalone dello stesso prodotto, dove il percorso di replay non è attivo:

root@kitploit:~
$ ./cve_2026_11374_check.py https://adssp.example.com:8888
[+] https://adssp.example.com:8888: UNAFFECTED
      ADSelfService Plus: standalone / not AD360-integrated (no cleanup), so the replay path isn't reachable here. Verify build >= 6529 regardless.

Scansione di una lista con una riga allineata per host (--brief). Lo stato di uscita è 1 se un qualsiasi host risulta POTENTIALLY_AFFECTED, altrimenti 0, il che è comodo negli script. La nota finale mostra il prodotto identificato, più il numero di build in caso di riscontro:

root@kitploit:~
$ ./cve_2026_11374_check.py -f targets.txt --brief; echo "exit: $?"
POTENTIALLY_AFFECTED  https://host-a:8888  ADSelfService Plus 6519
POTENTIALLY_AFFECTED  http://host-b:8081   ADAudit Plus 8530
UNAFFECTED            http://host-c:8365   M365 Manager Plus
UNAFFECTED            https://host-d:443
INCONCLUSIVE          http://host-e:8888   ADSelfService Plus
ERROR                 host-f:8888  timeout
exit: 1

Output leggibile da macchina (--json). Ogni risultato include il verdict, lo state e il detail sottostanti, il product identificato e — in caso di riscontro — un oggetto build: build è il numero trovato, fixed_build la soglia per quel prodotto, patch_hint la valutazione direzionale (likely_patched per valori pari o superiori alla build corretta, altrimenti inconclusive), e note una breve spiegazione:

root@kitploit:~
$ ./cve_2026_11374_check.py https://host-b:8081 --json
[
  {
    "target": "https://host-b:8081",
    "state": "potentially_affected",
    "detail": "ADAudit Plus: AD360-integrated, CustomSSO replay path active - precondition met ...",
    "product": "ADAudit Plus",
    "build": { "build": "8530", "fixed_build": "8703", "patch_hint": "inconclusive", "note": "below fixed 8703 - inconclusive: may be a hotfix" },
    "verdict": "POTENTIALLY_AFFECTED"
  }
]

Verdetti

Codici di uscita

CodiceSignificato
0Nessun target ha restituito POTENTIALLY_AFFECTED
1Almeno un target risulta POTENTIALLY_AFFECTED
2

Come funziona

Invia un ticket non valido più un tag applicazione a qualsiasi URL CustomSSO (*.do):

root@kitploit:~
GET /AppsHome.do
Cookie: CUSTOM_SSO_TICKET=1700000000000; CUSTOM_SSO_APP_TAG_NAME=AD360

Su un'installazione integrata AD360, la catena ADSFilter → CustomSSOFilter → CookieSSOImpl esegue il suo ramo di risoluzione (il tag indica un prodotto diverso, quindi appName != prodName), non riesce a risolvere il ticket fittizio e emette header di risposta di pulizia dei cookie:

root@kitploit:~
Set-Cookie: CUSTOM_SSO_TICKET=removed; Max-Age=0; ...
Set-Cookie: CUSTOM_SSO_APP_NAME=removed; Max-Age=0; ...
Set-Cookie: CUSTOM_SSO_APP_TAG_NAME=removed; Max-Age=0; ...

Un'installazione standalone non esegue mai quel percorso e non emette alcuna pulizia. Il prodotto viene identificato dal suo cookie di sessione Tomcat fisso per prodotto (JSESSIONIDADSSP per ADSelfService Plus, e così via), che viene impostato in ogni risposta. Il controllo si basa sugli header piuttosto che sul codice di stato, poiché un ADSSP integrato restituisce un 302 mentre ADAudit, M365 e RMP restituiscono 200 alla stessa sonda.

Limitazioni

  • POTENTIALLY_AFFECTED non è "vulnerabilità confermata". È la precondizione di sfruttamento. Poiché la patch non ha toccato questo percorso di codice, una build patchata risponde in modo identico, quindi devi confermare il livello di patch fuori banda (vedi i passaggi successivi). Questo è il limite massimo di ciò che un osservatore non autenticato può sapere.
  • Nessuna conferma attiva. Lo strumento non tenta mai di risolvere un ticket reale, al tempo corrente. Questa tecnica può dimostrare positivamente che un host è vulnerabile, ma è uno sfruttamento attivo (dirotta una sessione live), è limitata dal throttling ed è probabilistica, e richiede una sessione attiva della vittima, quindi è esclusa da questo rilevatore.
  • HTTP 400 può essere un blocco rate-limit piuttosto che una risposta reale. Zoho IAM applica un throttle scorrevole per URL che limita un IP sorgente a circa 40 richieste per 60 s, quindi blocca quel percorso per ~60 s. Durante un blocco, le richieste restituiscono HTTP 400 e il segnale di integrazione è mascherato. Lo strumento segnala questi casi come INCONCLUSIVE; riprova da quell'IP dopo circa un minuto.
  • Dietro un proxy inverso, una console che rimuove o riscrive il cookie di sessione può essere segnalata erroneamente come UNAFFECTED. Conferma direttamente se ti aspetti un prodotto ManageEngine lì.
  • I numeri di build sono suggerimenti, non verdetti. ADAudit (?v=) e M365 (?bN=) espongono sempre la build reale; il ?build= di ADSSP a volte è reale e a volte un segnaposto congelato che riporta un valore inferiore alla build corretta, quindi un valore ADSSP sotto la soglia è ambiguo; RMP non ne espone nessuno. In ogni caso, una build pari o superiore alla build corretta indica fortemente che la patch è applicata, mentre un valore inferiore è inconcludente.

Passaggi successivi per i difensori

Se un target risulta POTENTIALLY_AFFECTED, trattalo come esposto e meritevole di conferma, poi:

  1. Conferma direttamente il livello di patch (lo strumento non può). Leggi conf/product.conf (build_number) sull'host e confrontalo con la build corretta per quel prodotto (ADSelfService Plus 6529, RecoveryManager Plus 6321, M365 Manager Plus 4817, ADAudit Plus 8703). Interpretalo in modo direzionale: una build pari o superiore alla build corretta è un forte indicatore che l'host è patchato, poiché la correzione UUID è in quel ramo. Una build inferiore alla build corretta è inconcludente piuttosto che prova di vulnerabilità, perché hotfix e backport fuori banda possono applicare la correzione UUID senza aumentare il numero di build; in tal caso, affidati al controllo del formato del ticket descritto sotto.

  2. Controlla il formato del ticket generato se puoi accedere. Il cookie CUSTOM_SSO_TICKET non è HttpOnly, quindi dopo l'autenticazione puoi leggerne il valore: un numero a 13 cifre significa vulnerabile, un UUID significa patchato. Questo è il controllo positivo più chiaro.

  3. Aggiorna alla build corretta (o successiva) su qualsiasi host vulnerabile o di cui non puoi confermare la patch. La correzione sostituisce il ticket prevedibile con un UUID casuale.

  4. Cerca tentativi di sfruttamento. Sull'host, serverOut_<date>.txt registra il throttling come raffiche di:

    root@kitploit:~
    IAMSecurityException ErrorCode: URL_ROLLING_THROTTLES_LIMIT_EXCEEDED,
    RequestURI: "/showLogin.cc", RemoteAddr: <source IP>
    

    Un picco di URL_ROLLING_THROTTLES_LIMIT_EXCEEDED sui percorsi di dispatch SSO/login da un singolo IP sorgente è un forte indicatore di brute force sui ticket. Inoltre, esamina i login riusciti recenti e l'attività delle sessioni per individuare segni di takeover.

Rimedio

Aggiorna il prodotto interessato almeno alla build corretta (ADSelfService Plus 6529, RecoveryManager Plus 6321, M365 Manager Plus 4817, ADAudit Plus 8703) o successiva. La correzione sostituisce il ticket SSO prevedibile System.currentTimeMillis() con UUID.randomUUID().

Licenza

Questo codice è distribuito sotto una licenza MIT.

Disclaimer legale

L'uso di questo strumento per attaccare target senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo programma.

Vedi anche

  • NVD: CVE-2026-11374
  • Service pack di ManageEngine: ADSelfService Plus · RecoveryManager Plus · M365 Manager Plus · ADAudit Plus
  • Blog di Bishop Fox: Analisi tecnica completa
Scarica lo strumento
FlagDescrizione
targetsUno o più host, host:port, o https://host:port
-f, --targets-file FILELegge i target da un file (uno per riga; commenti #)
--briefUna singola riga allineata per target, utile per scansionare molti host
--jsonEmette risultati JSON strutturati
--timeout SECSTimeout per richiesta (predefinito: 15)
--no-buildSalta la richiesta aggiuntiva del numero di build in caso di riscontro positivo
--no-colorDisabilita l'output colorato (rispetta anche NO_COLOR e i non-TTY)
VerdettoSignificato
POTENTIALLY_AFFECTEDProdotto in scope integrato con AD360; il percorso di cookie-replay CustomSSO è attivo, quindi la precondizione di sfruttamento di CVE-2026-11374 è soddisfatta. Non è un verdetto di vulnerabilità confermata; verifica il livello di patch (vedi i passaggi successivi).
UNAFFECTEDIl percorso di replay non è raggiungibile. Uno qualsiasi dei seguenti: un prodotto in scope standalone (non integrato con AD360 — anche se diventerebbe raggiungibile se integrato in seguito, quindi verifica comunque la build); un prodotto ManageEngine del framework ADS che non è uno dei quattro in scope; oppure nessun prodotto in scope nella risposta (non uno dei quattro prodotti CVE-2026-11374, o un proxy che rimuove il cookie di sessione).
INCONCLUSIVEUn HTTP 400 — probabilmente il blocco del rate-limit IAM che maschera il segnale; riprova dopo ~60 s.
ERRORErrore di connessione/timeout/TLS.
Errore di utilizzo (argomenti non validi / file dei target illeggibile)
Risposta della sondaVerdetto
header di pulizia e cookie di un prodotto in scope notoPOTENTIALLY_AFFECTED
cookie di prodotto, nessuna pulizia, stato ≠ 400UNAFFECTED (standalone / non integrato)
nessun cookie di prodotto in scope, stato ≠ 400UNAFFECTED (non uno dei quattro prodotti)
header di pulizia ma cookie di prodotto non riconosciutoUNAFFECTED (ManageEngine, non in scope)
HTTP 400INCONCLUSIVE (probabilmente il blocco rate-limit IAM; vedi Limitazioni)
  • Riduci l'esposizione nel frattempo. Limita l'accesso di rete alla suite AD360 (non dovrebbe essere esposta a internet) e, se il percorso di replay non è necessario, disabilitare l'integrazione CustomSSO rimuove completamente la precondizione.