1 Compromission d’un site sous Joomla!

Le CERTA a traité cette semaine le cas d’une compromission de site fonctionnant avec Joomla!. Les incidents de ce type sont fréquents, et découlent généralement de l’exploitation d’une vulnérabilité dans un module optionnel. Dans le cas abordé cette semaine, il s’agit d’une autre méthode d’attaque : les attaques par dictionnaire. Ces dernières se caractérisent dans les journaux par des traces du type :

<IP attaquant> – – [01/Mar/2011:02:41:23 +0100] « POST /administrator/index.php HTTP/1.1 »
200 4646 – – –
<IP attaquant> – – [01/Mar/2011:02:41:23 +0100] « POST /administrator/index.php HTTP/1.1 »
200 4646 – – –
<IP attaquant> – – [01/Mar/2011:02:41:24 +0100] « POST /administrator/index.php HTTP/1.1 »
200 4646 – – –
…
<IP attaquant> – – [01/Mar/2011:02:41:25 +0100] « POST /administrator/index.php HTTP/1.1 »
303 5 – – –
<IP attaquant> – – [01/Mar/2011:02:41:26 +0100] « GET /administrator/index.php HTTP/1.1 »
200 22374 – – –

Une fois connecté au panneau d’administration, l’attaquant a accès à des scripts permettant le dépôt de fichiers. Il lui devient notamment possible d’installer une porte dérobée sous la forme d’un interpréteur de commandes écrit en PHP.

Dans l’incident traité, l’attaquant a, après avoir déposé sa porte dérobée, tenté d’étendre la compromission à tout le serveur en exploitant plusieurs vulnérabilités du noyau Linux.

Recommandations

Le CERTA recommande à tous les utilisateurs de services informatiques de lire la note d’information CERTA-2005-INF-001 relative aux mots de passe (voir la section « Liens utiles »). Il est, de plus, conseillé aux administrateurs de site Web de lire régulièrement leurs journaux d’accès, et de vérifier que seuls des administrateurs légitimes naviguent sur les pages des différents panneaux d’administration. Enfin, il est recommandé de restreindre l’accès aux pages d’administration (par exemple à des adresses IP spécifiques).

2 NoScript à l’origine de requêtes « étranges »

NoScript est un module complémentaire pour navigateurs Web (Mozilla FireFox, SeaMonkey et autres navigateurs basés sur Mozilla) qui ajoute des fonctionnalités de sécurité.

Il permet par exemple d’établir des listes blanches de domaines pour lesquels l’exécution de code JavaScript ou Adobe Flash sont autorisés. Il intègre également des mécanismes de détection d’exploitation de failles de type injection de code indirecte à distance, ou « XSS ».

Un autre élément utilisé par NoScript est ABE pour Application Boundary Enforcer. Il se propose d’améliorer les mécanismes de défense contre les injections de code indirectes, en instaurant dans le navigateur des protections supplémentaires que l’utilisateur peut configurer. Celui-ci va pouvoir par exemple interdire toute requête à des serveurs Web situés dans le réseau local du poste, qui proviennent d’un site externe à ce dernier.

L’intérêt est de pouvoir bloquer par exemple des scripts qui tenteraient de scanner le réseau interne ou de réaliser des injections de requêtes illégitimes par rebond (Cross-Site Request Forgery) sur ces derniers.

# LOCAL repr�sente les adresses IP locales.
Site LOCAL              # Pour les sites sur des adresses locales
Accept from LOCAL       # on accepte seulement les requ�tes provenant de celles-ci
deny                    # et on rejette toutes les autres

On évite également ainsi qu’un script installé sur un site malveillant tente de se connecter à l’interface administrateur d’un routeur domestique, celle-ci utilisant souvent des identifiants de connexion par défaut, ou très faibles, ou encore possèdant des vulnérabilités.

Le mot-clé LOCAL regroupait initialement les adresses locales, par exemple 127.0.0.1 et le réseau 192.168.0.0/24. Il est facile de connaître le réseau local du poste, en demandant son adresse IP. Or, il a été présenté en été 2010, que bon nombre des routeurs domestiques étaient capables de répondre à une requête adressée à leur adresse IP publique mais provenant de l’interface interne. Un script malveillant peut donc tenter de communiquer avec le routeur depuis un poste sur le réseau interne en contournant les protections présentées ci-dessus.

Depuis la version 2.0rc5 de NoScript, une nouvelle fonctionnalité à été ajoutée à ABE, relative à la règle concernant le réseau local décrite ci-dessus. Pour interdire ce dernier type d’attaque, le module effectue une requête anonymisée au site https://secure.informaction.com/ipecho/ afin de déterminer l’adresse publique utilisée par le routeur, et l’ajouter à la liste des adresses représentées par le mot-clé LOCAL. Tous les postes utilisant l’extension NoScript avec le module ABE activé vont donc effectuer quotidiennement des requêtes à cette adresse.

Comme il arrive que certains routeurs changent d’IP publique très régulièrement, il convient de faire cette vérification plus fréquemment. Toutefois, pour éviter de surcharger le serveur à l’adresse secure.informaction.com par un grand nombre de requêtes, les développeurs de NoScript ont décidé de mettre en place un système de cache.

Par intervalles de quelques minutes, une requête est envoyée à l’adresse IP publique précédemment détectée, et une signature de la réponse est enregistrée. Si cette signature est modifiée, NoScript détecte que l’adresse publique utilisée par le routeur a changé, et effectue une nouvelle connexion à l’adresse secure.informaction.com pour trouver la nouvelle adresse IP publique.

Un routeur reliant un parc comprenant des postes d’utilisateurs, dont le navigateur Web utilise l’extension NoScript en version 2.0rc5 ou postérieure, va donc voir une augmentation significative de requêtes HTTP à destination de son adresse IP publique, sur son interface de réseau local.

Si un serveur Web est installé sur le routeur et configuré pour écouter sur son interface interne, celui-ci enregistrera dans ses journaux des requêtes du type :

XX.YY.ZZ.TT   « GET / HTTP/1.1 » 200 370 « – » « Mozilla/5.0 (ABE, http://noscript.net/abe/wan) »
avec XX.YY.ZZ.TT, l’adresse IP publique du routeur/serveur.

Pour demander à NoScript de ne plus effectuer ces requêtes, il suffit de décocher l’option WAN IP LOCAL dans la rubrique NoScript Option Advanced ABE. Attention, car dans ce cas, l’adresse IP publique ne sera alors plus considérée comme une adresse locale, et le routeur sera de nouveau exposé aux attaques indiquées ci-dessus.

Documentation

Rappel des avis émis

Dans la période du 21 au 27 février 2011, le CERT-FR a émis les publications suivantes :