Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2019-17147 — Analyse complète de rétro-ingénierie et exploitation de CVE-2019-17147, un débordement de tampon de pile dans les routeurs TP-Link TL-WR841N. Comprend l'analyse du firmware, le débogage matériel et un exploit d'injection de shellcode par étapes pour RCE non authentifié. | Kitploit
Outils/GitHubGitHub/imnot-ye/cve-2019-17147
Sécurité des Systèmes EmbarquésSécurité IoTAnalyse des VulnérabilitésExploitationRétro-ingénierieShellcodeHacking MatérielSécurité MatérielleArticles et RechercheApprentissage et ÉducationAnalyse de MicrologicielExploitation de Binaires
434il y a 8 moisPas encore vérifié

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
GitHubimnot-ye/cve-2019-17147

CVE-2019-17147

Analyse complète de rétro-ingénierie et exploitation de CVE-2019-17147, un débordement de tampon de pile dans les routeurs TP-Link TL-WR841N. Comprend l'analyse du firmware, le débogage matériel et un exploit d'injection de shellcode par étapes pour RCE non authentifié.

Voir le dépôt

CVE-2019-17147 : Exploitation du TP-Link TL-WR841N

Banner

Présentation

Ce dépôt documente le reverse engineering complet et l'exploitation de CVE-2019-17147, une vulnérabilité critique d'exécution de code à distance (RCE) sur le routeur TP-Link TL-WR841N (architecture MIPSEL). La vulnérabilité réside dans le démon serveur web httpd, où une validation d'entrée inadéquate permet un dépassement de tampon basé sur la pile via une fonction personnalisée cstr_strncpy, conduisant à une exécution de code arbitraire sans authentification.

VulnérabilitéCVE-2019-17147
CVSS v3.18.8 (Élevée)
VecteurAV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
TypeDépassement de tampon basé sur la pile
Composant/usr/bin/httpd

Infrastructure et outils

L'environnement d'analyse a été mis en place en utilisant les composants suivants :

  • Matériel : Routeur TP-Link TL-WR841N.
  • Outils matériels : Programmateur CH341A (dump de la mémoire SPI Flash), convertisseur USB-TTL (console UART), pince SOIC8.
  • Outils logiciels : flashrom (dump mémoire), binwalk (extraction du firmware), IDA Pro (analyse statique), GDB-Multiarch (débogage à distance), QEMU (émulation MIPSEL).
  • Version du firmware : TL-WR841N(US)_V14_180319.

Analyse technique

1. Analyse statique

La vulnérabilité a été identifiée dans le binaire /usr/bin/httpd. L'analyse statique via IDA Pro a révélé une fonction de copie de chaîne personnalisée, cstr_strncpy, utilisée lors de l'analyse des en-têtes HTTP (en particulier l'en-tête Host).

Graphique IDA

La fonction cstr_strncpy accepte un paramètre copy_len dérivé de la longueur de la chaîne source plutôt que de la taille du tampon destination. Cela permet un dépassement de tampon classique lorsqu'un en-tête trop long est fourni. De plus, la fonction http_parser_argStrToList, qui manipule une structure de liste chaînée, est affectée par ce dépassement, permettant de contrôler les pointeurs next et prev.

2. Analyse dynamique

Le débogage à l'exécution avec gdbserver a confirmé le plantage et le contrôle du flux d'exécution. L'analyse de la carte mémoire (vmmap) a révélé un manque critique de durcissement :

  • Tas : Permissions RWX (Lecture, Écriture, Exécution).
  • ASLR : Limité/Inefficace pour ce binaire.
  • NX : Désactivé.

VMMap

Cette configuration permet l'exécution directe du shellcode placé sur le tas, contournant le besoin de chaînes ROP complexes.

Stratégie d'exploitation

La chaîne d'exploitation utilise une primitive Écrire-à-Où dérivée des pointeurs de liste chaînée corrompus pour parvenir à une exécution de code à distance.

  1. Heap Spraying : Le shellcode est injecté dans le tas. Grâce à la persistance du tas entre les requêtes, cela peut être fait par étapes.
  2. Injection par étape : Pour contourner les restrictions d'octets nuls dans strcpy, la charge utile est envoyée en plusieurs requêtes :
    • Étape 1 : Écrire l'adresse du shellcode dans une zone de transit.
    • Étape 2 : Écrire l'adresse GOT cible dans la zone de transit.
  3. Écrasement GOT : L'entrée de la fonction atol dans la Table des offets globaux (GOT) est écrasée avec l'adresse du shellcode.
  4. Déclenchement de l'exécution : L'exploit force un appel à atol (via un en-tête Content-Length), redirigeant l'exécution vers le shellcode injecté.

Diagramme d'exploitation

Vérification de l'exploit

Le script Python final automatise avec succès l'attaque, ouvrant un shell root sur le port 31337.

Shell root

Atténuation

La vulnérabilité provient de pratiques de codage non sécurisées dans la gestion des tampons.

  • Correction du code source : Remplacer l'utilisation de cstr_strncpy par des alternatives sécurisées qui imposent strictement les limites du tampon de destination (par exemple, strncpy avec une vérification explicite des limites basée sur sizeof(dest)).
  • Durcissement du binaire : Activer NX (No-Execute) pour empêcher l'exécution de code sur la pile et le tas. Activer ASLR et PIE (Position Independent Executable) complets pour randomiser la disposition de la mémoire.

Documentation complète

Pour un guide pas à pas détaillé de l'ensemble du processus, y compris l'analyse du code et la configuration de l'environnement, veuillez consulter les guides complets inclus dans ce dépôt :

  • 🇮🇹 Guide Complète (Italien)
  • 🇬🇧 Guide Complet (Anglais)

Auteurs

  • Angelo Zullo
  • Simone Vitto
  • Vincenzo Cantatore

Avertissement

Ce projet est uniquement destiné à des fins éducatives et de recherche. Les informations fournies visent à améliorer la sécurité des appareils IoT. Les auteurs ne sont pas responsables de toute mauvaise utilisation des informations ou du code contenus dans ce document.


Basé sur des recherches et analyses originales.

Télécharger l’outil