Jump to content

Recommended Posts

Attention aux possesseurs de ce module (version 1.6.0) les hackers téléchargent directement leurs pfm dpuis l'ajax et infectent votre site.

Ce fichier ne contrôle rien concernant le type de fichier envoyé.

Exemple de requête:

35.242.236.93 site.fr - [08/Sep/2019:22:36:25 +0200] "POST /modules/jmsslider/ajax_jmsslider.php?action=addLayer&id_slide=attari&data_type=image HTTP/1.1" 200 25 "-" "python-requests/2.22.0"

Le hack fonctionne même si le module n'est pas installé, il suffit qu'il soit présent sur votre ftp dans le répertoire /modules

Ca fait juste peur en fait de voir de tels codes...

$context = Context::getContext();
$slides = array();
if (Tools::getValue('action') == 'addLayer' && Tools::getValue('id_slide')) {
    $data_type = Tools::getValue('data_type');
    if ($data_type == 'text') {
...
    } elseif ($data_type=='image') {
        $path = dirname(__FILE__).'/views/img/layers/';
        if ($_FILES['data_image']['name']) {
            $st_name = preg_replace('/[^A-Za-z0-9\._\-]/', '', $_FILES['data_image']['name']);
            $name = str_replace(' ', '-', $st_name);
            $img_extend = array('png', 'jpg', 'gif', 'jpeg');
            $type = Tools::strtolower(Tools::substr(strrchr($_FILES['data_image']['name'], '.'), 1));
            $path = dirname(__FILE__).'/views/img/layers/';
            if (!file_exists($path.$name)) {
                move_uploaded_file($_FILES['data_image']['tmp_name'], $path.$name);
            }
            $data_image = $name;
        } else {
            $data_image = Tools::getValue('data_s_image');
        }
...

 

  • Like 2
  • Thanks 2

Share this post


Link to post
Share on other sites

Depuis 2015, il y en a qui ne veulent pas apprendre

Share this post


Link to post
Share on other sites

Merci pour ces détails, mon site utilise justement jmsslider et a été infecté il y a 2 jours. J'ai eu à défaire la merde que ça l'a foutu.

Effectivement, des fichiers php avec des codes encryptés avec des instructions eval ont été détectés dans le module. 

Auriez-vous une solution simple pour que ceci ne se reproduise plus ? à moins que je me trompe, le module ne semble pas vérifier si la requête post est fait par un utilisateur autorisé.

 

 

Share this post


Link to post
Share on other sites

demandez une mise à jour à son auteur.

Par contre attention, cette infection permet au hackeur de déposer des fichiers un peu partout sur votre ftp pour pouvoir revenir ensuite.

Share this post


Link to post
Share on other sites

Effectivement, je me suis hâté de contacter l'auteur. J'ai reçu la nouvelle version, bien heureusement.

C'est ce que j'ai fait, bref... Un petit grep -rnw '.' -e 'base64' --include=*.php et grep -rnw '.' -e 'eval' --include=*.php pour voir les parcelles de codes suspicieuses. 

 

Dans un cas comme celui là, il n'y a pas de solution miracle pour trouver l'étendue des dégats. Et voilà, quelques heures d'analyses et beaucoup de café à boire afin de m'assurer que ma boutique est saine. 

Au moins, je peux me rassurer que les droits sont tenus assez serrées, donc, pas vraiment de fuite possible en dehors du répertoire de prestashop. 

 

Merci d'avoir signalé il y a quelques jours, ça m'a mis sur une piste et merci pour le conseil :)

 

Edited by hydromel2008 (see edit history)

Share this post


Link to post
Share on other sites

Bonjour,

Tu pourrais stp partager la nouvelle version reçu de l'auteur?
Il ne semble plus actif sur envato et ne répond pas a mes mail 😏

 

Share this post


Link to post
Share on other sites
2 hours ago, ngoran said:

Bonjour,

Tu pourrais stp partager la nouvelle version reçu de l'auteur?
Il ne semble plus actif sur envato et ne répond pas a mes mail 😏

 

Biensûr, voici ce que j'ai utilisé pour regler mon problème, je suis sur 1.6 mais ils ont fait le correctif pour 1.6 et 1.7.

Ils ont ajouté une vérification du token de sécurité sur l'appel ajax.

https://www.joommasters.com/index.php/blog/tutorials-and-case-studies/how-to-fix-security-bug-of-slider-security-breach-of-theme.html

Je te conseilles de bien lire tes logs, il se pourrait que ton serveur soit compromis tout dépendant du niveau de sécurité de ta configuration.

 

 

Share this post


Link to post
Share on other sites
8 minutes ago, hydromel2008 said:

Biensûr, voici ce que j'ai utilisé pour regler mon problème, je suis sur 1.6 mais ils ont fait le correctif pour 1.6 et 1.7.

Ils ont ajouté une vérification du token de sécurité sur l'appel ajax.

https://www.joommasters.com/index.php/blog/tutorials-and-case-studies/how-to-fix-security-bug-of-slider-security-breach-of-theme.html

Je te conseilles de bien lire tes logs, il se pourrait que ton serveur soit compromis tout dépendant du niveau de sécurité de ta configuration.

 

 

C'est noté, et surtout grand merci à toi!

Share this post


Link to post
Share on other sites

c'est un peu léger comme correctif, un getimageSize() aurait réglé de le problème direct (si ce n'est pas une image la fonction native renvoie false)

