
Testen und Ausnutzen von STUN/TURN-Servern auf Fehlkonfigurationen, die das Pivoting im internen Netzwerk über SOCKS-Proxy, Memory-Leak-Angriffe und das Scannen interner Ports ermöglichen.
Stunner ist ein Werkzeug zum Testen und Ausnutzen von STUN-, TURN- und TURN-over-TCP-Servern. TURN ist ein Protokoll, das hauptsächlich in Videokonferenzen und Audio-Chats (WebRTC) verwendet wird.
Wenn Sie einen fehlkonfigurierten Server finden, können Sie dieses Tool verwenden, um einen lokalen Socks-Proxy zu öffnen, der den gesamten Datenverkehr über das TURN-Protokoll in das interne Netzwerk hinter dem Server weiterleitet.
Ich habe dieses Tool während eines Tests von Cisco Expressway entwickelt, der zu einigen Schwachstellen führte: https://firefart.at/post/multiple_vulnerabilities_cisco_expressway/
Um den erforderlichen Benutzernamen und das Passwort zu erhalten, müssen Sie diese mit einer Out-of-Band-Methode abrufen, z. B. durch Abhören der Connect-Anfrage eines Webbrowsers mit Burp. Am Ende der Readme habe ich einen Beispiel-Workflow hinzugefügt, der zeigt, wie man einen solchen Server testen würde.
Dieses Werk ist lizenziert unter der Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Um eine Kopie dieser Lizenz einzusehen, besuchen Sie http://creativecommons.org/licenses/by-nc-sa/4.0/ oder senden Sie einen Brief an Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
STUN: RFC 5389
TURN: RFC 5766
TURN for TCP: RFC 6062
TURN Extension for IPv6: RFC 6156
Dieser Befehl gibt einige Informationen über den STUN- oder TURN-Server aus, wie unterstützte Protokolle und Attribute wie die verwendete Software.
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--timeout value connect timeout to turn server (default: 1s)
--help, -h show help (default: false)
./stunner info -s x.x.x.x:443
Dieser Befehl testet mehrere private und eingeschränkte Bereiche, um zu sehen, ob der TURN-Server so konfiguriert ist, dass Verbindungen zu den angegebenen IP-Adressen erlaubt sind. Wenn ein bestimmter Bereich nicht verboten ist, können Sie diesen Bereich mit den anderen bereitgestellten Befehlen weiter aufzählen. Wenn eine IP erreichbar ist, bedeutet dies, dass der TURN-Server Datenverkehr an diese IP weiterleitet.
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value connect timeout to turn server (default: 1s)
--username value, -u value username for the turn server
--password value, -p value password for the turn server
--help, -h show help (default: false)
TCP-basierte TURN-Verbindung (Verbindung von Ihnen zum TURN-Server):
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol tcp
UDP-basierte TURN-Verbindung (Verbindung von Ihnen zum TURN-Server):
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol udp
Dies ist einer der nützlichsten Befehle für TURN-Server, die TCP-Verbindungen zu Backend-Servern unterstützen. Er startet einen lokalen SOCKS5-Server ohne Authentifizierung und leitet den gesamten TCP-Datenverkehr über das TURN-Protokoll weiter (UDP über SOCKS wird derzeit nicht unterstützt). Wenn der Server fehlkonfiguriert ist, leitet er den Datenverkehr an interne Adressen weiter, sodass dies genutzt werden kann, um interne Systeme zu erreichen und den Server als Proxy in das interne Netzwerk zu missbrauchen. Wenn Sie sich dafür entscheiden, auch DNS-Abfragen über SOCKS durchzuführen, werden diese über Ihren lokalen Nameserver aufgelöst. Daher ist es am besten, mit privaten IPv4- und IPv6-Adressen zu arbeiten. Bitte beachten Sie, dass dieses Modul nur TCP-Datenverkehr weiterleiten kann.
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value connect timeout to turn server (default: 1s)
--username value, -u value username for the turn server
--password value, -p value password for the turn server
--listen value, -l value Address and port to listen on (default: "127.0.0.1:1080")
--drop-public, -x Drop requests to public IPs. This is handy if the target can not connect to the internet and your browser want's to check TLS certificates via the connection. (default: true)
--help, -h show help (default: false)
./stunner socks -s x.x.x.x:3478 -u username -p password -x
Nach dem Start des Proxys öffnen Sie Ihren Browser, stellen Sie in den Einstellungen den Proxy auf SOCKS5 mit der IP 127.0.0.1:1080 (stellen Sie sicher, dass Sie die Option „Lokale Adressen umgehen“ nicht aktivieren, da wir die entfernten lokalen Adressen erreichen möchten) und rufen Sie die gewünschte IP im Browser auf.
Beispiel: https://127.0.0.1, https://127.0.0.1:8443 oder https://[::1]:8443 (diese rufen die Ports auf dem getesteten TURN-Server von den lokalen Schnittstellen aus auf).
Sie können auch proxychains konfigurieren, um diesen Proxy zu verwenden (es wird jedoch sehr langsam sein, da jede Anfrage mehrere Anfragen zur Aktivierung des Proxys auslöst). Bearbeiten Sie einfach /etc/proxychains.conf und fügen Sie den Wert socks5 127.0.0.1 1080 unter ProxyList ein.
Beispiel für nmap über diesen SOCKS5-Proxy mit korrekt konfiguriertem proxychains (beachten Sie -sT für TCP-Syn, da sonst der SOCKS5-Proxy nicht verwendet wird)
sudo proxychains nmap -sT -p 80,443,8443 -sV 127.0.0.1
Dies wird höchstwahrscheinlich keine brauchbaren Informationen liefern, kann aber nützlich sein, um alle verfügbaren Transporte (= Protokolle zu internen Systemen) aufzulisten, die vom Server unterstützt werden. Dies könnte einige benutzerdefinierte Protokollimplementierungen anzeigen, wird aber meistens nur die Standardwerte zurückgeben.
--debug, -d enable debug output (default: false)
--turnserver value, -s value turn server to connect to in the format host:port
--tls Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value connect timeout to turn server (default: 1s)
--username value, -u value username for the turn server
--password value, -p value password for the turn server
--help, -h show help (default: false)
./stunner brute-transports -s x.x.x.x:3478 -u username -p password