Lucene search

K
securityvulnsSecurityvulnsSECURITYVULNS:DOC:14349
HistorySep 20, 2006 - 12:00 a.m.

[Full-disclosure] A.I-Pifou (Cookie) Local File Inclusion

2006-09-2000:00:00
vulners.com
12

Produit vulnerable : A.I-Pifou (Cookie) Local File Inclusion,
… ( Livre d'or en PHP )
''''''''''''''''''''

Site officiel :
http://actif-video.chez-alice.fr/index.php
'''''''''''''''

Failles decouvertes : (Cookie) Local File Inclusion, …
'''''''''''''''''''''

Explications :
''''''''''''''

inc/change_lang_ck.php :
''''''''''''''''''''''''

Ligne 7 : $ze_langue_02 = $HTTP_COOKIE_VARS['ze_langue_02'];

Ligne 8 : include
('langues/'.$ze_langue_02.'/'.$ze_langue_02.'_lng_web.inc');

Le chemin du fichier a inclure est recuperee depuis la valeur du cookie
ze_langue_02.

Cette action est dangereuse puisque si l'on cree nous meme un cookie avec
comme nom ze_langue_02 en lui fournissant comme valeur le chemin du fichier
que l'on souhaite inclure, l'inclusion se fait !

choix_langue.php :
''''''''''''''''''

Ligne 2 : $choix_lng = $HTTP_GET_VARS['choix_lng'];

Ligne 3 : setcookie('ze_langue_02', $choix_lng, time()+20243600);

Grace a la variable $choix_lng, le fichier choix_langue.php permet de
modifier directement la valeur du cookie ze_langue_02.

Ainsi la valeur recuperee par HTTP_GET_VARS devient celle du cookie
ze_langue_02.

Exploitation :
''''''''''''''

Inclusion Local :
'''''''''''''''''

Deux solutions nous sont offertes :

-> 1] On pourrait creer nous meme un cookie qu'on nommera ze_langue_02 et
dont le contenu sera le chemin du fichier qu'on souhaite lire, puis il
suffirait ensuite de se rediriger vers un fichier qui apelle le fichier
vulnerable, c'est a dire /inc/change_lang_ck.php.

-> 2] On pourrait utiliser le fichier choix_langue.php qui permet de faire
automatiquement la meme manoeuvre.

Utilisation du fichier choix_langue.php :
'''''''''''''''''''''''''''''''''''''''''

On commence par specifier comme valeur a la variable choix_lng le chemin du
fichier a lire en ajoutant a la fin un nullbyte (%00) qui permet d'annuler
ce qui est ajoute apres notre entree :

Exemple :
http://localhost/livre_dor/choix_langue.php?choix_lng=../../../../../../../BOOT.ini%00

Une fois la valeur specifiee, il nous reste plus qu'a se diriger vers un
fichier qui apelle le fichier vulnerable /inc/change_lang_ck.php.

Le fichier livre_dor.php par exemple, qui represente l'index du livre d'or,
est l'un de ces fichiers qui appellent le fichier vulnerable :

livre_dor.php :
'''''''''''''''

Ligne 15 : include ('inc/change_lang_ck.php');

/!\/!\/!\ Pour plus d'informations, une video de l'exploitation de la faille
est disponible sur cdg.new.fr ;) /!\/!\/!\

@@@@@@@@@@@@@@@@@ Avis de securite par cdg393 // cdg.new.fr //
cdg393_gmail_com =)