Jump to content

Hack depuis le module jmsslider


Eolia

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');
        }
...

 

Edited by Eolia (see edit history)
  • Like 3
  • Thanks 2
Link to comment
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é.

 

 

Link to comment
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)
Link to comment
Share on other sites

  • 1 month later...
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.

 

 

  • Like 1
Link to comment
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!

Link to comment
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 2
Link to comment
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)
Link to comment
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
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...
15 hours ago, piep14 said:

Bonjour,

J'ai également été victime d'un piratage sur mon site et je cherche à savoir quelles sont les fichiers à mettre à jour pour fix ces bugs de sécurité ?

 

Merci de votre aide.

Le site qui a été piraté a bien le JMS Slider installé ?

Link to comment
Share on other sites

  • 5 months later...
  • 1 year later...

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...