# Clickjacking
{{#include ../banners/hacktricks-training.md}}
## Was ist Clickjacking
Bei einem Clickjacking-Angriff wird ein **Benutzer** **getäuscht**, sodass 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.
### Vorab ausgefüllte Formulare
Manchmal ist es möglich, die **Werte 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.
### Formular mit Drag\&Drop ausfüllen
Wenn Sie möchten, dass der Benutzer ein **Formular ausfüllt**, ihn jedoch nicht direkt bitten möchten, bestimmte Informationen (wie die E-Mail-Adresse oder ein spezifisches Passwort, das Sie kennen) einzugeben, können Sie ihn einfach bitten, etwas zu **Drag\&Drop** zu machen, das Ihre kontrollierten Daten eingibt, wie in [**diesem Beispiel**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Grundlegende Nutzlast
```css
Click me
```
### Multistep Payload
```css
Click me first
Click me next
```
### Drag\&Drop + Click-Payload
```css
.
1. Click and press delete button
3.Click me
2.DRAG ME TO THE RED BOX
```
### XSS + Clickjacking
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:\
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 zu **übermitteln**. Wenn das **Formular übermittelt wird** und die Werte geändert werden, wird der **Benutzer den XSS ausführen**.
### DoubleClickjacking
Zunächst [in diesem Beitrag erklärt](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html), würde diese Technik das Opfer auffordern, doppelt auf eine Schaltfläche einer benutzerdefinierten Seite zu klicken, die an einem bestimmten Ort platziert ist, und die Zeitunterschiede zwischen den mousedown- und onclick-Ereignissen zu nutzen, um die Opferseite während des Doppelklicks zu laden, sodass der **Opfer tatsächlich auf eine legitime Schaltfläche auf der Opferseite klickt**.
Ein Beispiel ist in diesem Video zu sehen: [https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
Ein Codebeispiel finden Sie auf [dieser Seite](https://www.paulosyibelo.com/2024/12/doubleclickjacking-what.html).
> [!WARNING]
> Diese Technik ermöglicht es, den Benutzer zu täuschen, damit er an 1 Stelle auf der Opferseite klickt und dabei jeden Schutz gegen Clickjacking umgeht. Der Angreifer muss **sensible Aktionen finden, die mit nur 1 Klick durchgeführt werden können, wie OAuth-Aufforderungen zur Annahme von Berechtigungen**.
## Strategien zur Minderung von Clickjacking
### Client-Seitige Abwehrmaßnahmen
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.,
```html
```
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.
### Serverseitige Abwehrmaßnahmen
#### X-Frame-Options
Der **`X-Frame-Options` HTTP-Antwortheader** informiert Browser über die Legitimität der Darstellung einer Seite in einem `` oder `