Outils pour utilisateurs

Outils du site


cyber:vulnerabilite:file_upload

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
cyber:vulnerabilite:file_upload [2025/07/11 14:44] – [Exemple 1] admincyber:vulnerabilite:file_upload [2025/07/11 14:47] (Version actuelle) – [Correction du code :] admin
Ligne 93: Ligne 93:
  
 Voici un exemple de code PHP d'une fonctionnalité d'envoi de fichier vulnérable :  Voici un exemple de code PHP d'une fonctionnalité d'envoi de fichier vulnérable : 
-<cadre class="php">+<code php>
 <!DOCTYPE html> <!DOCTYPE html>
 <html> <html>
Ligne 153: Ligne 153:
 include ("../footer.php"); include ("../footer.php");
 ?> ?>
-</cadre>+</code>
  
 Ce code n'effectue aucun contrôle côté serveur sur la nature du fichier envoyé. Le seul contrôle effectué est réalisé côté client via le paramètre "accept" dans la balise <code><input type="file" id="fileToUpload" name="fileToUpload" accept="image/gif, image/jpeg" required></code>  Ce code n'effectue aucun contrôle côté serveur sur la nature du fichier envoyé. Le seul contrôle effectué est réalisé côté client via le paramètre "accept" dans la balise <code><input type="file" id="fileToUpload" name="fileToUpload" accept="image/gif, image/jpeg" required></code> 
Ligne 161: Ligne 161:
 Pour prévenir l'exploitation de cette fonctionnalité, il aurait fallu implémenter des contrôles en PHP côté serveur sur le type MIME et l'extension du fichier envoyé, et renvoyer une erreur à l'utilisateur si le fichier ne correspond pas au type attendu. Pour prévenir l'exploitation de cette fonctionnalité, il aurait fallu implémenter des contrôles en PHP côté serveur sur le type MIME et l'extension du fichier envoyé, et renvoyer une erreur à l'utilisateur si le fichier ne correspond pas au type attendu.
  
-{{{Exemple 3}}}+===== Exemple 3 ===== 
 Voici un exemple de code PHP vulnérable à des attaques de type MIME : Voici un exemple de code PHP vulnérable à des attaques de type MIME :
-<code class="php">+<code php>
 <!DOCTYPE html> <!DOCTYPE html>
 <html> <html>
Ligne 223: Ligne 224:
 Ce code est une page web qui permet à l'utilisateur de télécharger un fichier sur le serveur via un formulaire. Cependant, il est vulnérable à des attaques de type MIME, ce qui signifie que des fichiers malveillants peuvent être téléchargés sur le serveur en utilisant des en-têtes MIME falsifiées. Ce code est une page web qui permet à l'utilisateur de télécharger un fichier sur le serveur via un formulaire. Cependant, il est vulnérable à des attaques de type MIME, ce qui signifie que des fichiers malveillants peuvent être téléchargés sur le serveur en utilisant des en-têtes MIME falsifiées.
  
-{{Correction du code :}}+==== Correction du code : ==== 
 Pour résoudre cette vulnérabilité, il est nécessaire de vérifier le contenu réel du fichier plutôt que de se fier uniquement à l'en-tête MIME fournie par le client. Voici un patch qui améliore la sécurité du téléchargement de fichiers : Pour résoudre cette vulnérabilité, il est nécessaire de vérifier le contenu réel du fichier plutôt que de se fier uniquement à l'en-tête MIME fournie par le client. Voici un patch qui améliore la sécurité du téléchargement de fichiers :
-<code class="php">+<code php>
 <?php <?php
 if(isset($_POST["submit"])) { if(isset($_POST["submit"])) {
Ligne 263: Ligne 265:
  
 Avec ce patch, la vulnérabilité est corrigée en vérifiant le contenu réel du fichier avec getimagesize(). De plus, nous utilisons une liste blanche d'extensions de fichiers autorisées ($allowedExtensions) pour s'assurer que seuls les fichiers d'images avec des extensions spécifiques (JPG, JPEG et PNG) sont autorisés à être téléchargés. Cela rend le processus d'envoi plus sûr et prévient les attaques de type MIME. Avec ce patch, la vulnérabilité est corrigée en vérifiant le contenu réel du fichier avec getimagesize(). De plus, nous utilisons une liste blanche d'extensions de fichiers autorisées ($allowedExtensions) pour s'assurer que seuls les fichiers d'images avec des extensions spécifiques (JPG, JPEG et PNG) sont autorisés à être téléchargés. Cela rend le processus d'envoi plus sûr et prévient les attaques de type MIME.
 +
 +===== CWEs =====
 +
 +  * [[https://cwe.mitre.org/data/definitions/287.html|CWE-287 : Improper Authentication]]
 +    * When an actor claims to have a given identity, the software does not prove or insufficiently proves that the claim is correct.
 +
 +  * [[https://cwe.mitre.org/data/definitions/553.html|CWE-553 : Command Shell in Externally Accessible Directory]]
 +    * A possible shell file exists in /cgi-bin/ or other accessible directories. This is extremely dangerous and can be used by an attacker to execute commands on the web server.
 +
 +===== References =====
 +
 +URL :
 +  * https://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Secure%20file%20upload%20in%20PHP%20web%20applications.pdf
 +  * https://github.com/flozz/p0wny-shell
 +  * https://www.prplbx.com/resources/blog/exploiting-file-upload-vulnerabilities/
 +  * https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
 +  * https://book.hacktricks.xyz/pentesting-web/file-upload
 +  * https://repo.zenk-security.com/Techniques%20d.attaques%20%20.%20%20Failles/Webhacking:%20les%20failles%20php.pdf
 +  * https://repo.zenk-security.com/Techniques%20d.attaques%20%20.%20%20Failles/Securite%20PHP%20-%20Faille%20upload.pdf
  
 ====== Retour fiches vulnérabilités ====== ====== Retour fiches vulnérabilités ======
cyber/vulnerabilite/file_upload.1752237868.txt.gz · Dernière modification : 2025/07/11 14:44 de admin