Jump to content

Hack Prestashop sur la page de paiement - nettoyage


Eolia

Recommended Posts

6 hours ago, Eolia said:

Il y avait quoi dans ce fichier ?

En dehors des langues il ne doit y avoir aucun php dans un thème.

<?php
/**
 * $THEMEDESC
 * 
 * @version        $Id: file.php $Revision
 * @package        modules
 * @subpackage    $Subpackage.
 * @copyright    Copyright (C) Jan 2012 leotheme.com <@emai:[email protected]>.All rights reserved.
 * @license        GNU General Public License version 2
 */  
if( !class_exists('LeoThemeInfo') ){ 
    class LeoThemeInfo{
        
        /**
         *
         */
    public static function onGetInfo( $output=array() ){
        $output["patterns"] = array();
        $path = _PS_ALL_THEMES_DIR_. _THEME_NAME_."/img/patterns";
            
        $regex = '/(\.gif)|(.jpg)|(.png)|(.bmp)$/i';
    
        if( !is_dir($path) ){ return $output; }
        
        $dk =  opendir ( $path );
        $files = array();
        while ( false !== ($filename = readdir ( $dk )) ) {
            if (preg_match ( $regex, $filename )) {
                $files[] = $filename;    
            }
        }  
         $output["patterns"] = $files;
     
        return $output;
    }
    
    /**
     *
     */
    public static function onRenderForm( $html, $thmskins ){
        
        $baseURL =  _PS_BASE_URL_.__PS_BASE_URI__."themes/"._THEME_NAME_."/img/patterns/";

        $pt = '';
        
    
         
        
        $html .= $pt;
        return $html;
    }
    
    public static function onUpdateConfig(  ){
        $leobgpattern = (Tools::getValue('leobgpattern')); 
        Configuration::updateValue('leobgpattern', $leobgpattern);
    }
    
    public static function onProcessHookTop( $params ){
        $params["LEO_BGPATTERN"] = Configuration::get('leobgpattern');
        return $params; 
    }
}    

}
?>

Link to comment
Share on other sites

il y a 16 minutes, Mediacom87 a dit :

160 mini sur PrestaShop

En fait ça dépend surtout de ce qu'il y a sur le ftp...

J'ai encore vue une boutique récemment avec 12 thèmes dans le répertoire themes/ et + de 400 modules et des répertoires complètements inconnus qui servaient de fourre-tout.

Plus il y a de fichiers à analyser, plus c'est long.

Mais bon, ceux qui sont sur des mutus genre OVH auront toujours du mal. (limite mémoire, limite temps, cpu faiblards)

 

Link to comment
Share on other sites

35 minutes ago, Eolia said:

Ils jouent à quoi les intégrateurs graphiques ?

On est dans un CMS MVC (Modèles / Vues / Contrôleurs) depuis quand on mélange du php dans des répertoires de vues ?

Vietnam... Très riche comme thème, avec un éditeur de page et une tonne de modules, quasi une mini application (box in teh box) .
Bref comment qu'on fait alors  pour pas le virer (le fichier.php) ?

Link to comment
Share on other sites

Votre thème ne fonctionne pas sans ce fichier ?

J'ai l'impression que c'est une sorte de sauvegarde au cas où la classe principale ne serait pas déclarée

