Clickjacking
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Verwende Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Erhalte heute Zugang:
Bei einem Clickjacking-Angriff wird ein Benutzer getäuscht, indem er auf ein Element auf einer Webseite klickt, das entweder unsichtbar oder als ein anderes Element getarnt ist. Diese Manipulation kann zu unbeabsichtigten Konsequenzen für den Benutzer führen, wie z.B. dem Herunterladen von Malware, der Weiterleitung zu bösartigen Webseiten, der Bereitstellung von Anmeldedaten oder sensiblen Informationen, Geldtransfers oder dem Online-Kauf von Produkten.
Manchmal ist es möglich, den Wert von Feldern eines Formulars mit GET-Parametern beim Laden einer Seite zu füllen. Ein Angreifer kann dieses Verhalten ausnutzen, um ein Formular mit beliebigen Daten auszufüllen und die Clickjacking-Nutzlast zu senden, damit der Benutzer die Schaltfläche "Absenden" drückt.
Wenn du möchtest, dass der Benutzer ein Formular ausfüllt, aber ihn nicht direkt bitten möchtest, bestimmte Informationen (wie die E-Mail-Adresse oder ein spezifisches Passwort, das du kennst) zu schreiben, kannst du ihn einfach bitten, etwas zu Drag&Drop, das deine kontrollierten Daten eingibt, wie in diesem Beispiel.
Wenn Sie einen XSS-Angriff identifiziert haben, der erfordert, dass ein Benutzer auf ein Element klickt, um den XSS auszulösen und die Seite anfällig für Clickjacking ist, könnten Sie dies ausnutzen, um den Benutzer zu täuschen, damit er auf die Schaltfläche/den Link klickt. Beispiel: &#xNAN;Y Sie haben einen self XSS in einigen privaten Details des Kontos gefunden (Details, die nur Sie festlegen und lesen können). Die Seite mit dem Formular, um diese Details festzulegen, ist anfällig für Clickjacking und Sie können das Formular mit den GET-Parametern vorbefüllen. __Ein Angreifer könnte einen Clickjacking-Angriff auf diese Seite vorbereiten, indem er das Formular mit der XSS-Nutzlast vorbefüllt und den Benutzer dazu bringt, das Formular abzusenden. Wenn das Formular abgesendet wird und die Werte geändert werden, wird der Benutzer den XSS ausführen.
Skripte, die auf der Client-Seite ausgeführt werden, können Maßnahmen ergreifen, um Clickjacking zu verhindern:
Sicherstellen, dass das Anwendungsfenster das Haupt- oder oberste Fenster ist.
Alle Frames sichtbar machen.
Klicks auf unsichtbare Frames verhindern.
Benutzer über potenzielle Clickjacking-Versuche informieren und warnen.
Diese Frame-Busting-Skripte können jedoch umgangen werden:
Sicherheitseinstellungen der Browser: Einige Browser könnten diese Skripte basierend auf ihren Sicherheitseinstellungen oder mangelnder JavaScript-Unterstützung blockieren.
HTML5 iframe sandbox
Attribut: Ein Angreifer kann Frame-Buster-Skripte neutralisieren, indem er das sandbox
-Attribut mit den Werten allow-forms
oder allow-scripts
ohne allow-top-navigation
festlegt. Dies verhindert, dass das iframe überprüft, ob es das oberste Fenster ist, z.B.,
Die allow-forms
und allow-scripts
Werte ermöglichen Aktionen innerhalb des iframes, während die Navigation auf der obersten Ebene deaktiviert wird. Um die beabsichtigte Funktionalität der angegriffenen Seite sicherzustellen, könnten zusätzliche Berechtigungen wie allow-same-origin
und allow-modals
erforderlich sein, abhängig von der Art des Angriffs. Nachrichten in der Browser-Konsole können Hinweise darauf geben, welche Berechtigungen erlaubt werden sollen.
Der X-Frame-Options
HTTP-Antwortheader informiert Browser über die Legitimität der Darstellung einer Seite in einem <frame>
oder <iframe>
, um Clickjacking zu verhindern:
X-Frame-Options: deny
- Keine Domain kann den Inhalt einrahmen.
X-Frame-Options: sameorigin
- Nur die aktuelle Seite kann den Inhalt einrahmen.
X-Frame-Options: allow-from https://trusted.com
- Nur die angegebene 'uri' kann die Seite einrahmen.
Beachten Sie die Einschränkungen: Wenn der Browser diese Direktive nicht unterstützt, funktioniert sie möglicherweise nicht. Einige Browser bevorzugen die CSP frame-ancestors Direktive.
Die frame-ancestors
Direktive in CSP ist die empfohlene Methode zum Schutz vor Clickjacking:
frame-ancestors 'none'
- Ähnlich wie X-Frame-Options: deny
.
frame-ancestors 'self'
- Ähnlich wie X-Frame-Options: sameorigin
.
frame-ancestors trusted.com
- Ähnlich wie X-Frame-Options: allow-from
.
Zum Beispiel erlaubt die folgende CSP nur das Einrahmen von derselben Domain:
Content-Security-Policy: frame-ancestors 'self';
Weitere Details und komplexe Beispiele finden Sie in der frame-ancestors CSP-Dokumentation und in der CSP frame-ancestors Dokumentation von Mozilla.
child-src
und frame-src
Die Content Security Policy (CSP) ist eine Sicherheitsmaßnahme, die hilft, Clickjacking und andere Code-Injektionsangriffe zu verhindern, indem sie angibt, welche Quellen der Browser zulassen soll, um Inhalte zu laden.
frame-src
DirektiveDefiniert gültige Quellen für Frames.
Ist spezifischer als die default-src
Direktive.
Diese Richtlinie erlaubt Frames von derselben Herkunft (self) und https://trusted-website.com.
child-src
DirektiveEingeführt in CSP Level 2, um gültige Quellen für Web-Worker und Frames festzulegen.
Dient als Fallback für frame-src und worker-src.
Diese Richtlinie erlaubt Frames und Worker von derselben Herkunft (self) und https://trusted-website.com.
Nutzungsnotizen:
Abwertung: child-src wird zugunsten von frame-src und worker-src schrittweise eingestellt.
Fallback-Verhalten: Wenn frame-src fehlt, wird child-src als Fallback für Frames verwendet. Wenn beide fehlen, wird default-src verwendet.
Strikte Quelldefinition: Nur vertrauenswürdige Quellen in den Direktiven einbeziehen, um Ausnutzung zu verhindern.
Obwohl nicht völlig narrensicher, können auf JavaScript basierende Frame-Busting-Skripte verwendet werden, um zu verhindern, dass eine Webseite in einem Frame angezeigt wird. Beispiel:
Token-Validierung: Verwenden Sie Anti-CSRF-Token in Webanwendungen, um sicherzustellen, dass zustandsverändernde Anfragen absichtlich vom Benutzer und nicht über eine Clickjacked-Seite vorgenommen werden.
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)