Compreender e procurar vulnerabilidades de redirecionamento aberto

A tradução do artigo foi preparada em antecipação ao início do curso "Segurança de Aplicativos Web" .








Uma das vulnerabilidades mais comuns e ainda negligenciadas pelos desenvolvedores da web é o Open Redirect (também conhecido como "Redirecionamentos e encaminhamentos não verificados"). Um site é considerado vulnerável ao Redirecionamento aberto se os valores do parâmetro (a parte da URL após o "?") Na solicitação HTTP GET redirecionar o usuário para um novo site sem verificar o site de destino. Dependendo da arquitetura do site vulnerável, o redirecionamento pode ocorrer após certas ações, como o login, e às vezes pode acontecer instantaneamente no carregamento da página.



Um exemplo de link vulnerável se parece com isto: www.example.com/login.html?RelayState=http%3A%2F%2Fexample.com%2Fnext



Neste exemplo, o parâmetro "RelayState" especifica para onde redirecionar o usuário após um login bem-sucedido (em nosso o exemplo é example.com/next ). Se o site não verificar o valor do parâmetro "RelayState" para legitimidade e segurança, o invasor pode usar esse parâmetro para redirecionar a vítima para uma página falsa criada pelo próprio invasor: www.example.com/login.html?RelayState=http%3A%2F % 2FEvilWebsite.com



Vulnerabilidades como o Redirecionamento aberto são privadas da atenção dos desenvolvedores, uma vez que não danificam diretamente o site e não fornecem a um invasor a capacidade de roubar dados da empresa diretamente. No entanto, isso não significa que o Redirecionamento aberto não seja uma ameaça. Um dos principais usos desse tipo de ataque é conduzir ataques de phishing eficazes e confiáveis.



Quando um ataque de phishing usa Redirecionamento aberto, a vítima pode receber um e-mail de aparência plausível com um link que aponta para o domínio correto e familiar para a vítima. O que a vítima pode não notar é que existem parâmetros no meio da URL que alteram o endpoint de redirecionamento. Para complicar a detecção de Redirecionamento aberto, um redirecionamento pode ocorrer após a vítima inserir um nome de usuário e uma senha em um site genuíno. Os invasores descobriram que uma maneira eficaz de enganar a vítima é redirecioná-la para um site falso depois de inserir seu nome de usuário e senha no site real. O site falso será semelhante ao site real e pedirá à vítima para inserir a senha novamente. Depois que a vítima fizer isso, a senha será anotada pelo invasor,e a vítima será redirecionada de volta ao site real. Se tudo for feito corretamente, a vítima vai pensar que errou com a senha na primeira vez e não perceberá que seu nome de usuário e senha foram roubados.



O phishing é usado na maioria dos hacks direcionados bem-sucedidos, bem como regularmente em ataques oportunistas. Considerando o quão comum é o phishing na vida cotidiana, vulnerabilidades como o Open Redirect também não devem ser descartadas.



Seria injusto destacar um determinado site ou empresa como vulnerável ao Redirecionamento aberto, porque essa vulnerabilidade é comum. Em vez disso, seria útil mostrar quantos desses sites existem e como é fácil encontrá-los.



Fazer uma pesquisa na web é uma das melhores maneiras de encontrar o Open Redirect em seu próprio site e em outros lugares na Internet em geral.



O mecanismo de pesquisa do Google oferece flexibilidade para escrever consultas de pesquisa, incluindo consultas que procuram especificamente URLs de páginas.



Os seguintes operadores e caracteres especiais permitirão a qualquer usuário criar consultas marcadas que podem ajudar a detectar o Redirecionamento aberto:



  • allinurlÉ a operadora que informa ao Google para pesquisar o URL para todas as palavras-chave especificadas. Por exemplo: ele allinurl:ReturnUrlpesquisará todas as páginas da web que tenham uma parte ReturnUrl no endereço.
  • site- um operador que diz para retornar apenas os resultados que estão em um domínio ou site específico. Exemplo: site:example.comprocurando páginas da web por example.com.
  • "" - aspas duplas são caracteres especiais usados ​​para indicar a busca por uma combinação exata de palavras e caracteres entre aspas.
  • * - um asterisco é um curinga que representa uma ou mais palavras.


A sua utilização permite-nos encontrar indícios de um potencial Redireccionamento Aberto: podemos pesquisar simultaneamente a presença dos tokens "http" e "https" nos parâmetros do pedido GET. Por exemplo:



allinurl:%3Dhttps*
allinurl:%253Dhttps*
allinurl:%3Dhttp*
allinurl:%253Dhttp*


Também podemos pesquisar palavras gerais específicas relacionadas ao redirecionamento na área de parâmetros de solicitação GET. Por exemplo:



allinurl:"<keyword>=https"
allinurl:"<keyword>=http"
allinurl:<keyword>=https
allinurl:<keyword>=http
allinurl:<keyword>%3Dhttps
allinurl:<keyword>%3Dhttps*
allinurl:<keyword>%253Dhttps
allinurl:<keyword>%253Dhttps*
allinurl:<keyword>%3Dhttp
allinurl:<keyword>%3Dhttp*
allinurl:<keyword>%253Dhttp
allinurl:<keyword>%253Dhttp*
allinurl:<keyword>


Em vez disso <keyword>, usaremos uma das seguintes palavras específicas de redirecionamento: RelayState, ReturnUrl, RedirectUri, Return, Return_url, Redirect, Redirect_uri, Redirect_url, RedirectUrl, Forward, Forward_url, SuccessUrl, Redir, Exit_url, Destination . Esta não é uma lista completa de palavras-chave. Você pode descobrir mais analisando os resultados das consultas de pesquisa de URL mais gerais na seção Parâmetros de solicitação GET.



Para pesquisas direcionadas, você pode adicionar «site:<domain_name>»ao final de suas pesquisas no Google. Este método pode ajudá-lo a encontrar vulnerabilidades de Redirecionamento aberto em seu próprio site.



Com uma pesquisa tão simples, você pode encontrar dezenas de vulnerabilidades de Redirecionamento aberto em minutos. A lista de sites vulneráveis ​​inclui sites de bancos, corporações internacionais, empresas confiáveis, projetos favoritos e vários sites de pequenas organizações. Como um bônus adicional, cada vez que um rastreador do Google se depara com sites do Open Redirect, receberemos resultados atualizados por meio de consultas.



A melhor maneira de evitar a vulnerabilidade de Redirecionamento aberto é evitar o redirecionamento de parâmetro específico do usuário ou solicitação GET. Se um redirecionamento for inevitável, ele pode ser resolvido validando o site de destino e limpando sua reputação com uma lista de permissões de URLs validados.



Eu encorajaria você a contar aos seus amigos desenvolvedores da web sobre o Redirecionamento aberto. Você pode encaminhar este artigo a eles ou mesmo descobrir vulnerabilidades usando o método mencionado acima e relatá-lo à empresa com uma descrição detalhada do problema. Vamos tornar os ataques de phishing mais difíceis juntos!



Se quiser compartilhar suas pesquisas do Google que funcionam para detecção de Redirecionamento aberto, você pode fazer isso nos comentários.






Saiba mais sobre o curso







All Articles