if( !class_exists('LeoThemeInfo') ){ 

 

Link to comment
Share on other sites

28 minutes ago, Eolia said:

Votre thème ne fonctionne pas sans ce fichier ?

J'ai l'impression que c'est une sorte de sauvegarde au cas où la classe principale ne serait pas déclarée

if( !class_exists('LeoThemeInfo') ){ 

 

je ne sais pas, que devrai-je tester ? par principe de precaution je préfère qu'il reste la...

depuis 7 ans il tourne sans pb...

Link to comment
Share on other sites

Il y a 1 heure, Eolia a dit :

En fait ça dépend surtout de ce qu'il y a sur le ftp...

J'ai encore vue une boutique récemment avec 12 thèmes dans le répertoire themes/ et + de 400 modules et des répertoires complètements inconnus qui servaient de fourre-tout.

Plus il y a de fichiers à analyser, plus c'est long.

Mais bon, ceux qui sont sur des mutus genre OVH auront toujours du mal. (limite mémoire, limite temps, cpu faiblards)

 

Pourquoi crois-tu que je développe mon propre module de nettoyage, il faudrait que je regarde du côté des thèmes pour nettoyer aussi cette partie, mais c'est plus complexe à développer puisque l'on peut avoir des thèmes enfants, que le thème natif change de nom régulièrement et le gain n'est pas significatif.

Link to comment
Share on other sites

26 minutes ago, Eolia said:

Bah il faudra le remettre à chaque fois alors, je ne peux pas faire d'exception ou alors autant ne plus scanner du tout le répertoire themes.

Si je me souviens bien on pouvait mettre des exception dans le fichier de scan

...

 

Edited by Mathieu C. (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Bonjour, j'ai tenté de lance votre script (d'ailleurs merci à vous pour cet outil ! ) car mon site a été hacké et je n'ai plus accès au BO.

Lorsque je le lance il indique qu'il ne s'agit pas de la dernière version et qu'il télécharge et exécute. Ensuite, je me retrouve sur une page 404 de mon site et mon site m'affiche ensuite une page blanche.

Pourriez-vous m'orienter pour savoir ce qui peut causer cela ?

Merci

Link to comment
Share on other sites

il y a une heure, quadricolore a dit :

Bonjour, j'ai tenté de lance votre script (d'ailleurs merci à vous pour cet outil ! ) car mon site a été hacké et je n'ai plus accès au BO.

Lorsque je le lance il indique qu'il ne s'agit pas de la dernière version et qu'il télécharge et exécute. Ensuite, je me retrouve sur une page 404 de mon site et mon site m'affiche ensuite une page blanche.

Pourriez-vous m'orienter pour savoir ce qui peut causer cela ?

Merci

Une fois mis à jour le script change de nom, avez-vous un fichier avec une suite de lettre et chiffres .php à la racine de votre site ?

Si oui appelez-le depuis https://votre_domaine.com/xxxxxxxxx.php

Link to comment
Share on other sites

1 hour ago, Eolia said:

Une fois mis à jour le script change de nom, avez-vous un fichier avec une suite de lettre et chiffres .php à la racine de votre site ?

Si oui appelez-le depuis https://votre_domaine.com/xxxxxxxxx.php

Merci de votre retour. Lorsque je lance à nouveau avec le php nommé par la suite de chiffres, le site tourne un moment uis se remet en page blanche.

Voici l'erreur que j'ai :

Warning: require_once(/home/....../public_html/config/smarty.config.inc.php): failed to open stream: Permission denied in /home/....../public_html/config/config.inc.php on line 208

Edited by quadricolore (see edit history)
Link to comment
Share on other sites

1 hour ago, Eolia said:

Tout le monde n'est pas en 1.6.1.24 et même cette version finale n'est pas compatible à 100% PHP 7.1

Cependant, les anciennes versions envoyaient bien le mail ressemblant au résultat du web.
Sur le web le résultat est toujours comme avant... (en plus des fichiers sans extensions)

 

Link to comment
Share on other sites

il y a 31 minutes, Mathieu C. a dit :

Cependant, les anciennes versions envoyaient bien le mail ressemblant au résultat du web.
Sur le web le résultat est toujours comme avant... (en plus des fichiers sans extensions)

 

Avec la v3.4.15 vous recevez bien le mail comme avant, non ?

Link to comment
Share on other sites

On 8/23/2024 at 5:14 PM, Eolia said:

Quelles sont les permissions sur ce fichier ?

Merci de votre retour, j'ai changé les droits sur ce fichier et je n'ai plus l'erreur, mais j'ai à nouveau une erreur 404 lorsque je lance le fichier depuis le site. J'ai bien appliqué la suite de chiffres.php mais le site me renvoie systématiquement l'erreur 404 après avoir chargé un moment.

Avez vous un piste pour m'aider ? merci

Link to comment
Share on other sites

Bonjour @Eolia,

Merci pour votre script, il est génial, pour l'avoir déjà utilisé dans le passé. En voulant le relancer ce jour, malheureusement il me génère une erreur 500 que je gère en supprimant le fichier class_index.php

 

D'où cette erreur vient-elle ?

Merci pour votre retour.

Link to comment
Share on other sites

Bonjour, tout d'abord un grand merci pour ce script qui nous sauve la mise depuis un moment sur notre version 1.7.6 presta.

Depuis la version 3.14 du script nous rencontrons un souci, le site plante (une page blanche erreur 500) à chaque fois que nous exécutons le script. 

Serveur: vps offre "PRO S" chez lws,

prametres ini:

allow_url_fopen = on
allow_url_include = off
safe_mode = off
magic_quotes_gpc = off
memory_limit = 2048M
max_input_time = -1
upload_max_filesize = 256M
post_max_size = 256M
max_input_vars = 30000
mod_security = off
short_open_tag = off
register_globals = off
display_errors = off

 

version php7.3, version presta 1.7.6

Un grand merci d'avance pour le temps accordé.

Edited by inpro
erreur version prestashop (see edit history)
Link to comment
Share on other sites

Dans le cas d'erreur 500, soit vous avez un fichier cleaner500.log à la racine qui a été créé (regardez la dernière ligne) soit il y a une erreur dnas le fichier error.log de votre hébergeur.

Certains hack modifient aussi les droits en lecture/ecriture (passent en 204) de certains fichiers.

Link to comment
Share on other sites

53 minutes ago, Eolia said:

Dans le cas d'erreur 500, soit vous avez un fichier cleaner500.log à la racine qui a été créé (regardez la dernière ligne) soit il y a une erreur dnas le fichier error.log de votre hébergeur.

Certains hack modifient aussi les droits en lecture/ecriture (passent en 204) de certains fichiers.

Merci pour votre retour !

Voici la fin de mon fichier cleaner500.log :

    [input] => 
    [1] => Array
        (
            [type] => 1
            [message] => Uncaught Error: Class 'Core_Business_ContainerBuilder' not found in /home/escapev36/public_html/config/bootstrap.php:27
Stack trace:
#0 /home/escapev36/public_html/config/config.inc.php(66): require_once()
#1 /home/escapev36/public_html/97448b7f31c1.php(1369): require_once('/home/escapev36...')
#2 {main}
  thrown
            [file] => /home/escapev36/public_html/config/bootstrap.php
            [line] => 27
        )

)

