laptop-fileRemote File Inclusion (RFI)

Consignes

Le flag se trouve à la racine du site web (/var/www/html) !

Réalisation

Après une connexion au site, nous nous retrouvons dans URL particulier. Un test similaire à celui effectué lors du challenge Local File Inclusion (LFI) Base64 est alors effectué en se rendant sur le lien suivant pour tester le RFI : http://ctfd-0.int.ecole2600.com:20676/index.php?page=https://google.com

Ce lien nous montre la page de https://google.com

On sait sur RFI permet d'inclure un fichier se trouvant sur un serveur distant. Le but va donc être d'injecter notre propre fichier afin de récupérer le FLAG.

Pour ce challenge, on a choisi de réaliser un reverse shell pour avoir un accès via un invite de commande (+ stylé non ? 😎) Pour se faire, étant donné que nous avons la version gratuite de ngrok, nous ne pouvons lancer que une seule session à la fois, ne nous permettant pas de réaliser à la fois une écoute sur le port 4444 pour réaliser la connexion à distance et un accès sur le port 8000 que nous utiliserons pour exposer notre shell sur Internet et y accéder via le site cible. Pour palier ceci, nous devons modifier le fichier ~/.config/ngrok/ngrok.yml en y ajoutant les éléments suivants :

tunnels:
  tcp:
    addr: 4444
    proto: tcp

  http:
    addr: 8000
    proto: http

Le but ici est de mettre en place 2 tunnels que nous allons lancer en même temps pour ne lancer que une session avec 2 adresses différentes pour l'écoute et le partage de notre reverse shell.

Une fois le fichier modifié et sauvegardé, nous pouvons exécuter dans un autre terminal notre ngrok avec les 2 ports renseignés dans le fichier précédent :

Nous pouvons bien observer la création de 2 liens sur les ports 4444 et 8000.

Il nous faut maintenant créer notre reverse shell. Pour se faire, créer le fichier shell.php qui est lié à notre port d'écoute 4444 :

Maintenant, exécuter dans un nouveau terminal la commande suivante pour écouter le port 4444 :

Exécuter en paralèlle, dans le répertoire du fichier shell.php, la commande python permettant d'accéder au shell :

Une fois tout ceci prêt, accéder via le site cible à notre fichier shell.php en utilisant le lien ngrok sur le port 8000 :

Une fois l'accès à ce lien effectué, un reverse shell est bien établi sur notre page utilisant netcat :

Une fois la connexion établie, on observe que l'on se trouve à la racine du site WEB, on peut alors affiché le FLAG :

Voici donc le FLAG :

Last updated