Upload
thiago-dieb
View
485
Download
1
Embed Size (px)
Citation preview
Certezas
● Sistemas a prova de balas não existe.● O sucesso do ataque só existe se o outro lado falhar.● Sempre falhamos.● Que ainda seremos atacados.● Um dia a morte chegará.
Incertezas
● Estou realmente seguro ?● Escrevi o código da forma certa ?● Meu sistema será mesmo atacado ?● Como ele invadiu ?● Como ele invadiu de novo ?● ET existe ?
Hacking VS DesenvolvimentoAlguém conhece este senhor ?
Desenvolvedor do OpenSSL
Programador
Possue origem Alemã
Responsável por uma das maiores vulnerabilidades de 2014
Hacking VS Desenvolvimento
“em uma das novas funcionalidades, infelizmente, eu me esqueci de validar uma variável contendo um comprimento”
Robin-Seggelmann
Responsável pelo HeartBleed, desde 2011.Revisor - Dr Stephen Henson, até então não deu sinal.
Hacking VS Desenvolvimento
Falha
2412 /* Read type and payload length first */2413 hbtype = *p++;2414 n2s(p, payload);2415 pl = p;
Correção+ /* Read type and payload length first */+ if (1 + 2 + 16 > s->s3->rrec.length)+ return 0; /* silently discard */+ hbtype = *p++;+ n2s(p, payload);+ if (1 + 2 + payload + 16 > s->s3->rrec.length)+ return 0; /* silently discard per RFC 6520 sec. 4 */+ pl = p;
Desenvolvimento Seguro
● Muitos desafios● Procedimentos complexos● Poucos conhecem● Não garante 100% de segurança
OWASP - Top 10A1 - Injection
A2 - Broken Authentication and Session Management
A3 - Cross-Site Scripting (XSS)
A4 - Insecure Direct Object References
A5 - Security Misconfiguration
A6 - Sensitive Data Exposure
A7 - Missing Function Level Access Control
A8 - Cross-Site Request Forgery (CSRF)
A9 - Using Components with Known Vulnerabilities
A10 - Unvalidated Redirects and Forwards
Sql Injection
“Ataque que proporciona o invasor inserir ou manipular consultas SQL`s utilizadas por uma aplicação”
Sql Injection
Resultados de uma simples busca resolveria ?
● http://phpbrasil.com/artigo/v5Ejt4VOld2r/anti-sql-injection--solucao-global
● http://www.vivaolinux.com.br/script/Funcao-Anti-MySQL-Injection-Proteja-sua-aplicacao
Será mesmo ?
Sql InjectionOnde está o erro?
Bypass:
“Sele*ct login,senha frofromm tabela_x”
“Select login,senha from tabela_x
Exemplo:
“Select login,senha from tabela_x” => “login,senha tabela_x”
preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"), "" ,$sql);
Sql Injection
Considerações
● Sempre aplique validação nas entradas de dados, exemplo:○ Inteiros - valide como inteiro○ Strings - exclua as aspas○ true, false - converta para bollean
● Utilize camada de abstração de dados (ORM).● Recurso a Prepared Statements.
File Upload
“Vulnerabilidade que permite efetuar upload de algum arquivo, no qual o sistema não está preparado.”
File Upload
Resultados de uma simples busca resolveria ?● http://www.uolhost.com.br/faq/hospedagem/como-fazer-o-upload-de-
arquivos-via-php.html#rmcl● http://wiki.locaweb.com/pt-br/PHP_-_Upload_de_arquivos
Será mesmo ?
File Uploadhttp://www.uolhost.com.br/faq/hospedagem/como-fazer-o-upload-de-arquivos-via-php.html#rmcl
● Simplesmente não valida nada, e ainda diz pra usar 777 na pasta.
http://wiki.locaweb.com/pt-br/PHP_-_Upload_de_arquivos
● if (!(eregi(".php$", $_FILES[arquivo][name]))) {● Esqueceu que apache interpreta, .php3, .php5
File Upload
Considerações
● Ajustar as configurações dos serviços WEB;● IIS merece atenção;● Não confie apenas no mimetype ou extensão;● Atenção a permissões de pastas, arquivos e usuários;● Monitoramento constante;● Trabalhe com aplicações em ambientes segregados;● Verifique todas possíbilidades do white ou blacklist da função.
Local File Download / Disclosure
“É a vulnerabilidade que possibilita a apresentação ou o download de arquivos, independente da linguagem: php, asp, java, etc”
Resultados de uma simples busca resolveria ?
● https://www.developphp.com/video/PHP/Force-File-Download-Dialog-In-Browser-Tutorial
● http://www.devmedia.com.br/forcar-download-de-arquivos-com-php/17097
Será mesmo ?Local File Download /
Disclosure
https://www.developphp.com/video/PHP/Force-File-Download-Dialog-In-Browser-Tutorial
● Alteramos o html do hidden inserindo “../” e o arquivo que queremos.
http://www.devmedia.com.br/forcar-download-de-arquivos-com-php/17097
● Realmente valida php, mas esquecem que existe arquivos de configurações em ini,yml,inc.
Local File Download / Disclosure
Considerações
● Validação do lado do Servidor● Crie filtros por "whitelist".● Defina previamente o caminho das pastas.● Não permita navegação - “../”● Validação por registro na base de dados.
Local File Download / Disclosure
Conclusão● Segurança não é uma coisa e sim um estado.● Segurança em primeiro plano, ela pode acabar detonar sua imagem● Pense como hacker, pense diferente, ataque a si próprio;● Monitore seus sistemas;● Busque utilizer diretrizes de desenvolvimento seguro;● A equipe de Infraestrutura não é seu inimigo, confie neles. ● Nunca esqueça de fazer "Code review" e "Par programming";● Use como regra: Pentest em cada ciclo de desenvolvimento;● Infraestrutura voltada para segurança;● Analise logs e movimentações estranhas;● Mantenha informado e atualizado sempre sobre segurança;