Jump to content

password.php - Faille de sécurité ?


prestadev526

Recommended Posts

Bonjour à tous,

 

J'utilise un prestashop dernière version (1.4.7.3).

Récemment, mon serveur a été désactivé par OVH apparamment suite à une attaque (envoi de code malveillant dans la variable POST) à travers le formulaire "mot de passe oublié" de mon Prestashop.

 

J'ai un peu fouillé le code incriminé dans la sécurisation de ce champ :

 

if (!($email = Tools::getValue('email')) OR !Validate::isEmail($email))

$this->errors[] = Tools::displayError('Invalid e-mail address');

 

 

public static function isEmail($email){

return !empty($email) AND preg_match('/^[a-z0-9!#$%&\'*+\/=?^`{}|~_-]+[.a-z0-9!#$%&\'*+\/=?^`{}|~_-]*@[a-z0-9]+[._a-z0-9-]*\.[a-z0-9]+$/ui', $email);

}

 

Ce code me semble correct...

Qu'en pensez-vous?

 

Je peux peut-être encore le renforcer avec la fonction (PHP 5 >= 5.2.0) filter_var($email , FILTER_VALIDATE_EMAIL);

 

Mais je fais peut-être fausse route.

 

Voici le message renvoyé par OVH :

 

Problème rencontré : Script flooding mailout

Commande apparente : php.ORIG.5_3 -c /usr/local/lib/php.ini-2 -d register_globals=0 -d magic_quotes_gpc=1 -d session.use_trans_sid=1 password.php

Exécutable utilisé : N-A

 

Voici les seules données de LOG que je possède sur cette attaque :

 

POST /password.php HTTP/1.1 200 1889 <- injection

POST /password.php HTTP/1.1 500 355

POST /password.php HTTP/1.1 500 355

 

Il faut noter qu'au moment des faits la config SMTP de mon Prestashop faisait appel à une adresse et un mot de passe incorrect.

 

Qu'en pensez-vous?

Link to comment
Share on other sites

Merci beaucoup pour votre support et d'avoir étudié cette question je ne voyais rien d'anormal moi non plus dans le code mais on ne sait jamais, toutefois j'ai étudié le log de l' "attaque" et il s'agit vraiment d'une IP qui a appelé la page password une seule fois et qui a apparemment déclenché immédiatement une INTERNAL SERVER ERROR. Je ne pense pas du tout qu'il s'agit d'un BOT et il est certain que la page a malmené le serveur dès le premier envoi de la variable POST! Il n'y a donc pas eu de flood sur la page.

 

La séquence ci-dessous n'apparait qu'une fois dans le LOG et après la premère requête sur la page le serveur semble avoir directement planté et renvoyé une erreur 500 sur les deux appels (refresh?) suivants et j'ai directement reçu l'avertissement d'OVH qui a directement désactivé le site (quelques minutes plus tard) suite à une erreur générée sur cette page.

 

POST /password.php HTTP/1.1 200 1889

POST /password.php HTTP/1.1 500 355

POST /password.php HTTP/1.1 500 355

 

 

Mon hypothèse serait que cette erreur a été déclenchée par:

 

- La configuration de l'envoi des mails en SMTP lors de l'installation de prestashop

- L'absence de paramètres SMTP corrects (login et mot de passe encodés liés à une adresse email qui n'avaient pas encore été créée sur le serveur au moment de l' "attaque")

- La demande d'envoi du mot de passe via password.php faisant appel à ces paramètres incorrects

 

Par sécurité, pourriez-vous voir/vérifier dans le code ce qui se passe dans un tel cas de figure?

 

Merci beaucoup !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...