cross site request forgery
DESCRIPTION
CSRFTRANSCRIPT
Tiago Natel de Moura
A5 – Cross Site Request Forgery
About Me
• Tiago Natel de Moura aka i4k• Co-Fundador do BugSec Security Team
• http://bugsec.googlecode.com/• Co-Fundador do OWASP Florianópolis.• Consultor de Segurança na SEC+
• www.secplus.com.br
O que é CSRF?
• Cross Site Request Forgery é um ataque que força um usuário a executar ações arbitrárias numa aplicação web que ele esteja autenticado.
• Usando diversas técnicas como engenharia social, XSS, URL encurtadas, etc, um atacante pode induzer usuários de uma aplicação web a executar ações de sua escolha.
Exemplo 1: Engenharia Social
• http://bank.com/ é vulnerável a CSRF• Usuário Alice tem conta em Bank e recebe um
spam com o link encurtado: http://goo.gl/NtNXR
• Se ela clicar no link e coincidir de estar logada na conta do seu banco ela irá transferir $ 5000.00 para a conta do cracker.
Exemplo 1: Engenharia Social
• http://goo.gl/NtNXR resolve para:• http://bank.com/transfer.do?
dest_account=66666&amount=5000.00
Exemplo 2: XSS
• http://bank.com/ é vulnerável a CSRF.• Alice tem conta em Bank e também visita o blog
de Bob que é vulnerável a XSS.• Atacante posta um comentário no blog de Bob
com uma imagem invisível <img src=”http://bank.com/transfer.do?dest_acc=6666&amount=5000” width="1" height="1" border="0" />
• Quando Alice visitar o blog de Bob seu navegador irá tentar requisitar a imagem na URL e vai completar a transação.
Alvos
• Internet Banking• Redes Sociais• WebMail• Intranets• outros
SocialEngine 4.2.2 0Day
• Product: Social Engine v4.2.2• Vendor-URL: http://www.socialengine.net/• Discovered by: Tiago Natel de Moura aka "i4k"• Discovered at: 10/04/2012• CVE Notified: 10/04/2012• CVE Number: CVE-2012-2216• Vendor Notified at: 11/04/2012• CVE published: None
SocialEngine 0Day
SocialEngine 0Day
SocialEngine 0Day
• SocialEngine é uma aplicação web para criação de redes sociais customizáveis.
• Feita em PHP com Zend Framework• Proprietário
Falhas Encontradas
• Persistent XSS: music upload• Persistent XSS: create events• Reflected XSS: search form of events • CSRF: – Events: Abrir/Fechar/Observar eventos– Forum: Abrir/Fechar tópicos– Classified: Abrir/Fechar
CSRF
• Fechar um evento: – GET /index.php/events/topic/close/close/1/event_id/2/topic_id/2
• Abrir um evento:– GET /index.php/events/topic/close/close/0/event_id/2/topic_id/2
• Fechar um tópico do fórum:– GET /index.php/forums/topic/4/example-topic/close/close/1
• Abrir um tópico do fórum:– GET /index.php/forums/topic/4/example-topic/close/close/0
Contra-Medidas e Proteções
• Para áreas críticas:– Envie um token único em cada requisição.• Esse token deve identificar a sessão atual do usuário.
Usando a Session do servidor web e opcionalmente em conjunto com outras informações (UserAgent, Referer, etc).
– Valide o Referer– Impossibilite XSS nessas áreas (não reflita inputs
do usuário nem apresente informações persistidas).
Soluções Já existentes
Implementação:• OWASP CSRFGuard Project• ESAPI Framework
Teste• OWASP CSRFTester Project
Google Groups CSRF
• Google Groups Profile Delete CSRF• http://groups.google.com/groups/profile/
addphoto?Action.Delete=1
Obrigado!