"atacando e defendendo aplicações web" por rafael soares ferreira, sócio-diretor...
DESCRIPTION
"Atacando e Defendendo Aplicações Web" por Rafael Soares Ferreira, Sócio-Diretor técnico do Grupo Clavis Segurança da InformaçãoTRANSCRIPT
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Atacando (e protegendo) aplicações web
Rafael Soares FerreiraClavis Segurança da Informaçã[email protected]
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• InjeçõesOWASP Top 10 2010 - A1OWASP Top 10 2007 - A2
• Cross Site Scripting (XSS)OWASP Top 10 2010 - A2OWASP Top 10 2007 - A1
Principais Ameaças
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• Dados não esperados
• Strings interpretadas como comandos
• SQL, Shell, LDAP, etc...
• SQL é o caso mais comum
Injeções
Principais Ameaças
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
SELECT id FROM usuarios WHERE nome = '$nome' AND senha = '$senha';
<form method="post" action="http://SITE/login.php"><input name="nome" type="text" id="nome"><input name="senha" type="password" id="senha"></form>
Client-Side:
Server-Side:
Principais Ameaças
Injeções - Exemplos
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
' OR 'a'='a
SELECT id FROM usuarios WHERE nome = '$nome' AND senha = '' OR 'a'='a';
Client-Side: O Exploit!
Server-Side:
Principais Ameaças
Injeções - Exemplos
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Principais Ameaças
Injeções - Exemplos
Código PHP:
$query = "SELECT * FROM usuarios WHERE username ='" . $_REQUEST[‘usr'] . “’ AND passwd=‘“ . $_REQUEST[‘pwd’] . “’”;
Exploração:
login.php?usr=’+OR+‘1’=‘1’--&pwd=a
query <- SELECT * FROM usuarios WHERE username =‘’+OR+‘1’=‘1’--’ AND passwd=‘a’
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Principais Ameaças
Injeções - Exemplos
Código Java:
String query = "SELECT * FROM usuarios WHEREusername = '" + req.getParameter("usr") + "' andpasswd = '" + req.getParameter("pwd") +"'";
Exploração:
login.jsp?usr=admin’--&pwd=a
query <- SELECT * FROM usuarios WHERE username =‘admin’--’ AND passwd=‘a’
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
www.seginfo.com.br
Tradução da Tirinha “Exploits of a mom” do xkcd
Principais Ameaças
Injeções - Exemplos
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• Injeção de Comandos
• Exemplo:DNS lookup em domínios passados pelo usuário
Principais Ameaças
Injeções - Exemplos
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Código:$dominio = param(‘dominio');$nslookup = "/usr/bin/nslookup";
Exploit:clavis.com.br%20%3B%20/bin/ls%20-l
Principais Ameaças
Injeções - Exemplos
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Resultado:/usr/bin/nslookup clavis.com.br ; /bin/ls -l
Além do resultado do nslookup, o atacante receberá a lista dos arquivos que estão no diretório da aplicação
Principais Ameaças
Injeções - Exemplos
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
● Tratamento de entradas
● Validação por whitelist
● Minimize os privilégios
● OWASP:SQL_Injection_Prevention_Cheat_Sheet
Principais Ameaças
Injeções - Recomendações
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• Enviados ao browser do usuário
• Posts, URLs, javascript, etc...
• Todo Browser é “vulnerável”: javascript:alert(document.cookie)
• Redirecionamento e/ou roubo de dados
Cross-Site Scripting (XSS)
Principais Ameaças
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Principais Ameaças
Cross-Site Scripting (XSS)
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• Persistente
• Não Persistente
Tipos:
Principais Ameaças
Cross-Site Scripting (XSS)
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• Persistente
Dados enviados sem tratamento para usuários
Principais Ameaças
Cross-Site Scripting (XSS)
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Principais Ameaças
Cross-Site Scripting (XSS)
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• Não Persistente
Dados enviados de volta sem tratamento e executado no browser da vítima.
Principais Ameaças
Cross-Site Scripting (XSS)
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Principais Ameaças
Cross-Site Scripting (XSS)
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
• Código vulnerável<?phpecho “Hello ” . $_GET[‘name’] . ”.\n”;?>
• Requisiçãoindex.php?name=<script>alert(1)</script>
Principais Ameaças
Cross-Site Scripting (XSS)
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Principais Ameaças
Cross-Site Scripting (XSS)
● Validação de entrada
● Validação de saída
● Validação de elementos do DOM
● OWASPXSS Prevention Cheat Sheet
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Outras Ameaças
● Quebra de Autenticação / Sessão
• Referência direta à objetos
• Cross-Site Request Forgery (CSRF)
• Falhas de Configuração
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Outras Ameaças
● Armazenamento Inseguro
• Falha na Restrição de Acesso à URLs
• Canal Inseguro
• Redirecionamentos Não-Validados
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Referências
● OWASP Top 10https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
• OWASP Testing Guidehttps://www.owasp.org/index.php/Category:OWASP_Testing_Project
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Dúvidas?
Perguntas?
Críticas?
Sugestões?
Copyright © 2009 Clavis Segurança da Informação. Todos os direitos reservados.
Copyright © 2011 Clavis Segurança da Informação. Todos os direitos reservados.
Fim...
Muito Obrigado!
Rafael Soares Ferreira
@rafaelsferreira