Exploiter les failles upload PHP (Magic Byte, .htaccess...)

Secureaks
10 Sept 202415:42

Summary

TLDRCette vidéo éducative aborde la vulnérabilité critique des failles d'upload de fichiers sur les serveurs web PHP. Elle explique comment les attaquants peuvent exploiter ces failles pour exécuter du code et compromettre le serveur. Le présentateur montre comment tester et exploiter ces failles à l'aide d'une application Symfony, puis dévoile des méthodes de protection efficaces. Il met en avant l'importance de la vérification des extensions de fichiers, l'utilisation de listes blanches, la limitation de la taille des fichiers et le stockage en dehors du répertoire public. Des techniques d'attaque avancées sont explorées, y compris l'utilisation de magic bytes et de fichiers .htaccess pour contourner les restrictions.

Takeaways

  • 🔒 La faille d'upload de fichiers est une vulnérabilité critique sur les serveurs web développés en PHP.
  • ⚠️ Les attaquants peuvent exécuter du code et des commandes systèmes arbitraires en uploadant un fichier PHP.
  • 🛠️ L'auteur présente des méthodes pour tester et exploiter ces failles d'upload de fichiers.
  • 🌐 Une application Symfony simple est utilisée pour illustrer les différents cas de figures de cette vulnérabilité.
  • 📝 Le code source de l'application et des exemples d'exploitation sont disponibles pour un apprentissage éducatif.
  • 🚫 Il est rappelé que tester ces failles sur des sites web sans autorisation est interdit.
  • 👁️‍🗨️ La vérification du content type du fichier uploadé est une protection courante, mais elle peut être contournée.
  • 📡 L'utilisation de 'magic bytes' permet de faire croire au serveur que le fichier est d'un type autorisé, comme une image JPEG.
  • 🔑 La vérification de l'extension du fichier uploadé est une protection plus fiable que la vérification du content type.
  • 🗂️ L'utilisation de null byte ou de fichiers .htaccess peut contourner certaines protections basées sur les extensions de fichiers.
  • 🛡️ Pour se protéger, il est recommandé d'utiliser une liste blanche d'extensions autorisées, de limiter la taille des fichiers et de stocker les fichiers uploadés dans des dossiers non accessibles depuis Internet.

Q & A

  • Quelle est la vulnérabilité principale abordée dans la vidéo concernant les serveurs web développés en PHP?

    -La vulnérabilité principale abordée est la faille d'upload de fichiers, qui permet à un attaquant de potentiellement compromettre l'intégralité du serveur en exécutant du code et des commandes systèmes arbitraires.

  • Quel est le but éducatif de la vidéo?

    -Le but éducatif de la vidéo est de montrer comment tester et exploiter les failles d'upload de fichiers, ainsi que de montrer comment se protéger efficacement de ce type d'attaque.

  • Pourquoi la vidéo utilise-t-elle une application Symfony pour illustrer les exemples?

    -L'application Symfony est utilisée car elle est relativement simple et permet de montrer différents cas de figure liés aux failles d'upload de fichiers, et elle est exécutée sur un docker local pour la démonstration.

  • Quelle est la première mesure de protection contre les failles d'upload de fichiers présentée dans la vidéo?

    -La première mesure de protection présentée est la vérification du content type du fichier uploadé, pour s'assurer qu'il correspond bien à un type de fichier autorisé, comme une image.

  • Comment la vidéo illustre le contournement de la vérification du content type?

    -La vidéo montre comment envoyer une requête HTTP avec un content type trompeur, comme 'image/jpeg', pour faire croire au serveur que le fichier uploadé est une image, ce qui permet d'uploader un fichier PHP malgré la vérification du content type.

  • Quels sont les magic bytes et comment sont-ils utilisés dans le contexte de la vidéo?

    -Les magic bytes sont des suites d'octets placés en début de fichier pour indiquer son type. Dans la vidéo, ils sont utilisés pour faire croire au serveur que le fichier uploadé est une image, en ajoutant les magic bytes correspondants au début d'un fichier PHP.

  • Quelle est la différence entre la vérification de l'extension du fichier par une liste noire et une liste blanche?

    -La liste noire consiste à interdire certaines extensions, tandis que la liste blanche autorise uniquement certaines extensions. La vidéo recommande d'utiliser une liste blanche pour une meilleure sécurité, car cela réduit les risques de contournement des protections.

  • Comment la vidéo explique la technique de l'upload de fichiers .htaccess pour contourner les restrictions?

    -La vidéo montre comment uploader un fichier .htaccess contenant une directive AddType pour forcer le serveur à traiter les fichiers .jpg comme des fichiers PHP, permettant ainsi d'exécuter du code PHP à travers des fichiers avec l'extension .jpg.

  • Quelles sont les mesures de protection recommandées à la fin de la vidéo pour prévenir les failles d'upload de fichiers?

    -Les mesures recommandées incluent la vérification de l'extension du fichier uploadé avec une liste blanche, la limitation de la taille des fichiers, le stockage des fichiers dans des dossiers non accessibles depuis Internet, et la génération d'un nom de fichier aléatoire pour chaque fichier uploadé.

  • Pourquoi la vidéo insiste-t-elle sur l'importance de ne pas tester ces vulnérabilités sans autorisation sur des sites web?

    -La vidéo souligne l'importance de ne pas tester ces vulnérabilités sans autorisation car cela pourrait être considéré comme une activité illégale et éthiquement répréhensible. L'objectif est d'informer et d'éduquer sur la sécurité, non d'encourager les activités malveillantes.

Outlines

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Mindmap

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Keywords

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Highlights

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Transcripts

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant