Nous avons accès à un site web, nous sommes connecté avec un compte utilisateur. Notre objectif dés maintenant est de reussir à déposer un fichier de backdoor qui sera éxécuté par le serveur web et nous donnera accès à la machine. Très souvent un formulaire permet d'uploader une image pour personnaliser son profil. Nous allons utiliser cette fonctionalité pour déposer notre backdoor.
Démarrez votre serveur dédié en cliquant sur [Start server].
Server status : stopped
Dans le navigateur: http://yoloctf.org/ctf-fileupload_/upload_basic.php
Ce site accepte n'importe quel fichier. Télécharge les fichiers sur ta machine, puis utilise le formulaire pour les uploader. Execute le fichier php une fois uploadé pour récupérer le flag.
Dans le navigateur: http://yoloctf.org/ctf-fileupload_/upload_basic_curl.php
Avec proxy : http://yoloctf.org/proxy/ctf-fileupload_/upload_basic_curl.php
Dans le shell:
curl http://ctf-fileupload_/upload_basic_curl.php
curl -v -F 'file=@file_cat1.jpg' http://ctf-fileupload_/upload_basic_curl.php
Ce site accepte n'importe quel fichier uploadé avec l'utilitaire 'curl'. Le fichier 'webshell_read_flag.php' se trouve dans le répertoire: challenges/ctf-training/ctf-fileupload/files Mets à jour la commande et utilise curl l'uploader. Récupère l'emplacement du fichier uploadé dans la réponse de curl. Execute le fichier php uploadé pour récupérer le flag.
Dans le navigateur: http://yoloctf.org/ctf-fileupload_/upload_mime.php
Avec proxy : http://yoloctf.org/proxy/ctf-fileupload_/upload_mime.php
Avant d'envoyer le fichier, le navigateur web l'analyse, et ajoute dans l'entête HTTP un champ Content-Type, qui peut valoir:
- Content-Type: image/png
- Content-Type: application/x-php
- Content-Type: text/plain Le Flag est le type MIME du fichier file_cat1.jpg
Dans le navigateur: http://yoloctf.org/ctf-fileupload_/upload_mime.php
Avec proxy : http://yoloctf.org/proxy/ctf-fileupload_/upload_mime.php
Essaye d'uploader le fichier webshell_read_flag.php. Utilise l'interface web du proxy pour modifier le type de fichier en image/png et réenvoyer le message POST. Regarde le code HTML de la réponse pour trouver l'url du fichier uploadé. Execute le fichier php uploadé pour récupérer le flag.
Dans le navigateur: http://yoloctf.org/ctf-fileupload_/upload_ext.php
Avec proxy : http://yoloctf.org/proxy/ctf-fileupload_/upload_ext.php
Télécharge le fichier sur ta machine, puis utilise le formulaire pour l'uploader. L'extension .php est filtrée. Pas de problème renomme ton fichier en webshell_read_flag.php3, ou .php4, ou .phtml... L'interpreteur php execute aussi bien des fichier en .php qu'en .php3 Note : Il est possible de limiter les extensions en configurant php-fpm: Fichier /etc/php7/php-fpm.d/www.conf : security.limit_extensions = .php
Télécharge le fichier sur ta machine, puis utilise le formulaire pour l'uploader.
Dans le navigateur: http://yoloctf.org/ctf-fileupload_/upload_ext.php
Avec proxy : http://yoloctf.org/proxy/ctf-fileupload_/upload_ext.php
Utilise leproxy pour renomer le fichier en webshell_read_flag.php%00.jpg Le moteur PHP est écrit en C qui utilise le caractère 0 pour marquer la fin d'une string. Lors de la recopie du nom, le fichier sera sauvé avec le nom webshell_read_flag.php