Drucksache: windows.developer Magazin 4.2015 - Der Browser im Visier - ganz praktisch
Im windows.developer 4.15 ist ein Artikel über Angriffe auf den Webbrowser erschienen.
Die Schwachstellen in und Angriffe auf oder über den Webbrowser wurden im Windows Developer schon öfter behandelt, zum Beispiel in Ausgabe 3.2014 und 12.2014. Zu kurz gekommen sind dabei die existierenden Proof of Concepts und Exploits, mit denen sich die Schwachstellen und Angriffe nachvollziehen lassen. Es war also höchste Zeit, dass zu ändern.
Es gibt wahrscheinlich unendlich viele Möglichkeiten, mit HTML5 und JavaScript nützliche Webanwendungen zu implementieren. Und eben so viele Möglichkeiten, damit Schaden an zu richten. Ich möchte dazu aus zwei Folien aus einem Vortrag (Präsentation als PDF) zitieren, den ich 2008 auf der Ajax in Action gehalten habe:
Das erste Zitat befasst sich mit den Folgen von XSS-Schwachstellen und -Angriffen:
"• Wer JavaScript ausführen kann, kontrolliert den Browser
• Wer den Browser kontrolliert, ist hinter der Firewall
• Wer den Browser kontrolliert, ist nur einen Schritt von der Kontrolle über das System entfernt"
Das zweite Zitat geht einen Schritt weiter:
"Warum sollte jemand das System übernehmen, wenn der Browser für seine Zwecke reicht?
Port 80 ist fast überall offen, mit WebSockets wird das Loch in der Firewall noch größer"
Das war 2008. Inzwischen haben wir 2015, die Clients der Webanwendungen sind viel umfangreicher geworden als man damals ahnen konnte, und sind damit selbst zu interessanten Zielen für Angreifer geworden. Und damit steigt auch die Gefahr eines Angriffs auf/über JavaScript.
Ich höre oft "Aber das meiste betrifft uns ja nur, wenn wir eine XSS-Schwachstelle haben. Und die haben wir natürlich nicht". Dazu kann ich nur sagen: "Sind Sie sich da ganz sicher?"
Wirklich sicher kann man sich nie sein. Man kann die Webanwendung nur so sorgfältig wie möglich implementieren und alle verfügbaren Schutzmaßnahmen nutzen. Aber selbst wenn danach ein Schwachstellentest keine Schwachstellen zu Tage fördert oder alle gefundenen Schwachstellen behoben wurden, ist das nur eine Momentaufnahme. Zum einen können schon durch kleine Änderungen am Code oder der Konfiguration neue Schwachstellen entstehen, zum anderen werden immer wieder neue Angriffe entwickelt. Und vor denen schützen die bisherigen Schutzmaßnahmen dann nicht unbedingt.
Ein gutes Beispiel für einen zusätzlichen Schutz ist die Content Security Policy. Die reduziert die möglichen Folgen eines XSS-Angriffs. Was ja eigentlich gar nicht nötig ist, so lange die Anwendung keine entsprechende Schwachstelle enthält. Trotzdem sollten Sie sie nutzen. Denn es muss gar keine XSS-Schwachstelle geben, um zum Opfer eingeschleusten JavaScript-Codes wie des BeEF-Client-Codes zu werden. Der kann auch zum Beispiel in einem offenen WLAN von einem Man-in-the-Middle "on the fly" in die Webseiten eingefügt werden.
Und dann gibt es natürlich immer die Gefahr, dass ein Browser eine Universal XSS Schwachstelle enthält, wie es vor kurzem im IE der Fall war. Die erlaubt dann XSS-Angriffe auf alle Websites, auch wenn die selbst keine XSS-Schwachstelle enthalten.
Also: Nutzen Sie alle Möglichkeiten, um Ihre Webanwendung abzusichern. Denn die Cyberkriminellen werden früher oder später jede Möglichkeit für einen Angriff nutzen. Noch sind die weitgehend mit der Verbreitung von Onlinebanking-Trojanern, Spyware und Hintertüren über Drive-by-Infektionen beschäftigt. Aber wenn das eines Tages keinen Erfolg mehr verspricht, werden sie nach neuen Einnahmequellen suchen. Und dann könnten ein Browser-basiertes Botnet oder Angriffe auf Webclients durchaus lukrative Einnahmequellen werden. Und Webanwendungen damit zu einem beliebten Ziel.
Und hier noch die Links und Literaturverweise aus dem Artikel:
- [1] Carsten Eilers: "JavaScript in Angreiferhand"; windows.developer 3.2014
- [2] Carsten Eilers: "JavaScript und die Sicherheit"; windows.developer 12.2014
- [3] Browser Exploitation Framework BeEF
- [4] Carsten Eilers: "HTML5 Security - Gefährliche WebSockets"
- [5] Attack and Defense Labs: "Description ¦ JS-Recon, HTML5 based JavaScript Network Reconnaissance Tool"
- [6] JS-Recon - HTML5 based JavaScript Network Reconnaissance Tool
- [7] Sergey Shekyan, Vaagn Toukharian; Black Hat USA 2012: "Hacking with WebSockets"
- [8] Sergey Shekyan, Qualys Security Labs Blog: "The Tiny Mighty Waldo"
- [9] Jussi-Pekka Erkkilä: "WebSocket Security Analysis" (PDF)
- [10] Jussi-Pekka Erkkilä: "Compromising HTML5 WebSockets with an XSS vulnerability"
- [11] Feross Aboukhadijeh: "Using the HTML5 Fullscreen API for Phishing Attacks"
- [12] Feross Aboukhadijeh: "Introducing the HTML5 Hard Disk Filler™ API"
- [13] Feross Aboukhadijeh: "Fill up your hard disk with just a single click - using HTML5 localStorage!"
- [14] feross/filldisk.js auf GitHub
- [15] Keaton Mowery, Hovav Shacham: "Pixel Perfect: Fingerprinting Canvas in HTML5"
- [16] Gunes Acar, Christian Eubank, Steven Englehardt, Marc Juarez, Arvind Narayanan, Claudia Diaz: "The Web never forgets: Persistent tracking mechanisms in the wild"
- [17] Valentin Vasilyev: Valve/fingerprintjs auf GitHub
- [18] Valentin Vasilyev: "Anonymous Browser Fingerprinting"
- [19] Valve/fingerprintjs/fingerprint.js auf GitHub
- [20] BrowserLeaks.com: "HTML5 Canvas Fingerprinting"
- [21] SH5ARK
- [22] SH5ARK auf SourceForge.net
- [23] BeEF Live CD
- [24] Kali Linux
- [25] Ben Waugh; BeEF - The Browser Exploitation Framework Blog: "Kali (formerly Backtrack) Linux & BeEF"
- [26] Sathish Arthar; LINUX DIGEST: "Getting started with Browser Exploitation Framework (BeEF) in Kali Linux"
- [27] beefproject/beef auf GitHub: beef/modules
- [28] beefproject/beef Wiki auf GitHub: "Persistence"
- [29] beefproject/beef Wiki auf GitHub: Modul "Create Pop Under"
- [30] beefproject/beef Wiki auf GitHub: Modul: "Confirm Close Tab"
- [31] beefproject/beef/modules/persistence/iframe_above auf GitHub, Modul: "Create Foreground iFrame"
- [32] beefproject/beef/modules/persistence/man_in_the_browser/ auf GitHub, Modul: "Man In The Browser"
- [33] beefproject/beef/modules/misc/invisible_iframe auf GitHub, Modul: "Create Invisible Iframe"
- [34] beefproject/beef/modules/exploits/router auf GitHub, Module für Angriffe auf Router
- [35] beefproject/beef/modules/exploits/camera auf GitHub, Module für Angriffe auf Netzwerkkameras
- [36] beefproject/beef/modules/exploits/nas/dlink_sharecenter_cmd_exec auf GitHub, Modul: "D-Link ShareCenter Command Execution"
- [37] beefproject/beef/modules/exploits/nas/freenas_reverse_root_shell_csrf auf GitHub, Modul: "FreeNAS Reverse Root Shell CSRF"
- [38] beefproject/beef/modules/browser/hooked_domain/get_local_storage auf GitHub, Modul: "Get Local Storage"
- [39] beefproject/beef/modules/browser/hooked_domain/get_session_storage auf GitHub, Modul: "Get Session Storage"
- [40] beefproject/beef/modules/browser/webcam_html5 auf GitHub, Modul: "Webcam HTML5"
- [41] beefproject/beef/modules/host/get_internal_ip_webrtc auf GitHub, Modul: "Get Internal IP WebRTC"
- [42] beefproject/beef/modules/host/physical_location auf GitHub, Modul: "Get Geolocation"
- [43] beefproject/beef/modules/network/DOSer auf GitHub, Modul: "DOSer"
- [44] beefproject/beef/modules/network/cross_origin_scanner auf GitHub, Modul: "Cross-Origin Scanner"
- [45] beefproject/beef/modules/network/port_scanner auf GitHub, Modul: "Port Scanner"
- [46] beefproject/beef/modules/phonegap auf GitHub, Module für Angriffe auf und über das PhoneGap API
- [47] Carsten Eilers: "Alles, was Sie über ShellShock wissen müssen"
- [48] beefproject/beef/modules/exploits/shell_shock_scanner auf GitHub, Modul: "Shell Shock Scanner (Reverse Shell)"
- [49] beefproject/beef/modules/exploits/shell_shocked auf GitHub, Modul: "Shell Shock"
- [50] beefproject/beef/modules/social_engineering/hta_powershell auf GitHub, Modul: "HTA PowerShell"
- [51] Carsten Eilers; Ajax in Action 2008: "Sicherheit und der AJAX-Client" (PDF)
- [52] Carsten Eilers: Ajax in Action 2008
- [53] Carsten Eilers: "JavaScript Security - Sicherheit im Webbrowser", eBook, entwickler.press 2015, ISBN 978-3-86802-531-6
- [54] Wireless Attack Toolkit (WAT)
Trackbacks