File upload

1. WebShell : Obtenir des fichiers

<?php echo file_get_contents('/path/to/file'); ?>

2. WebShell : Cmd GET Request.

<?php echo system($_GET['cmd']); ?>

3. Bypass Content-Type restriction

Exemple de requĂȘte :

Bypass Content Type :

4. WebShell via directory traversal

Il est possible qu'un site Ă©mette des restrictions d'upload dans un rĂ©pertoire du serveur bien prĂ©cis et donc n'execute pas notre fichier. On peut tenter Ă  l'aide d'une directory traversal d'upload notre fiichier dans un autre rĂ©pertoire et voir si les mĂȘme restriction sont appliquĂ©es.

5. Bypass File extension blacklist with .htaccess

Le fichier .htacess est un fichier de configuration des serveurs apache permettant d'autoriser ou non certaines extension de fichier ou bien mapper des extension Ă  des types de fichiers.

Pour plus informations sur cette technique, consulter :

6. Web shell upload via obfuscated file extension

Aller voir ce site pour avoir la liste pour possiblement bypass l'extension du fichier. Pour le challenge sur Portswigger, le null byte suffisait :

7. WebShell Polyglot File

Au lieu de faire implicitement confiance au Content-TypespĂ©cifiĂ© dans une requĂȘte, des serveurs plus sĂ©curisĂ©s tentent de vĂ©rifier que le contenu du fichier correspond bien Ă  ce qui est attendu.

Dans le cas d'une fonction de téléchargement d'image, le serveur peut essayer de vérifier certaines propriétés intrinsÚques d'une image, telles que ses dimensions. Si vous essayez de télécharger un script PHP, par exemple, il n'aura aucune dimension. Par conséquent, le serveur peut en déduire qu'il ne peut pas s'agir d'une image et rejeter le téléchargement en conséquence.

L'outils exifTools permet de génerer des webshell polyglot :

Pour le challenge de portswigger, j'ai ajouté des dimension pour lui faire croire que c'était une image :

8. WebShell upload RaceCondition

Last updated