Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2018-14847 — Analysis and PoC for CVE-2018-14847, MikroTik RouterOS Winbox information disclosure vulnerability allowing unauthenticated read access to the credential database. | Kitploit
Outils/GitHubGitHub/themalwareguardian/cve-2018-14847
Embedded Systems SecurityPassword CrackingIoT SecurityVulnerability AnalysisExploitationInformation Gathering
GitHubthemalwareguardian/cve-2018-14847

CVE-2018-14847

Analysis and PoC for CVE-2018-14847, MikroTik RouterOS Winbox information disclosure vulnerability allowing unauthenticated read access to the credential database.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt
il y a 3 moisPas encore vérifié

🐞 MikroTik CVE-2018-14847

Attaque par traversée de chemin non authentifiée dans le protocole Winbox de MikroTik divulguant les identifiants administrateur depuis /flash/rw/store/user.dat




📑 Table des matières

  • Aperçu
  • Versions affectées
  • Vulnérabilité
    📂
    • Protocole Winbox
    • Traversée de chemin
    • Déchiffrement de mot de passe
    • Porte dérobée développeur
  • Exploit
  • Références



📋 Aperçu

CVE-2018-14847 est une vulnérabilité de traversée de chemin dans MikroTik RouterOS affectant le protocole de gestion Winbox (port TCP 8291). Un attaquant distant non authentifié peut lire des fichiers arbitraires du système de fichiers du routeur, y compris la base de données d'identifiants utilisateur /flash/rw/store/user.dat, qui stocke les mots de passe chiffrés avec une clé XOR statique faible.

La vulnérabilité a été divulguée à l'origine par Jacob Baines (Tenable) en juillet 2018 via l'exploit By the Way. Ce dépôt contient une réimplémentation autonome en Python3 avec une documentation complète du protocole.




🎯 Versions affectées

Télécharger l’outil
CanalVersions
Long terme6.30.1 - 6.40.7
Stable6.29 - 6.42
Bêta6.29rc1 - 6.43rc3

MikroTik a corrigé cette vulnérabilité en avril 2018. Les appareils exécutant des versions de RouterOS antérieures aux versions corrigées restent vulnérables.




🔬 Vulnérabilité

🧠 Protocole Winbox

Winbox est le protocole de gestion binaire propriétaire de MikroTik fonctionnant sur le port TCP 8291. Les trames sont structurées comme suit :

root@kitploit:~
[total_len - 2][0x01][0x00][total_len - 4]["M2"][champs...]

L'en-tête de 4 octets encode la taille totale de la trame. Il ne s'agit pas d'un u16 standard en little-endian – chaque octet encode total_length - 2 et total_length - 4 indépendamment.

Encodage des champs dans chaque trame :

Octet de typeSignificationValeur
0xffMarqueur de champ étendusuivi de field_id et valeur
0x09Entier u81 octet
0x21Chaînepréfixe de longueur 1 octet + données
0x88Marqueur de réponse attendueaucune valeur
0xfeIdentifiant de champ étenduid 3 octets + type + valeur

Le gestionnaire de système de fichiers se trouve au point d'accès (sys=5, handler=0) et expose trois commandes pertinentes :

  • 0x06 – ouvrir fichier
  • 0x04 – lire fichier
  • 0x01 – créer fichier

🧨 Traversée de chemin

Le gestionnaire de système de fichiers Winbox ne nettoie pas le chemin passé à la commande d'ouverture de fichier. En imbriquant des séquences '/////./../', un attaquant s'échappe des limites du bac à sable et atteint le système de fichiers racine :

root@kitploit:~
/////./..//////./..//////./../flash/rw/store/user.dat

Chaque segment '/////./../' (10 octets) remonte d'un niveau de répertoire. Trois segments atteignent la racine, après quoi flash/rw/store/user.dat est la base de données d'identifiants utilisateur de RouterOS. La requête ne nécessite aucune authentification.

L'exploit envoie deux trames :

  1. Requête d'ouverture : commande open-file avec le chemin de traversée
    • Octet de réponse [38] → session_id
  2. Requête de lecture : commande read-file avec session_id intégré
    • Réponse à partir de l'octet [55] → contenu brut de user.dat

🔐 Déchiffrement de mot de passe

user.dat est une séquence d'enregistrements nv::message. Chaque enregistrement est précédé d'un champ de longueur de 2 octets en little-endian et commence par les octets magiques M2. Les champs à l'intérieur de chaque enregistrement utilisent un identifiant de champ de 3 octets en little-endian :

Identifiant de champTypeSignification
0x01chaînenom d'utilisateur
0x02u8groupe – 3 = accès administrateur complet
0x11chaînemot de passe chiffré (vide si non défini)

Les mots de passe sont chiffrés avec une clé XOR statique dérivée d'un sel codé en dur compilé dans RouterOS :

root@kitploit:~
key      = MD5(username + "283i4jfkai3389")
password = XOR(encrypted_pass[i], key[i % len(key)])  jusqu'à l'octet nul

Cela signifie que tout user.dat extrait d'un appareil affecté peut être déchiffré hors ligne sans force brute.


🧬 Porte dérobée développeur

Après avoir obtenu le mot de passe administrateur, l'attaquant peut s'authentifier via Winbox et utiliser la commande create-file pour écrire deux fichiers qui activent la connexion développeur cachée :

root@kitploit:~
/pckg/option                       active le paquet option
/flash/nova/etc/devel-login        active l'utilisateur devel

Une fois ces fichiers présents, le routeur expose un shell root BusyBox via Telnet et SSH sous l'utilisateur devel, en utilisant le mot de passe de l'administrateur.

Telnet doit être connecté en premier pour que SSH fonctionne sur certaines versions de RouterOS.




⚙️ Exploit

Exploit_CVE_2018_14847.py est un exploit Python3 autonome sans dépendances externes. Il implémente le protocole binaire Winbox à partir de zéro et effectue :

  1. Traversée de chemin non authentifiée pour extraire user.dat.
  2. Analyse binaire des enregistrements nv::message.
  3. Déchiffrement de mot de passe MD5-XOR.
root@kitploit:~
# Port par défaut 8291
python3 Exploit_CVE_2018_14847.py 192.168.1.10

# Port personnalisé
python3 Exploit_CVE_2018_14847.py 192.168.1.10 8291

Post-exploitation – shell de porte dérobée développeur :

root@kitploit:~
# Telnet (doit être connecté en premier)
telnet -l devel 192.168.1.10

# SSH (après la session Telnet)
ssh -oHostKeyAlgorithms=+ssh-dss [email protected]



📚 Références

  • Avis de sécurité MikroTik

    • Avis de correctif officiel et chronologie de MikroTik.
  • Tenable - By the Way PoC

    • Exploit C++ original par Jacob Baines.
  • NVD - CVE-2018-14847

    • CVSS 9.1 (Critique).