fisl 16 – nem tudo o que reluz é ouro. hackeando as principais dicas de desenvolvimento seguro
TRANSCRIPT
Hackeando as principais dicas de desenvolvimento
seguro.
Nem tudo o que reluz é ouro.
Quem somos?!Thiago DiebLenon Leite
ASZone?! http://www.aszone.com.br
Certezas
● Sistemas a prova de balas não existe.● O sucesso do ataque só existe se o outro lado falhar.● Sempre falhamos.● Que ainda será atacado.● Um dia a morte chegará.
Incertezas
● Meu sistema será atacado ?● Estou realmente seguro ?● Escrevi o código da forma certa ?● Como ele invadiu ?● Como ele invadiu de novo ?● ET existe mesmo ?
Hacking VS DesenvolvimentoQuem conhece?
Hacking VS Desenvolvimento
● Robin-Seggelmann - Desenvolvedor do Opennssl.● Responsável pelo HeartBleed, desde 2011.● Revisor - Dr Stephen Henson, até então não deu sinal.
“em uma das novas funcionalidades, infelizmente, eu me esqueci de validar uma variável contendo um comprimento”
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;+
Hacking VS Desenvolvimento
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
Sql Injection
Artigos relevantes de como evitar sql injection. Será mesmo ?
● http://phpbrasil.com/artigo/v5Ejt4VOld2r/anti-sql-injection--solucao-global● http://www.vivaolinux.com.br/script/Funcao-Anti-MySQL-Injection-Proteja-
sua-aplicacao
…. Hackeando dicas ….
Sql Injection
Segredo:*_replace => Age na identificação de algum item setado e altera por outro parametro que desejar.
Exemplo:
“Select login,senha from tabela_x” => “login,senha tabela_x”
$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"), "" ,$sql);
Bypass:
“Sele*ct login,senha frofromm tabela_x” =>
“Select login,senha from tabela_x”
Sql Injection
Conclusão
● 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
File UploadArtigos relevantes de como evitar file upload.
Será mesmo ?● 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
…. Hackeando dicas ….
File Upload
Segredo:http://www.uolhost.com.br/faq/hospedagem/como-fazer-o-upload-de-arquivos-via-php.html#rmclSimplesmente não valida nada, e ainda diz pra usar 777 na pasta.
http://wiki.locaweb.com/pt-br/PHP_-_Upload_de_arquivosif (!(eregi(".php$", $_FILES[arquivo][name]))) {Esqueceu que apache interpreta, .php3, .php5
File Upload
Conclusõ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”
Local File Download / Disclosure
Local File Download / DisclosureArtigos relevantes sobre o tema.
Será mesmo ?● 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
…. Hackeando dicas ….
Local File Download / Disclosure
Segredo:https://www.developphp.com/video/PHP/Force-File-Download-Dialog-In-Browser-TutorialAlteramos o html do hidden inserindo “../” e o arquivo que queremos.
http://www.devmedia.com.br/forcar-download-de-arquivos-com-php/17097Realmente valida php, mas esquecem que existe arquivos de configurações em ini,yml,inc.
Local File Download / Disclosure
Conclusõ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.
Desenvolvimento Seguro
Microsoft SDL OpenSAMMOWASP
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;
http://www.aszone.com.br
@ThiagoDieb@LenonLeite