
Exploit de preuve de concept pour CVE-2025-29384, un débordement de tampon critique basé sur la pile dans les routeurs Tenda AC9. Inclut des modules Python et Metasploit pour un DoS distant non authentifié et une potentielle RCE sur un firmware basé sur MIPS.
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 à des attaquants distants non authentifiés 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).
Ce projet a pour but de démontrer des compétences en développement d'exploits, de contribuer à la communauté de la cybersécurité et de fournir une vitrine éducative pour des évaluations académiques (par exemple, 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 à des attaquants distants non authentifiés 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).
Ce projet a pour but de démontrer des compétences en développement d'exploits, de contribuer à la communauté de la cybersécurité et de fournir une vitrine éducative pour des évaluations académiques, comme des 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, ce qui peut mener à une exécution de code.
Le Tenda AC9 est un routeur sans fil double bande avec les caractéristiques suivantes :
Ce dépôt inclut également un module Metasploit basé sur Ruby pour CVE-2025-29384. Le module s'intègre parfaitement avec le framework Metasploit, vous permettant d'exploiter la vulnérabilité en utilisant 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 le framework Metasploit :
msfconsole
Chargez le module :
use exploit/linux/http/tenda_ac9_stack_overflow
Définissez l'adresse IP cible :
set RHOSTS <target_ip>
Définissez la taille de la charge utile (optionnelle, par défaut 1024) :
set PAYLOAD_SIZE 2048
Exécutez l'exploit :
run
[*] Targeting Tenda AC9 at 192.168.0.1:80...
[*] Sending payload of size 2048...
[+] Payload sent successfully!
[*] Response: HTTP/1.1 200 OK...
Succès : Le serveur web du routeur plante, provoquant un 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 planter le serveur web et démontrant le potentiel d'exécution de code à distance.
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 – Ajuste 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 planter le serveur web.
python poc.py --target <router_ip> --size 2048 --threads 10
| Argument | Description |
|---|---|
--target | IP du routeur (par défaut : ) |
[+] CVE-2025-29384 Exploit Engine
[INFO] Target: 192.168.0.1
[INFO] Sending payload (2048 bytes)...
[WARNING] Target timeout - possible crash!
[INFO] Exploit sequence completed.
Succès : L'interface web du routeur devient injoignable (condition de DoS).
Échec : Le routeur répond encore (non vulnérable ou mauvais firmware).
Pour confirmer que l'exploit a bien fait planter le routeur, essayez de recharger l'interface web. Si elle devient injoignable, 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 test d'intrusion éthique. L'utilisation non autorisée de cet exploit est illégale. L'auteur n'est pas responsable des utilisations abusives ou des dommages causés par ce code.
Développé avec ❤️ par Otsmane Ahmed Ce projet est destiné uniquement à des fins éducatives et de test d'intrusion éthique. L'utilisation non autorisée de cet exploit est illégale. L'auteur n'est pas responsable des utilisations abusives 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) |