DOM Invader
Reading time: 6 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
DOM Invader
DOM Invader, Burp Suite'in yerleşik Chromium tarayıcısında kurulu bir tarayıcı aracıdır. DOM XSS ve diğer istemci tarafı güvenlik açıklarını (prototip kirlenmesi, DOM çakışması vb.) otomatik olarak JavaScript kaynaklarını ve hedeflerini enstrümante ederek tespit etmeye yardımcı olur. Eklenti, Burp ile birlikte gelir ve yalnızca etkinleştirilmesi gerekir.
DOM Invader, tarayıcının Geliştirici Araçları paneline bir sekme ekler ve bu sekme ile şunları yapabilirsiniz:
- Gerçek zamanlı olarak kontrol edilebilir hedefleri tanımlayın; bağlam (özellik, HTML, URL, JS) ve uygulanan sanitizasyon dahil.
postMessage()
web-mesajlarını kaydedin, düzenleyin ve yeniden gönderin, veya eklentinin bunları otomatik olarak değiştirmesine izin verin.- İstemci tarafı prototip kirlenmesi kaynaklarını tespit edin ve gadget→sink zincirlerini tarayın, anında PoC'ler oluşturun.
- DOM çakışma vektörlerini bulun (örneğin, global değişkenleri geçersiz kılan
id
/name
çakışmaları). - Davranışı ince ayar yapın; zengin bir Ayarlar UI'si (özel kanarya, otomatik enjekte, yönlendirme engelleme, kaynak/hedef listeleri vb.) aracılığıyla.
1. Etkinleştir
.png)
- Proxy ➜ Intercept ➜ Open Browser (Burp’ın gömülü tarayıcısı) açın.
- Burp Suite logosuna (sağ üstte) tıklayın. Gizliyse, önce yapboz parçasına tıklayın.
- DOM Invader sekmesinde, Enable DOM Invader'ı AÇIK konuma getirin ve Reload'a basın.
- Geliştirici Araçları'nı açın (
F12
/ Sağ tıklayın ➜ İncele ) ve sabitleyin. Yeni bir DOM Invader paneli görünür.
Burp, durumu profil başına hatırlar. Gerekirse Ayarlar ➜ Araçlar ➜ Burp’ın tarayıcısı ➜ Ayarları sakla... altında devre dışı bırakın.
2. Bir Kanarya Enjekte Et
Bir kanarya, DOM Invader'ın takip ettiği rastgele bir işaretçi dizesidir (örneğin, xh9XKYlV
). Şunları yapabilirsiniz:
- Kopyalayın ve parametrelerde, formlarda, Web-Socket çerçevelerinde, web-mesajlarında vb. manuel olarak enjekte edin.
- Inject URL params / Inject forms butonlarını kullanarak, kanaryanın her sorgu anahtar/değerine veya form alanına otomatik olarak eklendiği yeni bir sekme açın.
- Boş bir kanarya arayın, böylece istismar edilebilirlikten bağımsız olarak tüm hedefleri ortaya çıkarın (keşif için harika).
Özel kanarya (2025+)
Burp 2024.12, Kanarya ayarlarını tanıttı (Burp logosu ➜ DOM Invader ➜ Kanarya). Şunları yapabilirsiniz:
- Rastgeleleştirin veya özel bir dize ayarlayın (çoklu sekme testi için veya varsayılan değer sayfada doğal olarak göründüğünde yararlıdır).
- Değeri panoya kopyalayın.
- Değişiklikler Reload gerektirir.
3. Web-mesajları (postMessage
)
Messages alt sekmesi, her window.postMessage()
çağrısını kaydeder ve origin
, source
ve data
kullanımını gösterir.
• Değiştir ve yeniden gönder: bir mesaja çift tıklayın, data
yı düzenleyin ve Gönder'e basın (Burp Repeater benzeri).
• Otomatik fuzz: ayarlarda Postmessage interception ➜ Auto-mutate'yi etkinleştirerek DOM Invader'ın kanarya tabanlı yükleri oluşturmasına ve bunları işleyiciye yeniden oynamasına izin verin.
Alan anlamı özeti:
- origin – işleyicinin
event.origin
'i doğrulayıp doğrulamadığı. - data – yük konumu. Kullanılmıyorsa, hedef önemsizdir.
- source – iframe / pencere referansı doğrulaması; genellikle katı köken kontrolünden daha zayıftır.
4. Prototip Kirlenmesi
Ayarlar ➜ Saldırı türleri ➜ Prototip kirlenmesi altında etkinleştirin.
İş akışı:
- Göz atın – DOM Invader, URL/sorgu/hash veya JSON web-mesajlarında bulunan kirlenme kaynaklarını (
__proto__
,constructor
,prototype
) işaretler. - Test edin – Test butonuna tıklayarak
Object.prototype.testproperty
'nin var olması gereken bir PoC sekmesi açın:
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
- Gadget'leri tarayın – DOM Invader, özellik adlarını brute force ile dener ve herhangi birinin tehlikeli hedeflere (örneğin,
innerHTML
) ulaşıp ulaşmadığını takip eder. - İstismar edin – bir gadget-hedef zinciri bulunduğunda, bir Exploit butonu görünür ve kaynak + gadget + hedefi zincirleyerek uyarıyı tetikler.
Gelişmiş ayarlar (dişli simgesi):
- CSP / X-Frame-Options'ı kaldırın; gadget taraması sırasında iframe'lerin çalışabilir kalmasını sağlamak için.
- Teknikleri ayrı çerçevelerde tarayın;
__proto__
ileconstructor
arasındaki etkileşimi önlemek için. - Teknikleri kırılgan uygulamalar için bireysel olarak devre dışı bırakın.
5. DOM Çakışması
Saldırı türleri ➜ DOM çakışması'nı açın. DOM Invader, id
/name
nitelikleri global değişkenlerle veya form nesneleriyle çakışan dinamik olarak oluşturulan öğeleri izler (<input name="location">
→ window.location
'ı geçersiz kılar). Kullanıcı kontrolündeki işaretlemenin değişken değiştirmesine yol açtığı her durumda bir giriş üretilir.
6. Ayarlar Genel Görünümü (2025)
DOM Invader artık Ana / Saldırı Türleri / Çeşitli / Kanarya kategorilerine ayrılmıştır.
- Ana
- DOM Invader'ı Etkinleştir – global anahtar.
- Postmessage interception – mesaj kaydını aç/kapat; otomatik mutasyon için alt anahtarlar.
- Özel Kaynaklar/Hedefler – dişli simgesi ➜ belirli hedefleri (örneğin,
eval
,setAttribute
) etkinleştirip/devre dışı bırakın; bu hedefler uygulamayı bozabilir.
- Saldırı Türleri
- Prototip kirlenmesi (teknik başına ayarlarla).
- DOM çakışması.
- Çeşitli
- Yönlendirme önleme – istemci tarafı yönlendirmelerini engelleyin, böylece hedef listesi kaybolmaz.
- Yönlendirmeden önce kesme noktası – yönlendirmeden hemen önce JS'yi duraklatın, çağrı yığınını incelemek için.
- Tüm kaynaklara kanarya enjekte et – kanaryayı her yere otomatik olarak enjekte edin; yapılandırılabilir kaynak/parametre izin listesi.
- Kanarya
- Görüntüle / rastgeleleştir / özel kanarya ayarla; panoya kopyala. Değişiklikler tarayıcıyı yeniden yüklemeyi gerektirir.
7. İpuçları ve İyi Uygulamalar
- Ayrı bir kanarya kullanın –
test
gibi yaygın dizelerden kaçının, aksi takdirde yanlış pozitifler oluşur. - Ağır hedefleri (
eval
,innerHTML
) geçici olarak devre dışı bırakın, aksi takdirde sayfa işlevselliği bozulabilir. - Burp Repeater & Proxy ile birleştirin – savunmasız bir durumu üreten tarayıcı isteği/yanıtını çoğaltın ve son istismar URL'lerini oluşturun.
- Çerçeve kapsamını unutmayın – kaynaklar/hedefler, tarama bağlamına göre görüntülenir; iframe'ler içindeki güvenlik açıkları manuel odaklanma gerektirebilir.
- Kanıtları dışa aktarın – DOM Invader paneline sağ tıklayın ➜ Ekran görüntüsünü kaydet raporlara eklemek için.
Referanslar
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.