ctf-chal-ji/writeup/writeup.md
david 8b504ddc53 * added readme
* restructured archi
2025-10-24 14:45:20 +02:00

5.5 KiB
Raw Permalink Blame History

L'objectif : trouver un flag/code final.

Ce writeup sera séparé en différentes parties:

  1. Reconaissance
  2. Exploitation
  3. Foothold
  4. Privesc

Tout dabord, loutil qui vous sera utile dans presque tous vos CTF est Nmap. Concrètement, il scanne les ports dune machine (il y a 65 535 ports possibles), ce qui permet didentifier les services qui tournent sur la cible. Chaque port correspond à un service : par exemple, le port 22 est souvent utilisé par SSH, 80 pour un site web HTTP, et 443 pour HTTPS.

Pour commencer, on va lancer un scan basique pour repérer les ports ouverts et tenter didentifier les services.

!Screenshot From 2025-10-18 14-20-49.png

Loption -p- demande à Nmap de scanner tous les ports (1 à 65 535) par défaut Nmap nexplore que les 1 000 ports les plus courants.

Dans notre scan, on a trouvé trois ports ouverts :

  • 22 → SSH (connexion distante)
  • 443 → site web en HTTPS
  • 8080 → site web en HTTP

Ce qui mintéresse ici, cest le service HTTP sur le port 8080 : allons lexplorer pour voir ce quil propose.

!Screenshot From 2025-10-18 14-23-59.png

Comme vous pouvez le voir, la page affiche un formulaire de connexion.

La première idée qui me vient est de tenter des injections SQL rappel : les injections SQL constituent une grande part des failles des applications web.

Il existe de nombreux payloads ; vous pouvez en trouver une bonne collection ici :

admin' ou

' OR 1=1 --

!Screenshot From 2025-10-18 14-24-56.png

Et voilà, succès : nous avons un accès administrateur.

La prochaine étape consiste à travailler le foothold cest-à-dire transformer cet accès en une connexion sur laquelle on peut lancer des commandes sur la machine cible (explorer le système, récupérer des informations, et préparer lescalade de privilèges).

!Screenshot From 2025-10-18 14-25-21.png

Comme vous pouvez le voir, il est possible de télécharger (uploader) des notes au format .txt.

!Screenshot From 2025-10-18 14-30-10.png

Essayons quelques contournements pour téléverser un fichier PHP par exemple en le nommant fiche.php.txt.

Dans ce fichier, on placera un reverse shell en PHP (on peut en trouver un exemple sur revshell)

!Screenshot From 2025-10-18 14-37-06.png

On a réussi à téléverser un fichier .php exécutable par le serveur, là où un simple .txt naurait rien fait.

Ce fichier nous donne un foothold : en exécutant du code PHP côté serveur, on peut lancer une connexion vers notre machine et contrôler un shell.

Avant dexécuter le fichier sur la cible, démarrez un listener sur votre poste (pwncat ou netcat). Par exemple avec netcat: nc -lvnp 9001

(Lancez ensuite le script PHP côté serveur pour quil se connecte sur le port 9001.)

!Screenshot From 2025-10-18 14-48-04.png

Nous allons maintenant cliquer sur le fichier que nous avons téléversé.

!Screenshot From 2025-10-18 15-15-58.png

Nous avons établi une connexion sur la machine cible : nous sommes authentifiés en tant quutilisateur apache. La prochaine étape consiste à effectuer lescalade de privilèges (privesc).

!Screenshot From 2025-10-18 17-25-45.png

En parcourant un peu le serveur, nous avons trouvé un fichier creds.txt contenant une entrée au format username:mot_de_passe_chiffré. En examinant davantage, on constate que le mot de passe est haché en MD5.

!Screenshot From 2025-10-18 15-58-28.png

En soumettant le hachage à CrackStation, nous avons retrouvé le mot de passe en clair : secure Avec ces identifiants (agent:secure), nous pouvons nous connecter au compte utilisateur agent.Pour établir une session distante, lancez une connexion SSH vers la machine cible, par exemple :

!Screenshot From 2025-10-18 15-43-32 1.png

Vous pouvez également utiliser ssh avec la commande ssh user@ip Maintenant on va essayer de trouver un moyen d'avoir encore plus de privilèges.

!Screenshot From 2025-10-18 15-51-05 1.png

On commence par exécuter sudo -l : cette commande indique quelles commandes lutilisateur peut exécuter avec les privilèges maximaux (root).

Dans notre cas, la sortie montre que vim est autorisé via sudo en tant que root.

Nous nous rendons alors sur GTFOBins pour vérifier si vim peut être utilisé comme vecteur de privilege escalation. En recherchant vim sur GTFOBins, on découvre plusieurs méthodes documentées pour obtenir un shell avec les droits root.

!Screenshot From 2025-10-18 15-52-02.png

La possibilité dexécuter vim via sudo rend ce binaire vulnérable à une escalade de privilèges, il peut être utilisé pour obtenir un shell avec les droits root.

![Screenshot From 2025-10-18 15-55-07.png][]

On teste la première commande, pense bien à appeler /usr/bin/vim. Après lexécution, on constate quon obtient des permissions root.

!Screenshot From 2025-10-18 15-56-05 1.png

En accédant au répertoire /root, nous pouvons consulter le fichier final. La présence dun signe = en fin de contenu est caractéristique dun encodage Base64.

!Screenshot From 2025-10-18 15-56-51 1.png

Rendons-nous sur Cyberchef afin de le décoder.

!Screenshot From 2025-10-18 15-57-37.png

Le code final du challenge est : 84195.

Félicitations, vous avez terminé votre premier CTF.

🎯 La root est longue mais la voie est Libre