Je n'y comprends pas grand chose..

Link to comment
Share on other sites

10 minutes ago, Eolia said:

Vérifiez que le fichier /Core/Business/Core_Business_ContainerBuilder.php existe bien et que ses droits sont bien en 604 ou 644.

Si il est en 204 ou autre chose, rétablissez ses permissions à 644:

image.thumb.png.317959188df3ef5da7651f7f070c14d6.png

Merci pour votre message, malheureusement, il est bien toujours en 0644.

Link to comment
Share on other sites

4 minutes ago, Eolia said:

ok, donc c'est que le fichier /cache/class_index.php n'a pas été supprimé.

Vous êtes chez OVH ?

Relancez Cleaner vous allez récupérer la 3.4.17 qui devrait corriger le problème.

Je suis chez 02Switch.

Je viens de le relancer en enlevant class_index.php, malheureusement toujours le même problème.

Pouvons nous passer en DM ? Un grand merci !

Link to comment
Share on other sites

  • 1 month later...

Bonjour, je déterre ce vieux topic toujours d'actualité, malheureusement. moi aussi je me suis fait pirater au niveau du module de paiement.... J'ai utilisé l'excellent cleaner.php (merci au passage !!) et pas mal de mes fichiers js doivent être contrôlés. Je ne vois pas comment faire ça manuellement, il y en a tellement !! Est-ce que je peux les importer du répertoire js de Prestashop (même version évidemment). Sorry si ma question est basique mais je ne suis pas u  pro, loin de là !! ;o)))

 

