mikrocontroller.net

Forum: Offtopic Java u. Browser kastrieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mittlerweile gibt es einige aufwändigere Applikationen (RIAs) und sogar 
x86-Emulatoren in Java und jede Menge Spielerein diesbezüglich auf 
Webseiten im Browser.

Jede Webseite mit Java die man besucht KANN einen 'Tunnel' oder Gateway 
ins eigene Heimnetz für den Webseiten-Betreiber oder Server 
bereitstellen....
let socket = new WebSocket("http://localhost/");
           
let socket = new WebSocket("http://fritz.box/internet/internet_settings.lua");

Beispielsweise konnte eine Webseite mein Heimnetz abscannen (Portrange) 
und aktive Nodes anzeigen, oder die AVM-Seite feststellen welchen 
FritzBox-Type (7490) ich besitze. Jede Menge Heimgeräte, vor allem weil 
man sie ja "Zuhaue im Heimnetz" ungeschützt(er) lassen kann (so dachte 
ich), finde ich von solchen Aktionen bedroht, das hatte ich -fixiert auf 
die WAN-Hardware-Firewall- noch gar nicht wirklich bedacht! Jeder 
Client, auch das Handy kann da Gateway werden. Gewisse "Aktionen" gehen 
auch über Seitenaufrufe hinweg, und laufen dann einfach (für einen 
längeren Zeitraum) weiter "durch". Jeder Seitencode und Werbebanner 
"darf" das.

Ich weiß nicht, wie weit sich mit Browser und Java "Pakete" manuell 
erzeugen lassen, sodass 'jeder' neben HTTP auch FTP oder gar SNMP u. SMB 
etc. im Heimnetz 'bruteforcen' könnte. Und dann ist es bis zu einem 
"richtigen" VPN-Tunnel auch nicht mehr weit.

Das ist eine heftige Lücke, sobald das "Feedback" wieder irgendwo per 
Java Ajax Timer etc hochgeladen wird.

Kann ich "Cross-Content" Aktionen von externen Webseiten in das Heimnetz 
vom Browser oder Java irgendwie verhindern? Beispielsweise so, dass das 
FritzBox-Java-Gui trotzdem noch im Browser funktioniert!? Nur eben die 
"Fremd-Domains" der besuchten Seite erst mal ausgeschlossen werden? 
Zumindest meine Heim-Domain? Als "Kastrierter Browser" kann mich das 
dann nicht mehr so leicht und schnell fic**n.

"Firefox-ESR" in
Debian 10
Android
und FreeBsd

Gruß, tsx.

: Bearbeitet durch User
Autor: Mario M. (thelonging)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim S. schrieb:
> Jede Webseite mit Java die man besucht KANN einen 'Tunnel' oder Gateway
> ins eigene Heimnetz für den Webseiten-Betreiber oder Server
> bereitstellen....

Wie kommst Du darauf?
"Java-Applets dürfen nur zu dem Rechner, von dem sie geladen worden 
sind, Netzwerkverbindungen herstellen."

https://www.bsi.bund.de/DE/Themen/StandardsKriterien/ISi-Reihe/ISi-Web-Server/aktive_inhalte/definitionen/definitionen_java_node.html

Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario M. schrieb:
> Java-Applets dürfen nur zu dem Rechner, von dem sie geladen worden
> sind, Netzwerkverbindungen herstellen."

Ja eben, das dachte ich auch!
Und sorry: Javascript(?) meinte ich damit hauptsächlich! Also das, was 
bei "ganz normalen" Webseiten -wie hier- läuft. (Nicht mehr die alten 
Applets)

OT: Bei Flash /im Flashplayer war es so.
Es musste von allen beteiligten Servern erlaubt werden - ähnlich wie bei 
robots.txt. Da konnte man nicht einfach ins Heimnetz!

Aber das hier ist ja ein "Free-Runner". Praktisch alle Webseiten laden 
ihren Content irgendwo anders her. Ist also normal? Ich würde es gerne 
Einschränken!

: Bearbeitet durch User
Autor: Joggel E. (jetztnicht)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zB NoScript als firefox add-on

Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joggel E. schrieb:
> zB NoScript als firefox add-on

Es war schon irgendwo klar, das das wieder kommt...
Und es ist ja schon drauf. Damit ist gleich "alles" still gelegt. Das 
"restliche" oder andere Scripts der Seite oder des Servers sollen aber 
ggf noch weiter laufen können!
Trotzdem Danke. ;-)

So ein Dialog oder eine Meldung wie beim "Passwort-Speichern" wäre 
super:
http://google.de möchte auf ihr Netzwerk (192.168.178.1:80) zugreifen. Erlauben? 
[ ] Ja  [x] Nein
Dann kann man in Zukunft immer gleich einen Bogen um solche Sites 
machen.

