Attaquer une application Web

Objectif

  • Découvrir les attaques les plus simples à faire sur des applications Web.

Mise en situation

Une application web intègre des formulaires ou des appels de pages qui permettent d'interagir dynamiquement avec le serveur. Il est fondamental que ces appels soient sécurisés afin que des utilisations malveillantes ne puissent pas être menées.

L'injection de code par exemple permet de faire exécuter un programme à la place d'envoyer des données. Ce programme pourra capturer des informations sensibles et ouvrir des accès à d'autres programmes, compromettant finalement l'ensemble de l'application.

AttentionInjection SQL

Cette attaque très classique exploite les champs texte des formulaires. Très souvent les données envoyées via les formulaires sont utilisées pour construire des requêtes envoyées à la base de données. Ici, l'attaquant entre directement du code SQL afin d'accéder aux données qu'il souhaite.

ConseilNettoyer les champs texte

Un champ texte doit être systématiquement nettoyé afin d'éviter ce type d'attaque. Il est par exemple possible de retirer tous les apostrophes ou les point-virgules. De nombreux langages Web possèdent nativement des fonctions dédiées.

AttentionFuzzing

Il ne faut pas cacher une page ou une fonctionnalité en pensant que celle-ci sera protégée des attaquants. Le fuzzing consiste à essayer toute une liste de mots pour trouver des URL ou des fonctionnalités cachées. Ce concept s'applique également pour trouver les noms d'utilisateur ou les mots de passe.

Le fuzzing est une sorte d'attaque par dictionnaire adaptée aux applications Web.

MéthodeWfuzz

Wfuzz est un outil très populaire et multi-plateforme car développé en Python. Pour l'installer, il faut lancer la commande :

1
pip install wfuzz

Plusieurs listes de mots sont également maintenus par les développeurs pour différents usages : injections, mots de passe, URL cachées, etc.

ConseilPrévenir le fuzzing

Pour prévenir ce type d'attaques, il faut d'une part changer l'architecture de son application Web car cacher des pages ne les protègent pas. Il faut également mettre en place de l'authentification lorsque cela est nécessaire. Enfin, il faut adopter une bonne politique de mots de passe car le fuzzing peut très bien toucher les mots de passe.

À retenir

  • Il faut faire attention au traitement des champs texte pour ne pas subir d'injection SQL.

  • Il ne faut pas adopter une sécurité par l'obscurité car le fuzzing est une méthode très efficace dans ces cas-là.

Stéphane Crozat, Marc Damie Paternité - Partage des Conditions Initiales à l'Identique