image.thumb.png.fab2a9474d1eac8e10df0a198f5c9bfa.png

Link to comment
Share on other sites

Il y a 16 heures, Renacata a dit :

Bonjour, je déterre ce vieux topic toujours d'actualité, malheureusement. moi aussi je me suis fait pirater au niveau du module de paiement.... J'ai utilisé l'excellent cleaner.php (merci au passage !!) et pas mal de mes fichiers js doivent être contrôlés. Je ne vois pas comment faire ça manuellement, il y en a tellement !! Est-ce que je peux les importer du répertoire js de Prestashop (même version évidemment). Sorry si ma question est basique mais je ne suis pas u  pro, loin de là !! ;o)))

 

image.thumb.png.fab2a9474d1eac8e10df0a198f5c9bfa.png

Le plus simple est de remplacer le répertoire JS de votre installation en ligne par le répertoire JS de votre version PrestaShop à partir de l'archive native.

Mais cela ne suffira pas, il faut trouver comment le piratage a eu lieu et combler la brèche.

Link to comment
Share on other sites

il y a 54 minutes, Renacata a dit :

Je me doute, j'ai mis à jour Prestashop, changé les mots de passe etc etc... mais je ne vois pas ce que je peux faire de plus pour le moment.

Identifier les modules problématiques https://security.friendsofpresta.org/

Étudier les alertes de codes relevés par Cleaner.php

Mettre en place un WAF même basique comme proposé par Cloudflare si vous ne pouvez pas plus.

J'ai déjà fait quelques articles pour aider à s'améliorer https://www.mediacom87.fr/post/securite/

Link to comment
Share on other sites

Bonjour

 

Merci à Eolia pour son script. J'ai reussi à nettoyer un hack. Je suis même passer sur la phenixsuite.

Surement lors de mon nettoyage, j’ai rendu ma page OPC sans CSS et JS. Ma page opc est en mode quirk.

Est ce que vous avez des pistes de fichiers que je dois vérifier pour résoudre mon problème?

 

Merci d'avance

Link to comment
Share on other sites

On 10/9/2024 at 11:19 AM, Eolia said:

Activez le mode debug et regardez également les erreurs dans la console de votre navigateur (F12)

Bonjour.

 

J'ai une erreur fatal sur la OPC au niveau de la méthode de livraison

 

Quote

Fatal error: Uncaught Error: Cannot use object of type Carrier as array in ..../www/cache/smarty/compile/28/e9/74/28e97419b8bb6303707fba3020e9b28670ecdc1a_0.file.order-carrier.tpl.php:150 Stack trace: #0 /www/tools/smarty/sysplugins/smarty_template_resource_base.php(123): content_6707a14df25ab9_20680836(Object(Smarty_Internal_Template)) #1 .../www/tools/smarty/sysplugins/smarty_template_compiled.php(114): Smarty_Template_Resource_Base->getRenderedTemplateCode(Object(Smarty_Internal_Template)) #2 .../www/tools/smarty/sysplugins/smarty_internal_template.php(218): Smarty_Template_Compiled->render(Object(Smarty_Internal_Template)) #3 /www/tools/smarty/sysplugins/smarty_internal_template.php(387): Smarty_Internal_Template->render() #4 /www/cache/smarty/compile/d2/6a/87/d26a871485842fdef9201225c9f268fb35d13f13_0.file.order-opc.tpl.php(59): Smarty_Internal_Template->_subTemplateRender('...', NULL, NULL, 0, 31536000, Array, 0, tru in /www/cache/smarty/compile/28/e9/74/28e97419b8bb6303707fba3020e9b28670ecdc1a_0.file.order-carrier.tpl.php on line 150

