# Dangling Markup - HTML scriptless injection
{{#include ../../banners/hacktricks-training.md}}
## Resume
Diese Technik kann verwendet werden, um Informationen von einem Benutzer zu extrahieren, wenn eine **HTML-Injection gefunden wird**. Dies ist sehr nützlich, wenn Sie **keinen Weg finden, um eine** [**XSS** ](../xss-cross-site-scripting/index.html) zu exploiten, aber Sie **einige HTML-Tags injizieren können**.\
Es ist auch nützlich, wenn ein **Geheimnis im Klartext** im HTML gespeichert ist und Sie es **exfiltrieren** möchten, oder wenn Sie eine Skriptausführung irreführen möchten.
Mehrere hier kommentierte Techniken können verwendet werden, um einige [**Content Security Policy**](../content-security-policy-csp-bypass/index.html) zu umgehen, indem Informationen auf unerwartete Weise exfiltriert werden (HTML-Tags, CSS, HTTP-Meta-Tags, Formulare, Basis...).
## Main Applications
### Stealing clear text secrets
Wenn Sie `test
```
### Formulare stehlen
```html
```
Dann werden die Formulare, die Daten an den Pfad senden (wie `
```
### Stehlen von Klartextgeheimnissen über noscript
`` ist ein Tag, dessen Inhalt interpretiert wird, wenn der Browser JavaScript nicht unterstützt (Sie können JavaScript in Chrome unter [chrome://settings/content/javascript](chrome://settings/content/javascript) aktivieren/deaktivieren).
Eine Möglichkeit, den Inhalt der Webseite vom Punkt der Injektion bis zum Ende auf eine von einem Angreifer kontrollierte Seite zu exfiltrieren, besteht darin, dies einzufügen:
```html
```
### Umgehen von CSP mit Benutzerinteraktion
Aus dieser [portswiggers research](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup) können Sie lernen, dass selbst aus den **strengsten CSP-Umgebungen** Sie immer noch **Daten exfiltrieren** können, wenn Sie etwas **Benutzerinteraktion** haben. In diesem Fall werden wir das Payload verwenden:
```html
You must click me
```
### Irreführender Skript-Workflow 1 - HTML-Namespace-Angriff
Fügen Sie ein neues Tag mit einer ID innerhalb des HTML ein, das das nächste überschreibt und mit einem Wert, der den Fluss eines Skripts beeinflusst. In diesem Beispiel wählen Sie aus, mit wem Informationen geteilt werden:
```html
← Injected markup ...
Share this status update with: ← Legitimate optional element of a dialog
... function submit_status_update() { ... request.share_with =
document.getElementById('share_with').value; ... }
```
### Irreführender Skript-Workflow 2 - Skript-Namensraum-Angriff
Erstellen Sie Variablen innerhalb des JavaScript-Namensraums, indem Sie HTML-Tags einfügen. Dann wird diese Variable den Ablauf der Anwendung beeinflussen:
```html
← Injected markup ... // Legitimate application code
follows function retrieve_acls() { ... if (response.access_mode == AM_PUBLIC) ←
The subsequent assignment fails in IE is_public = true; else is_public = false;
} function submit_new_acls() { ... if (is_public) request.access_mode =
AM_PUBLIC; ← Condition always evaluates to true ... }
```
### Missbrauch von JSONP
Wenn Sie eine JSONP-Schnittstelle finden, könnten Sie in der Lage sein, eine beliebige Funktion mit beliebigen Daten aufzurufen:
```html
```
### Iframe-Missbrauch
Ein Kinddokument hat die Fähigkeit, die `location`-Eigenschaft seines Elternteils zu sehen und zu ändern, selbst in Cross-Origin-Situationen. Dies ermöglicht das Einbetten eines Skripts in ein **iframe**, das den Client auf eine beliebige Seite umleiten kann:
```html
```
Dies kann mit etwas wie `sandbox=' allow-scripts allow-top-navigation'` gemildert werden.
Ein iframe kann auch missbraucht werden, um sensible Informationen von einer anderen Seite **unter Verwendung des iframe name Attributs** zu leaken. Dies liegt daran, dass Sie ein iframe erstellen können, das sich selbst iframe, indem es die HTML-Injection ausnutzt, die **sensible Informationen im iframe name Attribut erscheinen lässt** und dann diesen Namen vom ursprünglichen iframe aus zugreifen und leaken kann.
```html
```
Für weitere Informationen siehe [https://portswigger.net/research/bypassing-csp-with-dangling-iframes](https://portswigger.net/research/bypassing-csp-with-dangling-iframes)
### \` oder eine Weiterleitung durchzuführen (in 5s in diesem Fall): ``
Dies kann mit einer **CSP** bezüglich **http-equiv** ( `Content-Security-Policy: default-src 'self';`, oder `Content-Security-Policy: http-equiv 'self';`)
### Neuer \