Redirection et renvois non validés
1. Principe
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
où
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>