Ich würde diesen Fall (externe Webseite-> internes Heimnetz) gerne immer 
unterbinden u. verbieten. Auch für die Seiten wo man Script im Blocker 
in der Regel zulassen muss - eben die RIAs usw.

Hat da jemand eine Idee?

: Bearbeitet durch User
Autor: vn n. (wefwef_s)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mario M. schrieb:
> Wie kommst Du darauf?
> "Java-Applets dürfen nur zu dem Rechner, von dem sie geladen worden
> sind, Netzwerkverbindungen herstellen."
>
> 
https://www.bsi.bund.de/DE/Themen/StandardsKriterien/ISi-Reihe/ISi-Web-Server/aktive_inhalte/definitionen/definitionen_java_node.html

Er kann Java und JavaScript nicht auseinander halte.

@TS:
Kannst du belegen, dass dieser Angriff funktioniert? Gibt es ein PoC 
dafür? Ich halte es für eher unwahrscheinlich, dass das, was du 
beschreibst, nicht irgendwie unterbunden wird.
Andernfalls könntest du natürlich ein PoC veröffentlchen und der Ruhm 
wär dir sicher.

Autor: vn n. (wefwef_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim S. schrieb:
> So ein Dialog oder eine Meldung wie beim "Passwort-Speichern" wäre
> super:http://google.de möchte auf ihr Netzwerk (192.168.178.1:80)
> zugreifen. Erlauben?
> [ ] Ja  [x] NeinDann kann man in Zukunft immer gleich einen Bogen um
> solche Sites
> machen.
>
> Ich würde diesen Fall (externe Webseite-> internes Heimnetz) gerne immer
> unterbinden u. verbieten.

Gibts es Anhaltspunkte, dass dies möglich wäre?

Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Javascript ausschalten ist wohl die einzige "Lösung" !

Mittlerweile bin auf Debian und weiß es noch nicht 100%ig.
Habe auch zur Vorsicht gefragt (und passiv mitgeteilt).
Sorry das vorhin war noch auf Windows 7 mit Firefox wo das 
PrivatNetz-durchsuchen definitiv möglich war.
Which browsers and operating systems are affected?

I've tested this and found it to work on the following systems:

    Firefox 37.0 on Arch Linux
    Chromium 41.0.2272.118 on Arch Linux
    Opera 28.0 on Arch Linux
    Firefox 37.0 on Windows XP
    Google Chrome 41.0.2272.118 on Windows XP
    Internet Explorer 8.0.6001.18702 on Windows XP
    Opera 27.0.1689.66 on Windows XP
    Internet Explorer 11.0.9600.17501 on Windows 7
    Firefox on Android 5.1
    Chrome on Android 5.1

https://defuse.ca/in-browser-port-scanning.htm

: Bearbeitet durch User
Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer ne FritzBox hat:
http://avm.de/nc/service/zack-der-speedtest-fuer-ihre-breitbandverbindung/

Scheinbar ließt die Seite Fritz-Modell und, OS-Version sowie die 
Ausgehandelte Bandbreite vom Modem über Javascript vom Gerät im Heimnetz 
raus. Die Werte stehen direkt auf der Seite.
Und: Wie soll das auch sonnst funktionieren? Wenn der Server (avm.de) 
sich das übers WAN auslesen traut wäre das (ein anderes Thema, aber) ja 
noch heftiger! /Auch heftig.
Ihre FRITZ!Box
FRITZ!OS
Aktuelle Datenrate

Und ja, das macht es auch auf Debian10 Firefox.
Gruß

: Bearbeitet durch User
Autor: Mario M. (thelonging)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim S. schrieb:
> https://defuse.ca/in-browser-port-scanning

Das Javascript hat aber keinen Zugriff auf das Netzwerk. Es veranlasst 
den Browser etwas zu laden und an der Dauer des Ladevorganges kann es 
erkennen, ob dort etwas ist. Es hat keinen Zugriff auf die geladenen 
Inhalte.
Für die Seite mit der Fritzbox gilt das gleiche.

: Bearbeitet durch User
Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ist es "normal", dass ein Speedtest verraten kann wie schnell dein 
Modem Synchronisiert ist, wie das Modell samt Firmwareversion heißt - 
und das alles bevor überhaupt "Datentraffic zum Speed-Messen" angefallen 
ist!?
Nee das wird schon "irgendwie" ausgelesen! Und erst wesentlich später 
(nach dem Test) erhält man die "realen Speed-Werte". Das kenne ich auch 
wirklich nur von dieser Seite so. Hast du das selber versucht?

Mario M. schrieb:
> und an der Dauer des Ladevorganges kann es
> erkennen, ob dort etwas ist. Es hat keinen Zugriff auf die geladenen
> Inhalte.

Ich kenne die Scripte die so sind und aufs "Timeout" reagieren. Naja man 
kann im Falle einer vorhandenen Antwort eben schon das XML oder JSON bzw 
ein ByteArray(?) per Javascript am Browser/Client auswerten u. 
weiterverarbeiten sowie anhand dessen Werte z.B. Bilder und neue Texte 
darstellen und Quer Up- u. Downloaden - auch mit Timern und Events im 
Hintergrund, ohne eine Aktion selber machen zu müssen. So funktioniert 
der Ajax-Kram und so läd z.B. GoogleAds ein neues Bild in den Banner 
rein. Ganz genaues weiß ich aber auch nicht.

Was nicht geht ist, dass es automatisch diese "Login-Phase" 
überschreitet - Und dann mit Benutzerauthentifizierung "arbeitet" - z.B. 
wenn man sein Passwort für eine Seite oder Gerät (oder 'htaccess' mäßig) 
gespeichert hat! Das "darf" der Browser nicht.

 Eine Software-Firewall an den Clients, so dass der Browser gar nicht in 
private Netze darf, ist zwar möglich aber für mich leider gar nicht 
praktisch. Und das auf jeder Plattform einrichten usw neee. So ein 
Dialog bzw. Meldung beim Privatnetz-Zugriff aus fremden Seiten kam mir 
daher als erstes in den Sinn. Irgendwo fehlt mir dieses "Feature" im 
Browser:

-> Den "Cross-Content" von lokaler bzw. privater Domain o. Netz-Bereich 
erst manuell zulassen und erlauben!
http://google.de möchte auf ihr Netzwerk (192.168.178.1:80) zugreifen. Erlauben? 
[ ] Ja  [x] Nein
Und einen 'Haken' für "Seite immer erlauben". Sieht doch richtig schön 
abschreckend aus.

: Bearbeitet durch User
Autor: Mario M. (thelonging)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Da wird gar nichts ausgelesen. Es werden Informationen, die die Fritzbox 
unter "fritz.box" sowieso loginfrei zur Verfügung stellt, vom Browser 
eingebunden. Die Javascripte kommen aber an diese Daten nicht heran. Im 
Gegensatz zu den Werten die der Browser liefert, wie 
Bildschirmauflösung, Browserversion und Betriebssystem. Da sehe ich die 
einzige Lücke im System, weil diese Daten an die Webseite zum Tracking 
weitergegeben werden können.

Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario M. schrieb:
> Da wird gar nichts ausgelesen. Es werden Informationen, die die Fritzbox
> unter "fritz.box" sowieso loginfrei zur Verfügung stellt, vom Browser
> eingebunden.

Bist du dir da ganz sicher??

http://fritz.box:49000/igddesc.xml        (OK)
http://fritz.box:49000/jason_boxinfo.xml  (N/A, timeout)

x = [...].responseXML.getElementsByTagName("BoxInfo");

> Die Javascripte kommen aber an diese Daten nicht heran.

Da läuft ein kleiner Script-Batzen auf der Seite. Der Browser und 
Javascript holen sich die "Happen" aus dem XML - einzeln in Variablen 
heraus. Die Stammen aus dem Heimnetz.

> Im Gegensatz zu den Werten die der Browser liefert, wie
> Bildschirmauflösung, Browserversion und Betriebssystem.

Das sendet der Browser bei jedem HTTP Request. Das kann ich aber 
komplett selbst beeinflussen, und ich bin froh, eine entsprechend 
angepasste Seite für mein System zu erhalten. Und ausserdem: Schön das 
noch jemand weiß, dass ich auf Linux ohne FullHD im Firefox surfe. Es 
dient, damit ich es selber nicht vergesse!!? Aber das sind Daten mit 
denen kann eigentlich überhaupt niemand etwas anfangen. Würdest du dafür 
Zahlen wollen oder Geld ausgeben um zu erfahren was denn nun bei den 
paar Werten "heraus gekommen" ist? Ist das so geheim? Gääähn. Im 
Vergleich zu den Cross-Domain-Möglichkeiten ins Privatnetz ist das 
einfach nur ein Witz und der ist schon soooo UHRALT!

> Da sehe ich die
> einzige Lücke im System, weil diese Daten an die Webseite zum Tracking
> weitergegeben werden können.

Achso.

Mario M. schrieb:
> Da wird gar nichts ausgelesen. ...
> Die Javascripte kommen aber an diese Daten nicht heran.

Die Werte der FritzBox XML-Datei sind im Scriptverlauf in einzelnen 
Variablen festgehalten worden! Kann Javascript seine eigenen Daten wohl 
nicht verarbeiten?? Was willst du mir da erklähren? Wie meinst du das?

Das Script hat die Werte. Die werden auf der Webseite verarbeitet 
dargestellt - ja auch eingebunden - und am Schluss wird es sogar noch zu 
AVM übermittelt. Nichts anderes hatte mich beunruhigt. Denn das 
"Verfahren" kann man ja praktisch immer im Hintergrund ausführen!

Jemand könnte z.B. auch am XBMC/Kodi OSMC Webinterface herumschrauben, 
da es noch (Standardmässig) ohne Passwort und unverschlüsselt per HTTP 
errichbar ist. Oder die IP-Cams und das IoT-Zeuch - alles muss man 
double-Checken. [Und ein ISP-NAT Router mit Firewall wird immer 
überflüssiger...]

OK alles per Passwort dicht machen und Javascript ausschalten ist erst 
mal die einzige Lösung!

: Bearbeitet durch User
Autor: Mario M. (thelonging)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim S. schrieb:
> Da läuft ein kleiner Script-Batzen auf der Seite. Der Browser und
> Javascript holen sich die "Happen" aus dem XML - einzeln in Variablen
> heraus. Die Stammen aus dem Heimnetz.

Ok. Du hast Recht, das Script liest wirklich Daten direkt aus der 
Fritzbox. Das geht aber nur, weil die Fritzbox dem Browser explizit 
erlaubt, diese Daten weiterzugeben. Stichwort: CORS. Also ist es ein 
erwünschtes Verhalten und keine Sicherheitslücke.

Tim S. schrieb:
> Jemand könnte z.B. auch am XBMC/Kodi OSMC Webinterface herumschrauben,
> da es noch (Standardmässig) ohne Passwort und unverschlüsselt per HTTP
> errichbar ist. Oder die IP-Cams und das IoT-Zeuch - alles muss man
> double-Checken.

Nein, außer deren Programmierer machen auch so einen Frickelkram wie die 
AVM-Programmierer.

Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario M. schrieb:
> Stichwort: CORS. Also ist es ein
> erwünschtes Verhalten und keine Sicherheitslücke.

Okay das wusste ich vorher noch nicht.
Allgemein hat mich "diese Prozedur" etwas erschrocken!
'Einfach so' durch die privaten LANs der Clients laufen :-) LöL
Das ist anscheinend schon ca 23 Jahre so "geblockt" und definiert.
Durch CORS (und den Header) kann es dann also nicht jeder auslesen.
Danke für die Aufklärung!
Gruß tsx

