Alcyon Junior apresenta sobre SQL Injection e Google Hacking, incluindo como operadores de pesquisa no Google podem ser usados para encontrar vulnerabilidades em sites e banco de dados e como ataques de SQL Injection funcionam ao explorar falhas na validação de entrada de dados. Ele também demonstra a ferramenta InURLBR que combina essas técnicas.
2. Alcyon Junior, evangelizador do software livre, é
Consultor de Segurança Cibernética das Nações
Unidas, Professor na Universidade Católica de
B r a s í l i a e m a n t e n e d o r d o P o r t a l T I C
http://portaltic.com.
●
Três graduações em Tecnologia de Informação, com
ênfase em redes de computador.
●
Certificado em :
– ISFS ISO/IEC 27002
– CNAP
– LPIC-1
– Macfee Vulnerability Manager
●
Pós-graduado em Redes de Computador pela CISCO
●
MBA em Governança de TI.
●
Mestre em Gestão do Conhecimento e da Tecnologia
da Informação com ênfase em Segurança Cibernética
pela Universidade Católica de Brasília.
WHOAMI
4. 29/10/14 Alcyon Junior - alcyon@portaltic.com 4
PortalTIC e o Virtual Learning Center
http://portaltic.com/
http://portaltic.com/vlc
5. 29/10/14 Alcyon Junior - alcyon@portaltic.com 5
Introdução
O que é Google Hacking?
O que é SQL Injection?
Como?
Porque?
Conclusão?
AGENDA
6. 29/10/14 Prof. Alcyon Junior 6
Segurança é um estado.
Em um momento você pode
parecer seguro, em outro não.
O QUE É SEGURANÇA?
7. 29/10/14 Alcyon Junior - alcyon@portaltic.com 7
Se você acredita que a
tecnologia pode resolver seus
problemas de segurança,
então você ….
VAMOS PENSAR UM POUCO?
9. 29/10/14 Alcyon Junior - alcyon@portaltic.com 9
“Se você acredita que a tecnologia pode
resolver seus problemas de segurança, então
você não conhece os problemas e nem a
tecnologia.”
Bruce Schneier
VAMOS PENSAR UM POUCO?
10. 29/10/14 Alcyon Junior - alcyon@portaltic.com 10
Você sabe o que é Google
Hacking?
Google Hacking
11. 29/10/14 Alcyon Junior - alcyon@portaltic.com 11
A técnica de google hacking foi introduzida pela primeira
vez por Johnny Long, na Defcon 13, inclusive ele ja
publicou um livro sobre o assunto chamado "Google
Hacking for Penetration Testers" - uma obrigação para
qualquer Googlenaut.
A ideia geral por tras do "Google Hacking" é a utilização de
operadores de pesquisa especiais do Google para melhorar
os nossos resultados e assim localizar arquivos muito
específicos, geralmente com um formato conhecido ou que
nos tragam algum dado relevante.
Google Hacking
12. 29/10/14 Alcyon Junior - alcyon@portaltic.com 12
Google oferece operadores avançados que nos ajudam a
melhorar nossas consultas. Esses operadores, usados
corretamente,podem ajuda-lo a obter exatamente a informação
que você esta procurando, sem gastar muito tempo debruçado
sobre paginas após paginas de resultados de pesquisa.
• Intitle, allintitle, info, bphonebook
• Inurl, allinurl, related, phonebook,rphonebook
• Filetype, site, link, cache, author, group, msgid
• Allintext, inanchor, daterange, insubject, stocks e define
Google Hacking
13. 29/10/14 Alcyon Junior - alcyon@portaltic.com 13
Alguns testes:
●
site:aeoi.org.ir
●
site:aeoir.org.ir filetype:pdf
●
email password site:aeoi.org.ir
●
mysql dump filetype:sql
●
"Powered by phpBB" inurl:"index.php?s" OR
inurl:"index.php?style"
Google Hacking
14. 29/10/14 Alcyon Junior - alcyon@portaltic.com 14
Encontrando servidores vulneraveis
Todos os dias, novas vulnerabilidades em aplicações web são
encontradas e publicadas nos sites de segurança
(securityfocus.com). O Google pode muitas vezes ser utilizado
para identificar os servidores que contenham essas
vulnerabilidades.
Por exemplo, em fevereiro de 2006, uma vulnerabilidade phpBB
(portal de fórum em php) foi divulgada. Hackers usaram o Google
para identificar rapidamente todos os sites que executavam o
phpBB, e esses sites foram alvo de ataques. Leia mais sobre a
vulnerabilidade e seu exploit aqui:
http://www.exploit-db.com/exploits/1469
Google Hacking
15. 29/10/14 Alcyon Junior - alcyon@portaltic.com 15
Você sabe o que é SQL
Injection?
Teste de Invasão
16. 29/10/14 Alcyon Junior - alcyon@portaltic.com 16
Falaremos sobre um assunto muito importante, que envolve a
segurança dos nossos projetos em PHP e MySQL, o temido
SQL Injection. Se você é programador com certeza ja ouviu à
respeito, mas se nunca entendeu ao certo vou explicar do que
se trata.
O SQL Injection é um ataque que visa enviar comandos
nocivos à base de dados através de campos de formularios ou
através de URLs. Um ataque bem-sucedido pode, por exemplo,
apagar uma tabela do banco, deletar todos os dados da tabela
ou até adquirir senhas que estejam cadastradas.
SQL Injection
17. 29/10/14 Alcyon Junior - alcyon@portaltic.com 17
SQL Injection pode ser dividido em 3 classes
Inband - dados são extraídos usando o mesmo canal que é usada para
injectar o código SQL. Este é o tipo mais simples de ataque, em que os
dados recuperados são apresentados diretamente na pagina web aplicação
Out-of-Band - os dados são recuperados usando um canal diferente (por
exemplo: um e-mail com os resultados da consulta é gerado e enviado para
o testador)
Inferencial - não ha transferência real de dados, mas o testador é capaz de
reconstruir a informação através do envio de solicitações específicas e
observando o comportamento resultante do website / DB Server.
SQL Injection
18. 29/10/14 Alcyon Junior - alcyon@portaltic.com 18
Vamos imaginar um problema:
Temos uma aplicação com um formulario que
recebe um nome de usuario, e depois faz uma
consulta ao banco de dados:
SQL Injection
20. 29/10/14 Alcyon Junior - alcyon@portaltic.com 20
Neste caso o atacante pode enviar o caractere
(aspas simples) dentro do texto, como se ele
fizesse parte do mesmo; mas na verdade ele
acabou sendo interpretado pelo banco de dados
como sendo o fechamento da string SQL.
SQL Injection
21. 29/10/14 Alcyon Junior - alcyon@portaltic.com 21
Solução
Os valores a serem inseridos no banco podem conter caracteres especiais, como aspas e
aspas simples. Eles devem ser previamente preparados para depois fazerem parte da string
SQL.
O PHP fornece uma série de funções para este tratamento, são as funções de escape de
caracteres. A maioria dos bancos suportados pelo PHP tem esta função.
MySQLi - mysqli::real_escape_string
MySQL - mysql_escape_string
Postgre - pg_escape_string
SQLite - sqlite_escape_string
O código corrigido fica assim. Repare que agora as aspas são "escapadas" e não são mais
interpretadas pelo banco de maneira indevida.
SQL Injection
24. 29/10/14 Alcyon Junior - alcyon@portaltic.com 24
Falando um pouco da tool, busca avançada em
motores de busca, possibilita desde analise com
exploit GET/POST a captura de emails &
validação personalizada interna para cada
alvo/url encontrada.
InURLBR