(C|EH) V12
Curso: CERTIFIED ETHICAL HACKER -
S E C U R I T Y I M P L E M E N TAT I O N
Progresso do curso
Módulo 11.
Módulo 12.
Módulo 13.
Módulo 14.
Módulo 15.
2
Conceitos de SQL Injection:
A injeção de SQL é um tipo de
vulnerabilidade de aplicações web,
onde um atacante pode manipular e
enviar um comando SQL para recuperar
as informações do banco de dados.
Este tipo de ataque ocorre
principalmente quando uma aplicação
web executa os dados fornecidos pelo
usuário sem valida-los.
Ele pode dar acesso a informações
confidenciais, como números de cartão
de crédito ou outros dados financeiros
para o atacante e permite que um
atacante crie, leia, atualize, altere ou
exclua os dados armazenados no banco
de dados. É uma falha em aplicações CEHv12 (ANSI)
web e não um problema de servidor de
banco de dados ou web. A maioria dos
programadores ainda não estão
conscientes desta ameaça. [Link] Injection
3
Perigos do SQLi
Bypass de autenticação Comprometimento da disponibilidade dos dados
Aqui, o invasor pode entrar na rede sem fornecer qualquer nome O atacante usa este tipo de ataque para apagar os dados
de usuário ou senha autêntica e poderia obter o acesso através relacionados às informações de auditoria ou qualquer outra
da rede. informação crucial do banco de dados.
Divulgação de informações Execução remota de código
Após a entrada não autorizada na rede, o atacante obtém acesso Um invasor pode modificar, apagar ou criar dados ou até mesmo
aos dados sensíveis armazenados no banco de dados. pode criar novas contas com totais direitos de usuário nos
servidores que compartilham arquivos e pastas.
Comprometimento da integridade dos dados
O atacante muda o conteúdo principal do site e também insere
conteúdo malicioso nele.
4
Funcionamento do SQLI
5
Query SQL normal
6
Query SQL Injection
7
Ameaças de SQL Injection
Falsificação de identidade Adulterar os registros do banco de dados
A falsificação de identidade é um método seguido pelos Os dados principais são completamente danificados com a
atacantes. Aqui as pessoas são levadas a acreditar que um e-mail alteração dos dados, há ainda a possibilidade de substituir
ou site específico foi originado a partir de uma fonte que na completamente os dados ou mesmo apagar os dados.
verdade, é falsa.
Escalada de privilégios
Variações de preços
Uma vez que o sistema é comprometido, o atacante procura os
mais um problema relacionado à injeção de SQL é que ela pode privilégios mais altos dos utilizados e ganham acesso completo
ser usada para modificar dados. Aqui os atacantes entraram em ao sistema administrativo, bem como a rede.
um portal de compras on-line e alteraram os preços dos produtos
e, em seguida, compraram os produtos a preços mais baratos.
8
Ameaças de SQL Injection
Negação de serviço no servidor Destruição de dados
Negação de serviço no servidor é um ataque onde os usuários O atacante, depois de ganhar o controle total sobre o sistema,
não são capazes de acessar o sistema. Mais e mais pedidos são destrói completamente os dados, resultando em enormes perdas
enviados para o servidor, o qual não pode lidar com eles. Isso para a empresa.
resulta em uma interrupção temporária nos serviços do servidor.
Anulando operação crítica do sistema
Divulgação completa de todos os dados no sistema
Um atacante pode operar o sistema e pode suspender todas as
Uma vez que a rede é comprometida os dados cruciais e operações cruciais executadas pelo sistema.
altamente confidenciais, como números de cartão de crédito,
detalhes do empregado, registros financeiros, etc., são Modificando os registros
divulgados.
Os atacantes podem modificar os registros da empresa, o que
prova ser um grande revés para o sistema de gerenciamento de
banco de dados da empresa.
9
Tipos de SQL Injection
Injeção SQL simples Blind SQL Injection
Um script de injeção de SQL simples constrói uma consulta SQL Onde quer que haja uma vulnerabilidade em uma aplicação web,
concatenando sequências codificadas com uma string digitada o blind SQL injection pode ser utilizado tanto para acessar os
pelo usuário. A injeção de SQL simples é novamente dividido em dados sensíveis ou para destruir os dados. O atacante pode
dois tipos: roubar os dados fazendo uma série de perguntas de verdadeiro
ou falso através de instruções SQL.
1. Union SQl Injection - Union SQL Injection é utilizado quando
o usuário utiliza o comando UNION. O atacante verifica a
vulnerabilidade adicionando uma aspas no final de um
arquivo ".php?Id=".
2. Erro-based SQL Injection - O atacante faz uso das mensagens
de erro de nível de banco de dados divulgadas por uma
aplicação.
10
SQL Injection Simples
Um script de injeção de SQL simples constrói uma consulta SQL Illegal/Logically Incorrect Query: Um atacante pode obter
concatenando strings hard-coded com a string digitada pelo conhecimento através da injeção de solicitações ilegais/logicas
usuário. A seguir estão os vários elementos associados com incorretas como parâmetros injetáveis, tipos de dados, nomes de
ataques de injeção de SQL simples: tabelas, etc.
System Stored Procedure: Os atacantes exploram procedimentos Tautologia: A injeção de declarações que sempre são verdadeiras
de armazenamento do banco de dados para perpetuar os seus para que as consultas sempre retornar resultados na avaliação de
ataques. uma condição WHERE.
Comentário de fim da linha: Depois de injetar o código em um SELECT * FROM users WHERE name = " OR '1' = '1';
campo particular, o código legítimo que se segue é anulado
através do uso de final de comentários de linha. Por exemplo: Union Query: A instrução "UNION SELECT" retorna a união de
um conjunto de dados com outro conjunto de dados de destino.
SELECT * FROM user WHERE name = 'x' AND USERID IS NULL; --‘;
[Link] UNION SELECT ALL
1,DB_NAME,3,4--
11
SQL Injection Simples
UNION Extrair as tabelas do banco de dados - Este é o exemplo de
injeção de SQL que um invasor usa para extrair as tabelas do
O UNION SQL Injection é utilizado quando o usuário utiliza o banco de dados.
comando UNION. O usuário verifica a vulnerabilidade
adicionando uma aspas no final do arquivo ".php?Id=". Se o [Link] UNION SELECT ALL
resultado for um erro de MySQL, o site provavelmente é 1,name,3,4 from sysobjects where xtype=char(85) –
vulnerável a injeção de SQL UNION. O atacante em seguida,
passa a usar ORDER BY para encontrar as colunas, e no final, ele
utiliza o comando UNION ALL SELECT.
Extrair nomes de coluna da tabela - Este é o exemplo de injeção
Extrair o nome do banco de dados - Este é o exemplo de Union de SQL que um invasor usa para extrair os nomes das colunas da
sql injection que um atacante tenta extrair um nome de banco de tabela.
dados.
[Link] UNION SELECT ALL
[Link] UNION SELECT ALL 1,column name,3,4 from DB_NAME. information_schema.
1,DB_NAME,3,4-- Columns where table_name=´EMPLOYEE_TABLE´ --
12
Blind SQL Injection
Blind SQL Injection é utilizado quando uma aplicação web é
vulnerável a injecção de SQL. Em muitos aspectos, SQL Injection
e Blind SQL injection são a mesma coisa, mas há pequenas
diferenças. O SQL injection depende de mensagens de erro, mas
o blind SQL injection não é dependente de mensagens de erro.
Onde quer que haja vulnerabilidade de aplicações web, o blind
sql injection pode ser utilizado tanto para acessar os dados
sensíveis ou para destruir os dados. Os atacantes podem roubar
os dados fazendo uma série de perguntas de verdadeiro ou falso
através de instruções SQL. O resultado da injeção não é visível
para o atacante.
13
Metodologia de SQL Injection
14
Técnicas de
evasão de IDS
▪ Sophisticated Matches: Usa expressão
alternativa ao "OR 1=1".
▪ Codificação Hexadecimal: Usa codificação
hexadecimal para representar uma sequência
de consulta SQL.
▪ Comentário In-Line: Ofusca entradas de
strings inserindo comentários in-line entre
palavras-chave de SQL.
▪ Concatenação de string: Concatena o texto
para criar palavra-chave de SQL usando
instruções específicas do banco de dados.
▪ Codificação Char: Usa a função CHAR para
representar um caracter.
15
Técnicas de evasão de IDS
16
Conceitos de SQL Injection:
A injeção de SQL é um tipo de
vulnerabilidade de aplicações web,
onde um atacante pode manipular e
enviar um comando SQL para recuperar
as informações do banco de dados.
Este tipo de ataque ocorre
principalmente quando uma aplicação
web executa os dados fornecidos pelo
usuário sem valida-los.
Ele pode dar acesso a informações
confidenciais, como números de cartão
de crédito ou outros dados financeiros
para o atacante e permite que um
atacante crie, leia, atualize, altere ou
exclua os dados armazenados no banco
de dados. É uma falha em aplicações CEHv12 (ANSI)
web e não um problema de servidor de
banco de dados ou web. A maioria dos
programadores ainda não estão
conscientes desta ameaça. [Link] Injection
17
Obrigado!
“QUEM NÃO SABE O QUE PROCURA, NÃO PERCEBE QUANDO ENCONTRA”.