palestra - phpeste 2015 - hacker do bem, quebrando as principais dicas de desenvolvimento seguro

27
Hacker do bem, quebrando as principais dicas de desenvolvimento seguro. @ThiagoDieb

Upload: thiago-dieb

Post on 15-Apr-2017

478 views

Category:

Technology


1 download

TRANSCRIPT

Hacker do bem, quebrando as

principais dicas de desenvolvimento

seguro.@ThiagoDieb

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 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

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

Como resolver o problema ?

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

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;

Contribua !

https://joind.in/15205

Obrigado

@ThiagoDiebhttp://www.aszone.com.br