J'ai vérifié les fichier order-carrier.tpl et order-opc.tpl du thème et il y a pas eu de modification sur les originaux.

Quelqu'un peut m'aider à ce sujet ?

 

J'ai également cette erreur mais ce sont des fichiers de la phenixsuite

 

Quote

Warning: Use of undefined constant _RIJNDAEL_KEY_ - assumed '_RIJNDAEL_KEY_' (this will throw an Error in a future version of PHP) in /www/classes/Cookie.php on line 88

Warning: Use of undefined constant _RIJNDAEL_IV_ - assumed '_RIJNDAEL_IV_' (this will throw an Error in a future version of PHP) in /www/classes/Cookie.php on line 88

Warning: openssl_decrypt(): IV passed is only 7 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in /www/classes/Rijndael.php on line 97

 

Merci d'avance.

Link to comment
Share on other sites

Bon, pour le point 1 votre thème n'est pas conforme (erreur connue), il faut corriger votre fichier order-carrier.tpl

A cet endroit le bloc doit être écrit comme cela:

						{if $option.unique_carrier}
                                                        {foreach $option.carrier_list as $carrier}
                                                            <strong>{$carrier.instance->name|escape:'htmlall':'UTF-8'}</strong>
                                                        {if isset($carrier.instance->delay[$cookie->id_lang])}
                                                            <br />{l s='Delivery time:'}&nbsp;{$carrier.instance->delay[$cookie->id_lang]|escape:'UTF-8'}
                                                        {/if}
                                                        {/foreach}
                                                    {/if}

Car chez vous la ligne 

{if isset($carrier.instance->delay[$cookie->id_lang])}
            <br />{l s='Delivery time:'}&nbsp;{$carrier.instance->delay[$cookie->id_lang]|escape:'UTF-8'}
{/if}

Doit se situer en dehors du {foreach}...{/foreach}

Pour la Rindjael_key, je vous renvoie ici:

https://shop.devcustom.net/gen.php

Edited by Eolia (see edit history)
Link to comment
Share on other sites

Hello,

version 3.4.28

On n'a plus le droit de mettre nos fontes en locale ?

 

Recherche des infections connues:

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Bold.eot

>>> Supprimé fonts/OpenSans-Bold.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.ttf

>>> Supprimé fonts/OpenSans-Italic.ttf

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.woff2

>>> Supprimé fonts/OpenSans-Italic.woff2

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.svg

>>> Supprimé fonts/OpenSans-Italic.svg

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-ExtraBoldItalic.woff

>>> Supprimé fonts/OpenSans-ExtraBoldItalic.woff

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-LightItalic.ttf

>>> Supprimé fonts/OpenSans-LightItalic.ttf

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-ExtraBoldItalic.ttf

>>> Supprimé fonts/OpenSans-ExtraBoldItalic.ttf

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-ExtraBoldItalic.eot

>>> Supprimé fonts/OpenSans-ExtraBoldItalic.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-SemiboldItalic.eot

>>> Supprimé fonts/OpenSans-SemiboldItalic.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.eot

>>> Supprimé fonts/OpenSans-Italic.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Light.woff

>>> Supprimé fonts/OpenSans-Light.woff

 

Link to comment
Share on other sites

il y a 36 minutes, Mathieu C. a dit :

Hello,

version 3.4.28

On n'a plus le droit de mettre nos fontes en locale ?

 

Recherche des infections connues:

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Bold.eot

>>> Supprimé fonts/OpenSans-Bold.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.ttf

>>> Supprimé fonts/OpenSans-Italic.ttf

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.woff2