Share this post


Link to post
Share on other sites

Il est "génial" ce patch avec une moitié du code qui ne sert à rien !

Citation

        $path = dirname(__FILE__).'/views/img/layers/';
        if ($_FILES['data_image']['name']) {
            $st_name = preg_replace('/[^A-Za-z0-9\._\-]/', '', $_FILES['data_image']['name']);
            $name = str_replace(' ', '-', $st_name);
            $img_extend = array('png', 'jpg', 'gif', 'jpeg');
            $type = Tools::strtolower(Tools::substr(strrchr($_FILES['data_image']['name'], '.'), 1));
            $path = dirname(__FILE__).'/views/img/layers/';
            if (!file_exists($path.$name)) {
                move_uploaded_file($_FILES['data_image']['tmp_name'], $path.$name);
            }
            $data_image = $name;

On cherche le type de fichier (par son extension), mais on ne le teste pas

Et on stocke ce fichier tel quel.

Si on passe la secure_key (qui par installation "in situ") est toujours la même, un hacker envoie un fichier hack.php directement dans le répertoire /views/img/layers/ et c'est la fête du slip.

J'hallucine de voir comment après tout ce temps les développeurs sont incapable de prendre les problème de sécurité au sérieux.

 

        $path = dirname(__FILE__).'/views/img/layers/';
        if ($_FILES['data_image']['name']) {
            $info = pathinfo($_FILES['data_image']['name']);
            // Is this a valid extension ?
            if (!in_array(strtolower($info['extension']),array('png', 'jpg', 'gif', 'jpeg')) {
               die(__LINE__);
            }
            // Is this a valid image ?
            if (!(@getimagesize($_FILES['data_image']['tmp_name'])) {
               die(__LINE__);
            }
            // Rename the file, keep only the extension
            $name = uniqid().'.'.$info['extension'];
            if (!file_exists($path.$name)) {
                move_uploaded_file($_FILES['data_image']['tmp_name'], $path.$name);
            }
            $data_image = $name;
         }

 

  • Like 1

Share this post


Link to post
Share on other sites

Doekia, il y a une omerta concernant la sécurité informatique. Plusieurs compagnies qui gère des données plus critiques que des petites boutiques prestashop ne prennent pas au sérieux. 

Au Canada, il y a eu une brèche de sécurité avec la coopérative de caisses Desjardins qui a compromis l'identité de 4.3 millions d'utilisateurs (soit 11.4 % de la population du pays). Tout ça parce que la sécurité n'a pas cru bon restreindre les accès a de l'information sensible et ainsi qu'à l'usage de stockage externe. Le mec qui sortait les informations était loin d'être un hacker et il a quand même réussi à sortir les informations de tous les utilisateurs sur l'espace de quelques années 

Avec la sensibilité des informations ayant fuit. il est possible de faire une demande d'hypothèque, emprunter pour une voiture, ouvrir des cartes de crédit, demander un permis de conduire. 

Bref, l'identité 11.4% de la population de mon beau pays est compromise parce que des experts en sécurité ont jugé que le problème n'était pas assez complexe pour y porter attention et ce n'est que lorsqu'une enquête suite à des plaintes d'irrégularités auprès d'un corps policier que c'est sorti publiquement.

Bref, j'arrête le déraillage du thread. 

 

Pour ma part, j'avais pas remarqué ces tests absent, j'applique ça à mon codebase, je vais tenter de relayer ton fix à l'auteur, s'il veut entendre raison. 

Edited by hydromel2008 (see edit history)

Share this post


Link to post
Share on other sites

Là tu parle de sécurité interne - sujet légèrement différent. Ici nous avons depuis au moins 2015 identifié des attaques externes ciblées sur Prestashop (il était un peu ignoré avant). Mais comme l'écosystème a traîner à réagir. C'est devenu une cible prisée. Et si nous ne faisons pas maintenant très attention. Nous resterons les victimes de ces attaques.

  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More