Les attaques par injection

Objectif : Comprendre, identifier et prévenir les principales attaques par injection.

Les attaques par injection

Qu'est-ce qu'une attaque par injection ?

  • Une attaque par injection consiste à insérer du code malveillant dans une application.
  • Elle permet de manipuler ou d'exploiter les fonctionnalités de l'application.
  • Elle cible souvent des entrées utilisateur non sécurisées ou mal validées.
  • Exemples :
    • bases de données : injection SQL ;
    • commandes système : injection de commande ;
    • langages de script : injection de code.
Les attaques par injection

Pourquoi est-ce un problème ?

  • Vol de données sensibles : mots de passe, informations personnelles ou données internes.
  • Modification ou destruction de données.
  • Prise de contrôle des systèmes affectés.
  • Atteinte à la réputation et pertes financières.
Les attaques par injection

Principaux types d'attaques par injection

  • Cross-Site Scripting (XSS) : injecte du JavaScript ou du HTML malveillant exécuté dans le navigateur des victimes.
  • Injection SQL : exploite une base de données en manipulant les requêtes SQL.
  • Injection de commandes système : insère des commandes système dans une application vulnérable.
Les attaques par injection

XSS réfléchi

  • Les données injectées sont immédiatement renvoyées par l'application.
  • Elles ne sont pas stockées sur le serveur.
  • Exemple : une recherche affiche directement les termes recherchés.
  • Un attaquant construit une URL malveillante :
http://exemple.com/recherche?q=<script>window.location='http://site-malicieux.com';</script>
  • Si la valeur de q est renvoyée sans validation ni nettoyage, le script s'exécute.
Les attaques par injection
Les attaques par injection

XSS stocké

  • Le script malveillant est sauvegardé sur le serveur de l'application.
  • Il peut être enregistré dans une base de données, puis servi à d'autres utilisateurs.
  • Exemple : une section de commentaires accepte du JavaScript malveillant :
<script>alert('Votre compte est compromis !');</script>
  • Chaque utilisateur qui consulte la page avec ce commentaire exécute le script.
Les attaques par injection
Les attaques par injection

Injection de commande système

Code vulnérable :

<?php eval($_GET['code']); ?>

Entrée malveillante :

echo shell_exec("rm -rf /");

Résultat : si le processus PHP a des droits élevés, le système peut être effacé.

Les attaques par injection

Injection SQL

Code vulnérable :

SELECT * FROM users WHERE username = '$input';

Entrée malveillante :

admin' OR '1'='1

Résultat : les données de tous les utilisateurs peuvent être exposées.

Les attaques par injection