Open Redirect
- Gustavo Viana
- Segurança ofensiva
- 9 de abril de 2024
Uma vulnerabilidade de Open Redirect ou Redirecionamento Aberto ocorre quando uma aplicação web permite que um usuário controle o redirecionamento ou encaminhamento do site para outra URL de forma arbitrária.
A OWASP classifica essa vulnerabilidade como Unvalidated Redirects and Forwards e também existe o CWE-601: Redirection to Untrusted Site (‘Open Redirect’) para a documentação dessa vulnerabilidade.
Um atacante pode explorar essa falha ao alterar um parâmetro na URL do site vulnerável, adicionando uma URL maliciosa que, ao ser acessada pelos usuários, pode redirecioná-los para sites de phishing ou com malware, comprometendo a segurança dos dados dos usuários e a confiança na aplicação.
Atacantes utilizam esta técnica pois podem ter mais credibilidade com as vítimas ao enviar uma URL que é famosa, familiar ou reconhecida.
Explorando vulnerabilidade Open Redirect
Agora veremos como explorar a vulnerabilidade Open Redirect ou Redirecionamento aberto de forma manual e também realizando Fuzzing através do Burp Suite.
Para realizar os exemplos abaixo estamos utilizando a DVWA(Damn Vulnerable Web Application) .
Identificando um entry point
A primeira coisa a se fazer é identificar um parâmetro interessante para realizar fuzzing ou testes manuais. Os mais comuns de serem achados em uma URL são:
?next={payload}
?url={payload}
?target={payload}
?dest={payload}
?destination={payload}
?redir={payload}
?redirect_uri={payload}
?redirect_url={payload}
?redirect={payload}
/redirect/{payload}
/out/{payload}
/out?{payload}
?to={payload}
?go={payload}
?return={payload}
?returnTo={payload}
?return_to={payload}
?checkout_url={payload}
?continue={payload}
?return_path={payload}
Caso você tenha instalado o DVWA, por exemplo, encontrará uma URL semelhante a:
http://localhost/DVWA/vulnerabilities/open_redirect/source/low.php?redirect=
Neste caso, o parâmetro redirect é um alvo interessante.
Explorando manualmente
Para realizar uma POC (Proof of Concept ou Prova de Conceito) você pode utilizar o comando curl :
Info
O domínio dvwa.ironlinux.com.br não é público e representa uma instalação comum do DVWA.
curl -I http://dvwa.ironlinux.com.br/DVWA/vulnerabilities/open_redirect/source/low.php?redirect=https://blog.ironlinux.com.br
Como é possível identificar na imagem acima, após enviar a requisição em questão, recebemos o HTTP Status 302 (Movido temporariamente) e o destino (location) foi a URL https://blog.ironlinux.com.br .
Com Burp
O Burp pode auxiliar na exploração dessa vulnerabilidade através do módulo Intruder.
Depois de enviar a URL possivelmente vulnerável para o Intruder, basta realizar os seguintes procedimentos:
- Selecione o conteúdo do parâmetro que deseja realizar o fuzzing e clique em Add
- Clique na aba Payloads e cole os payloads desejados (No fim deste post foram colocados alguns) e clique em Attack para iniciar o fuzzing
- Depois de finalizado, basta identificar quais requisições tiveram HTTP Status 302 na resposta
Onde encontrar payloads para executar o Fuzzing
Você pode utilizar o Google ou o compilado de payloads lists abaixo:
https://raw.githubusercontent.com/harm0nious/open-redirect-payloads/main/payloads.txt
Como alguns sites possui whitelist nos domínios de destino do redirecionamento, é necessário subtituir o texto site-em-whitelist.com.br para outro domínio desejado. Por exemplo, para alterar para outro-site.com.br basta executar:
curl https://raw.githubusercontent.com/harm0nious/open-redirect-payloads/main/payloads.txt | sed 's|site-em-whitelist.com.br|outro-site.com.br|g'
Como se prevenir da vulnerabilidade Open Redirect
Para se prevenir dessa vulnerabilidade você poderá realizar as seguintes ações:
- Verificar se realmente é necessário ter um redirecionamento via URL
- Validar os parâmetros que podem ser alterados pelo usuário
- Criar uma whitelist das URLs que podem receber o redirecionamento
- Utilizar um WAF para detecção e mitigação do problema
- Criar uma notificação para que o usuário saiba que está sendo redirecionado para outra página
Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !