Shopping 2.9 et 3.0 : Correctif d'une faille de sécurité sur lire/index.php donnant accès aux hash MD5 des mots de passe

3 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

Ayant subi cette attaque sur ma boutique, je vous fais profiter ci-dessous de mon investigation et de la correction de cette importante faille de sécurité.

Une injection de code permet en effet à n'importe qui d'afficher les adresses email et les mots de passe en MD5 de tous les utilisateurs. A partir du MD5, il est assez facile de retrouver un certain nombre de mots de passe en clair.

Pour corriger la faille :

dans boutique/lire/index.php

Remplacer

if (!isset($_GET['rubid'])) { $rubid = 0;} else {$rubid = $_GET['rubid'];}

par :

if (!isset($_GET['rubid'])) { $rubid = 0;} else {$rubid = intval($_GET['rubid']);}

Voilà plus en détails mon investigation :

J'ai d'abord eu la surprise de recevoir un mail m'annonçant le changement de mon mot de passe d'admin de la boutique.

Aucun autre admin n'en étant à l'origine, j'ai regardé dans les logs, l'appel de init_mdp.

Je l'ai trouvé en effet, à l'heure du message que j'avais reçu.

Un peu plus haut dans le log, en provenance de la meme IP, j'ai trouvé un appel de lire/index.php avec un passage de paramètres contenant entre autres (je ne mets pas les détails) : conc...(...,email,mot_passe)...from peel_utilisateurs

J'ai testé cette ligne sur ma boutique et j'ai eu la surprise de voir s'afficher les adresses email et des mots de passe (hashés en MD5) de tous les utilisateurs. En voici une copie d'écran (floutée en partie) :

copieecranpiratagebouti.gif

Il est facile ensuite pour les pirates de décrypter un certain nombre de mots de passe en MD5, avec des outils comme celui ci : AuthSecu, pour les mots de passe qui ne sont pas assez complexes.

Le pirate a donc retrouvé un mot de passe admin et l'a utilisé pour se connecter. Heureusement il n'a apparemment pas fait de dégats à la boutique. Je suppose que son but était de collecter des mots de passe pour les utiliser par ailleurs (sur paypal par exemple, si quelqu'un a un compte avec le meme mot de passe).

Cette faille circule parmi les pirates, je l'ai retrouvée avec google sur un forum à l'étranger.

Je vous suggère à tous de corriger lire/index.php rapidement.

Si quelqu'un découvre la même faille dans d'autres fichiers merci aussi de nous en informer.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Notez que cette faille est présente jusqu'à la version 3 en tous cas.

La version 4 est différente, je ne sais pas si elle a une faille similaire.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Merci pour ce rapport détaillé et précis.

Nous venons de faire un audit détaillé par rapport à ce sujet :

- Ce bug est présent dans les versions PEEL Shopping 2.9 et 3, mais plus dans la version 4.0 qui a bien ce correctif : elle date de décembre 2008 et avait apporté de nombreuses nouveautés.

- Toutes les version PEEL Premium depuis la version PEEL Premium 2.9 ont été vérifiées et aucune n'a ce problème

- Les versions inférieures à 2.9 sont trop vieilles, je les laisse donc de côté.

Sur PEEL Shopping 2.9 et 3.0, il faut donc effectivement corriger dans les premières lignes du code de lire/index.php :

if (!isset($_GET['rubid'])) { $rubid = 0;} else {$rubid = $_GET['rubid'];}

par :

if (!isset($_GET['rubid'])) { $rubid = 0;} else {$rubid = intval($_GET['rubid']);}

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping