Hacking ético - injeção de SQL
A injeção de SQL é um conjunto de comandos SQL que são colocados em uma string de URL ou em estruturas de dados para recuperar uma resposta que desejamos dos bancos de dados que estão conectados aos aplicativos da web. Esse tipo de ataque geralmente ocorre em páginas da Web desenvolvidas com PHP ou ASP.NET.
Um ataque de injeção de SQL pode ser feito com as seguintes intenções -
Para despejar todo o banco de dados de um sistema,
Para modificar o conteúdo dos bancos de dados, ou
Para realizar diferentes consultas que não são permitidas pelo aplicativo.
Este tipo de ataque funciona quando os aplicativos não validam as entradas adequadamente, antes de passá-las para uma instrução SQL. As injeções são normalmente colocadas em barras de endereço, campos de pesquisa ou campos de dados.
A maneira mais fácil de detectar se um aplicativo da web é vulnerável a um ataque de injeção de SQL é usar o caractere "'" em uma string e ver se há algum erro.
Exemplo 1
Vamos tentar entender esse conceito usando alguns exemplos. Conforme mostrado na captura de tela a seguir, usamos um caractere "'" no campo Nome.
Agora, clique no Loginbotão. Deve produzir a seguinte resposta -
Isso significa que o campo “Nome” é vulnerável à injeção de SQL.
Exemplo 2
Temos este URL - http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php
E queremos testar a variável “página”, mas observe como injetamos um caractere "'" na string URL.
Quando pressionamos Enter, ele produzirá o seguinte resultado com erros.
SQLMAP
SQLMAP é uma das melhores ferramentas disponíveis para detectar injeções de SQL. Ele pode ser baixado dehttp://sqlmap.org/
Ele vem pré-compilado na distribuição Kali. Você pode localizá-lo em - Aplicativos → Avaliação do banco de dados → Sqlmap.
Depois de abrir o SQLMAP, vamos para a página em que temos a injeção SQL e obtemos a solicitação de cabeçalho. No cabeçalho, executamos o seguinte comando em SQL -
./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0)
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3
O SQLMAP testará todas as variáveis e o resultado mostrará que o parâmetro “id” está vulnerável, conforme mostrado na imagem a seguir.
SQLNinja
SQLNinja é outra ferramenta de injeção de SQL disponível na distribuição Kali.
Injeção JSQL
JSQL Injection está em Java e faz injeções SQL automatizadas.
Dicas rápidas
Para evitar que seu aplicativo da web contra ataques de injeção de SQL, você deve manter os seguintes pontos em mente -
A entrada desmarcada do usuário no banco de dados não deve passar pela GUI do aplicativo.
Cada variável que passa para o aplicativo deve ser higienizada e validada.
A entrada do usuário que é passada para o banco de dados deve ser citada.