Autor: Johnny B. (johnnyb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tim S. schrieb:
> Und ausserdem: Schön das
> noch jemand weiß, dass ich auf Linux ohne FullHD im Firefox surfe. Es
> dient, damit ich es selber nicht vergesse!!? Aber das sind Daten mit
> denen kann eigentlich überhaupt niemand etwas anfangen.

Falsch; mit diesen Daten vom Header lassen sich Benutzer zu einem sehr 
hohen Wahrscheinlichkeitsgrad wiedererkennen und zuordnen. Denn welche 
zwei Personen benutzen schon das exakt gleiche Betriebssystem, gleichen 
Browser, gleiche Browserversion, gleiche Bildschirmauflösung, etc.
Und das wird auch schon viele Jahre lang so verwendet.

Hier mehr Infos dazu:
https://www.chromium.org/Home/chromium-security/client-identification-mechanisms#TOC-Browser-level-fingerprints

Autor: Vlad T. (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze ublock im Expertenmodus.
Damit kann man sehr genau steuern, Woche Webseite von wo Inhalte laden 
darf und welche man Global aktiviert.

Ist natürlich wir noscript auch, teilweise relativ fummelig, 
herauszufinden, welche Sachen der aktuellen, neuen Seite freigeschaltet 
werden müssen, damit sie vernünftig funktioniert

Autor: Tim S. (freak_ts) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario M. schrieb:
> Es hat keinen Zugriff auf die geladenen
> Inhalte.

Darf eine externe Webseite ein Javascript von einem Gerät im Privatnetz 
"einbinden" (?), und dieses Script wiederum an dem Gerät "herumpfuschen" 
- von der externen Webseite gesteuert? Man kann ja mehrere Scripte auf 
der Seite "zusammenführen" - könnten die Scripts ihre "Variablen 
austauschen und sehen"?

Oder geht kein Cross-Domain Scripting!?
Muss das Script seine "Root-Domain" im Browser und Adresszeile bzw. CORS 
Header sehen?

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.