diff --git a/src/pentesting-web/xss-cross-site-scripting/dom-invader.md b/src/pentesting-web/xss-cross-site-scripting/dom-invader.md
index 7b53873af..d903e7c0f 100644
--- a/src/pentesting-web/xss-cross-site-scripting/dom-invader.md
+++ b/src/pentesting-web/xss-cross-site-scripting/dom-invader.md
@@ -4,78 +4,125 @@
## DOM Invader
-DOM Invader to narzędzie przeglądarkowe zainstalowane w wbudowanej przeglądarce Burp. Pomaga w **wykrywaniu podatności DOM XSS** przy użyciu różnych źródeł i zlewów, w tym wiadomości internetowych i zanieczyszczenia prototypu. Narzędzie jest wstępnie zainstalowane jako rozszerzenie.
+DOM Invader to narzędzie przeglądarki zainstalowane w **wbudowanej przeglądarce Chromium Burp Suite**. Pomaga w **wykrywaniu DOM XSS i innych podatności po stronie klienta** (zanieczyszczenie prototypu, DOM clobbering itp.) poprzez automatyczne **instrumentowanie źródeł i miejsc docelowych JavaScriptu**. Rozszerzenie jest dostarczane z Burp i wymaga jedynie włączenia.
-DOM Invader integruje zakładkę w panelu DevTools przeglądarki, umożliwiającą:
+DOM Invader dodaje zakładkę do panelu DevTools przeglądarki, która pozwala na:
-1. **Identyfikację kontrolowanych zlewów** na stronie internetowej do testowania DOM XSS, dostarczając kontekst i szczegóły sanitizacji.
-2. **Rejestrowanie, edytowanie i ponowne wysyłanie wiadomości internetowych** wysyłanych za pomocą metody `postMessage()` do testowania DOM XSS. DOM Invader może również automatycznie wykrywać podatności przy użyciu specjalnie przygotowanych wiadomości internetowych.
-3. Wykrywanie **źródeł zanieczyszczenia prototypu po stronie klienta** i skanowanie kontrolowanych gadżetów wysyłanych do ryzykownych zlewów.
-4. Identyfikacja **podatności DOM clobbering**.
+1. **Identyfikację kontrolowanych miejsc docelowych** w czasie rzeczywistym, w tym kontekst (atrybut, HTML, URL, JS) i zastosowaną sanitizację.
+2. **Rejestrowanie, edytowanie i ponowne wysyłanie `postMessage()` wiadomości webowych**, lub pozwolenie rozszerzeniu na automatyczną mutację.
+3. **Wykrywanie źródeł zanieczyszczenia prototypu po stronie klienta i skanowanie łańcuchów gadget→sink**, generując PoC w locie.
+4. **Znajdowanie wektorów DOM clobbering** (np. kolizje `id` / `name`, które nadpisują zmienne globalne).
+5. **Dostosowywanie zachowania** za pomocą bogatego interfejsu ustawień (niestandardowy canary, automatyczne wstrzykiwanie, blokowanie przekierowań, listy źródeł/miejsc docelowych itp.).
-### Włącz to
+---
-W wbudowanej przeglądarce Burp przejdź do **rozszerzenia Burp** i włącz je:
+### 1. Włącz to
-Teraz odśwież stronę, a w **Dev Tools** znajdziesz **zakładkę DOM Invader:**
+1. Otwórz **Proxy ➜ Intercept ➜ Open Browser** (wbudowana przeglądarka Burp).
+2. Kliknij logo **Burp Suite** (w prawym górnym rogu). Jeśli jest ukryte, najpierw kliknij ikonę puzzli.
+3. W zakładce **DOM Invader**, włącz **Enable DOM Invader** i naciśnij **Reload**.
+4. Otwórz DevTools ( `F12` / Prawy przycisk ➜ Inspekcja ) i dokuj go. Pojawia się nowy panel **DOM Invader**.
-
+> Burp zapamiętuje stan dla każdego profilu. Wyłącz to w *Settings ➜ Tools ➜ Burp’s browser ➜ Store settings...* jeśli to konieczne.
-### Wstrzyknij Canary
+### 2. Wstrzyknij Canary
-Na poprzednim obrazku możesz zobaczyć **losową grupę znaków, to jest Canary**. Teraz powinieneś zacząć **wstrzykiwać** go w różnych częściach sieci (parametry, formularze, url...) i za każdym razem kliknąć wyszukiwanie. DOM Invader sprawdzi, czy **canary trafił do jakiegoś interesującego zlewu**, który mógłby być wykorzystany.
+**Canary** to losowy ciąg znaków (np. `xh9XKYlV`), który śledzi DOM Invader. Możesz:
-Ponadto opcje **Wstrzyknij parametry URL** i **Wstrzyknij formularze** automatycznie otworzą **nową zakładkę**, **wstrzykując** **canary** w każdy **parametr URL** i **formularz**, który znajdą.
+* **Skopiować** go i ręcznie wstrzyknąć w parametrach, formularzach, ramkach Web-Socket, wiadomościach webowych itp.
+* Użyć przycisków **Inject URL params / Inject forms**, aby otworzyć nową zakładkę, w której canary jest automatycznie dodawany do każdego klucza/wartości zapytania lub pola formularza.
+* Szukać **pustego canary**, aby ujawnić wszystkie miejsca docelowe niezależnie od możliwości wykorzystania (świetne do rozpoznania).
-### Wstrzyknij pusty Canary
+#### Niestandardowy canary (2025+)
-Jeśli chcesz tylko znaleźć potencjalne zlewy, które strona może mieć, nawet jeśli nie są one wykorzystywalne, możesz **wyszukiwać pusty canary**.
+Burp 2024.12 wprowadził **Ustawienia Canary** (logo Burp ➜ DOM Invader ➜ Canary). Możesz:
-### Wiadomości post
+* **Losować** lub ustawić **niestandardowy ciąg** (przydatne do testowania w wielu zakładkach lub gdy domyślna wartość pojawia się naturalnie na stronie).
+* **Skopiować** wartość do schowka.
+* Zmiany wymagają **Reload**.
-DOM Invader umożliwia testowanie DOM XSS przy użyciu wiadomości internetowych z takimi funkcjami jak:
+---
-1. **Rejestrowanie wiadomości internetowych** wysyłanych za pomocą `postMessage()`, podobnie jak rejestrowanie historii żądań/odpowiedzi HTTP w Burp Proxy.
-2. **Modyfikacja** i **ponowne wydanie** wiadomości internetowych w celu ręcznego testowania DOM XSS, podobnie jak funkcja Burp Repeater.
-3. **Automatyczna zmiana** i wysyłanie wiadomości internetowych w celu badania DOM XSS.
+### 3. Wiadomości webowe (`postMessage`)
-#### Szczegóły wiadomości
+Podzakładka **Messages** rejestruje każde wywołanie `window.postMessage()`, pokazując użycie `origin`, `source` i `data`.
-Szczegółowe informacje można zobaczyć o każdej wiadomości, klikając na nią, co obejmuje, czy JavaScript po stronie klienta uzyskuje dostęp do właściwości `origin`, `data` lub `source` wiadomości.
+• **Modyfikuj i wysyłaj ponownie**: kliknij dwukrotnie wiadomość, edytuj `data` i naciśnij **Send** (podobnie jak Burp Repeater).
-- **`origin`** : Jeśli **informacje o pochodzeniu wiadomości nie są sprawdzane**, możesz być w stanie wysyłać wiadomości między źródłami do obsługi zdarzeń **z dowolnej zewnętrznej domeny**. Ale jeśli jest to sprawdzane, nadal może być to niebezpieczne.
-- **`data`**: Tutaj wysyłany jest ładunek. Jeśli te dane nie są używane, zlew jest bezużyteczny.
-- **`source`**: Ocena, czy właściwość źródła, zazwyczaj odnosząca się do iframe, jest weryfikowana zamiast pochodzenia. Nawet jeśli to jest sprawdzane, nie zapewnia to, że weryfikacja nie może być obejrzana.
+• **Auto-fuzz**: włącz **Postmessage interception ➜ Auto-mutate** w ustawieniach, aby pozwolić DOM Invader na generowanie ładunków opartych na canary i odtwarzanie ich do handlera.
-#### Odpowiedz na wiadomość
+Podsumowanie znaczenia pól:
-1. Z widoku **Wiadomości** kliknij dowolną wiadomość, aby otworzyć okno szczegółów wiadomości.
-2. Edytuj pole **Dane** według potrzeb.
-3. Kliknij **Wyślij**.
+* **origin** – czy handler weryfikuje `event.origin`.
+* **data** – lokalizacja ładunku. Jeśli nieużywane, miejsce docelowe jest nieistotne.
+* **source** – weryfikacja odniesienia do iframe / okna; często słabsza niż ścisła weryfikacja pochodzenia.
-### Zanieczyszczenie prototypu
+---
-DOM Invader może również wyszukiwać **podatności Zanieczyszczenia Prototypu**. Najpierw musisz to włączyć:
+### 4. Zanieczyszczenie prototypu
-
+Włącz w **Settings ➜ Attack types ➜ Prototype pollution**.
-Następnie **wyszuka źródła**, które umożliwiają dodawanie dowolnych właściwości do **`Object.prototype`**.
+Przebieg pracy:
+
+1. **Przeglądaj** – DOM Invader oznacza źródła zanieczyszczenia (`__proto__`, `constructor`, `prototype`) znalezione w URL/zapytaniu/hash lub wiadomościach JSON.
+2. **Testuj** – kliknij *Test*, aby otworzyć zakładkę PoC, w której powinno istnieć `Object.prototype.testproperty`:
-Jeśli coś zostanie znalezione, pojawi się przycisk **Test**, aby **przetestować znalezione źródło**. Kliknij na niego, otworzy się nowa zakładka, utwórz obiekt w konsoli i sprawdź, czy `testproperty` istnieje:
```javascript
-let b = {}
-b.testproperty
+let obj = {};
+console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
```
-Gdy znajdziesz źródło, możesz **zeskanować pod kątem gadżetu**:
+3. **Skanuj pod kątem gadżetów** – DOM Invader brutalnie próbuje nazwy właściwości i śledzi, czy którakolwiek trafia do niebezpiecznych miejsc docelowych (np. `innerHTML`).
+4. **Eksploituj** – gdy znajdzie się łańcuch gadżet-miejsce docelowe, pojawia się przycisk *Exploit*, który łączy źródło + gadżet + miejsce docelowe, aby wywołać alert.
-1. Nowa karta jest otwierana przez DOM Invader, gdy klikniesz przycisk **Scan for gadgets**, który znajduje się obok każdego zidentyfikowanego źródła zanieczyszczenia prototypu w widoku **DOM**. Rozpoczyna się skanowanie w poszukiwaniu odpowiednich gadżetów.
-2. W międzyczasie w tej samej karcie powinien być otwarty zakładka **DOM Invader** w panelu DevTools. Po zakończeniu skanowania, wszelkie zlewy dostępne za pośrednictwem zidentyfikowanych gadżetów są wyświetlane w widoku **DOM**. Na przykład, właściwość gadżetu o nazwie `html` przekazywana do zlewu `innerHTML` jest pokazana w poniższym przykładzie.
+Zaawansowane ustawienia (ikona zębatki):
-## DOM clobbering
+* **Usuń CSP / X-Frame-Options**, aby utrzymać działające iframe podczas skanowania gadżetów.
+* **Skanuj techniki w oddzielnych ramach**, aby uniknąć zakłóceń między `__proto__` a `constructor`.
+* **Wyłącz techniki** indywidualnie dla delikatnych aplikacji.
-Na poprzednim obrazku widać, że skanowanie pod kątem zanieczyszczenia DOM można włączyć. Po włączeniu **DOM Invader zacznie szukać luk w zanieczyszczeniu DOM**.
+---
+
+### 5. DOM Clobbering
+
+Włącz **Attack types ➜ DOM clobbering**. DOM Invader monitoruje dynamicznie tworzone elementy, których atrybuty `id`/`name` kolidują z zmiennymi globalnymi lub obiektami formularzy (`` → nadpisuje `window.location`). Wpis jest tworzony za każdym razem, gdy kontrolowany przez użytkownika markup prowadzi do zastąpienia zmiennej.
+
+---
+
+## 6. Przegląd ustawień (2025)
+
+DOM Invader jest teraz podzielony na kategorie **Main / Attack Types / Misc / Canary**.
+
+1. **Main**
+* **Enable DOM Invader** – globalny przełącznik.
+* **Postmessage interception** – włącz/wyłącz rejestrowanie wiadomości; podprzełączniki do automatycznej mutacji.
+* **Custom Sources/Sinks** – *ikona zębatki* ➜ włącz/wyłącz konkretne miejsca docelowe (np. `eval`, `setAttribute`), które mogą uszkodzić aplikację.
+
+2. **Attack Types**
+* **Prototype pollution** (z ustawieniami dla każdej techniki).
+* **DOM clobbering**.
+
+3. **Misc**
+* **Redirect prevention** – blokuj przekierowania po stronie klienta, aby lista miejsc docelowych nie została utracona.
+* **Breakpoint before redirect** – wstrzymaj JS tuż przed przekierowaniem, aby zbadać stos wywołań.
+* **Inject canary into all sources** – automatycznie wstrzykuj canary wszędzie; konfigurowalna lista dozwolonych źródeł/parametrów.
+
+4. **Canary**
+* Wyświetl / losuj / ustaw niestandardowy canary; skopiuj do schowka. Zmiany wymagają ponownego załadowania przeglądarki.
+
+---
+
+### 7. Wskazówki i dobre praktyki
+
+* **Używaj wyraźnego canary** – unikaj powszechnych ciągów, takich jak `test`, w przeciwnym razie mogą wystąpić fałszywe pozytywy.
+* **Tymczasowo wyłącz ciężkie miejsca docelowe** (`eval`, `innerHTML`), jeśli psują funkcjonalność strony podczas nawigacji.
+* **Łącz z Burp Repeater i Proxy** – powtórz żądanie/odpowiedź przeglądarki, które spowodowało podatny stan i stwórz ostateczne adresy URL exploitu.
+* **Pamiętaj o zakresie ramki** – źródła/miejsca docelowe są wyświetlane w kontekście przeglądania; podatności wewnątrz iframe mogą wymagać ręcznej uwagi.
+* **Eksportuj dowody** – kliknij prawym przyciskiem na panelu DOM Invader ➜ *Zapisz zrzut ekranu*, aby dołączyć do raportów.
+
+---
## References
@@ -85,5 +132,7 @@ Na poprzednim obrazku widać, że skanowanie pod kątem zanieczyszczenia DOM mo
- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages](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/prototype-pollution)
- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering](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/canary)
+- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc)
{{#include ../../banners/hacktricks-training.md}}