Redirection et renvois non validés

1. PrincipeRetour en arrière

Les redirections d'adresse sont utilisées dans les applications Web pour effectuer un changement de page en fonction d'un paramètre.

L'utilisation de la redirection est particulièrement utilisée pour les attaques par hameçonnage (ou phishing). En cliquant sur un lien utilisant une page de redirection, l'utilisateur est automatiquement emmené vers une autre page. Cette redirection peut être utilisée dans le cadre d'une attaque CSRF (voir paragraphe III.F).

2. Exemples d'attaque

Le script suivant est un exemple de page de redirection en utilisant la redirection par code HTML.

Figure 27 - Script PHP de redirection automatique

Sélectionnez

<?php 
$nouvelleAdresse='http://nouvelle.adresse.fr/index.php'; 
if (isset($_GET['adresse'])) { 
$nouvelleAdresse=$_GET['adresse']; 
} 
echo '<!DOCTYPE html>'."\n", 
'<html xmlns="http://www.w3.org/1999/xhtml">'."\n", 
'<head>'."\n", 
'<meta charset="UTF-8" />'."\n", 
//Redirection HTML : '<meta http-equiv="refresh" content="0; url='.$nouvelleAdresse.'" />'."\n", 
'<title>Redirection</title>'."\n", 
'<meta name="robots" content="noindex,follow" />'."\n", 
'</head>'."\n", 
"\n", 
'<body>'."\n", 
//au cas  la redirection ne fonctionne pas : 
'<p><a href="'.$nouvelleAdresse.'">Redirection</a></p>'."\n", 
'</body>'."\n", 
'</html>'."\n"; 
?>

Si un attaquant a connaissance d'une page de redirection vulnérable, il peut l'utiliser dans un lien pour faire rediriger l'utilisateur vers une page Web.

Figure 28 - Lien pour rediriger l'utilisateur vers une page malveillante

Sélectionnez

<a href="http://www.application-securisee.com/redirect.php?www.attaquant.com/attaque.php"> 
http://www.application-securisee.com</a>

Dans ce cas l'utilisateur est leurré. Le lien pointe bien vers l'application, mais va le rediriger vers une page malveillante.

3. Parade et bonnes pratiques

La redirection ne doit renvoyer qu'à des pages locales. Dans ce cas les caractères spéciaux doivent être prohibés.

En cas de changement d'adresse ou de déplacement d'une page, il vaut mieux utiliser la redirection paramétrée dans le serveur HTTP. Par exemple avec Apache il est possible de placer un fichier « .htaccess » pour paramétrer les redirections automatiques.

Figure 29 - Exemple de redirection automatique configurée au niveau du serveur HTTP

Sélectionnez

<IfModule mod_alias.c> 
#redirection automatique d'une page vers une nouvelle adresse 
Redirect permanent /dossier01/script_1.html http://nouvelle.adresse.fr/dossier03/script_1.php 
#redirection automatique d'un ensemble de pages 
RedirectMatch permanent /dossier01/(.*)\.html$ http://nouvelle.adresse.fr/dossier02/$1.php 
#redirection automatique d'un dossier vers une nouvelle adresse 
Redirect permanent /dossier01 http://nouvelle.adresse.fr/dossier02 
#redirection automatique de toute l'application Web vers une nouvelle adresse 
Redirect permanent / http://nouvelle.adresse.fr/ 
</IfModule>