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.
Attention : Injection 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.
Conseil : Nettoyer 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.
Attention : Fuzzing
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éthode : Wfuzz
Wfuzz est un outil très populaire et multi-plateforme car développé en Python. Pour l'installer, il faut lancer la commande :
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.
Conseil : Pré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à.