>>> Supprimé fonts/OpenSans-Italic.woff2

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.svg

>>> Supprimé fonts/OpenSans-Italic.svg

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-ExtraBoldItalic.woff

>>> Supprimé fonts/OpenSans-ExtraBoldItalic.woff

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-LightItalic.ttf

>>> Supprimé fonts/OpenSans-LightItalic.ttf

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-ExtraBoldItalic.ttf

>>> Supprimé fonts/OpenSans-ExtraBoldItalic.ttf

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-ExtraBoldItalic.eot

>>> Supprimé fonts/OpenSans-ExtraBoldItalic.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-SemiboldItalic.eot

>>> Supprimé fonts/OpenSans-SemiboldItalic.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Italic.eot

>>> Supprimé fonts/OpenSans-Italic.eot

Fichier de police infecté (<?) => Maiori-Web/fonts/OpenSans-Light.woff

>>> Supprimé fonts/OpenSans-Light.woff

 

Si mais dans votre thème, le répertoire /fonts n'existe pas nativement et les derniers hacks créent ce répertoire avec des polices qui n'en sont pas.

Link to comment
Share on other sites

Bonjour,

J'ai une erreur 403 lorsque j'essaye d'accéder à monsite.com/cleaner.php.

Les permissions sont bien à jour et c'est pareil lorsque je supprime le .htaccess. Je soupçonne que le hack en soit à l'origine (d'ailleurs le fichier cleaner.php disparait quand j'y retourne le lendemain). Une idée ?

Merci.

Link to comment
Share on other sites

J'ai une erreur 403 dès le premier lancement. Mon site a été piraté et de nombreux fichiers .htaccess etc ont été modifiés. Je pense que ça vient de là, mais comment modifier en masse ces fichiers .htaccess et autre ? Je comptais justement sur cleaner.php...

Link to comment
Share on other sites

Dans le cas de figure ou de nombreux index.php et .htaccess ont été modifiés, existe-t-il une solution pour corriger ça en masse ? 

J'ai ce code dans de nombreux .htaccess en l'occurence.

<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'>

Order allow,deny

Deny from all

</FilesMatch>

 

Link to comment
Share on other sites

@Mediacom87 Qu'entendez-vous par bloquer l'accès complet ?

J'ai identifié ceci dans les fichiers infectés, j'en déduis que le module simpleimportproduct est à l'origine de la faille de sécurité. Si je le supprime, est-ce que ça suffira pour éviter que les fichiers ne se régénérent (.htaccess, index.php, cache.php...) ?


1SRV  IgnorerSMW-SA-05636-mlw.wshll-5

/modules/simpleimportproduct/b9e9b88fa3.php

......t($_GET['path'])){$path=$_GET['path'];}else{$path=getcwd();}$path=str_replace...

8 KB2024-09-30 02:59:042SRV  IgnorerSMW-SA-13448-php.bkdr-0

/modules/simpleimportproduct/0f1f0f2b9d.php

......sab')."_".strrev('edoced');$filter=$filterfunc($kses_str);$preparefunc=s...

Edited by AcidLava (see edit history)
Link to comment
Share on other sites

Erreur 403 résolue, je suis maintenant sur une 500 (toujours en accédant au BO) :

Compile Error: main(): Failed opening required '/var/www/vhosts/monsite.fr/httpdocs/prod/hzopvx1wzpt3rrdg/../autoload.php' (include_path='/var/www/vhosts/monsite.fr/httpdocs/prod/vendor/pear/pear_exception:/var/www/vhosts/monsite.fr/httpdocs/prod/vendor/pear/console_getopt:/var/www/vhosts/monsite.fr/httpdocs/prod/vendor/pear/pear-core-minimal/src:/var/www/vhosts/monsite.fr/httpdocs/prod/vendor/pear/archive_tar:.:/opt/plesk/php/7.4/share/pear')

Link to comment
Share on other sites