Wspomnieliśmy już o dwóch typach exploitów XSS : odbitym i przechowywanym.Wszystkie mają wspólną cechę, że niebezpieczny kod po wstawieniu zostanie wykonany po odpowiedzi serwera, co oznacza, że błąd leży po stronie serwera serwer serwer. Istnieje inny rodzaj wykorzystania XSS, który jest sprzeczny z tą funkcją. Złośliwy kod jest wykonywany natychmiast po stronie klienta, bez przechodzenia przez serwer, i jest znany jako XSS oparty na DOM lub XSS typu 0.
Przede wszystkim musimy wiedzieć, czym jest DOM?
DOM, skrót od Document Object Model, to standardowa forma W3C (http://www.w3.org/DOM/) zaproponowana do pobierania i manipulowania danymi dokumentów strukturalnych, takich jak HTML i XML. Model ten przedstawia dokumenty jako hierarchiczną strukturę drzewa. Wszystkie elementy w HTML i XML są uważane za węzeł.
DOM Based XSS to technika wykorzystania XSS oparta na zmianie struktury DOM dokumentu, w szczególności HTML.
Spójrzmy na konkretny przykład poniżej:
Witryna internetowa ma następujący adres URL strony rejestracyjnej:
example.com/register.php?message=Please fill in the form
Kiedy uzyskujemy do niego dostęp, widzimy bardzo normalny formularz:

Możesz łatwo wydedukować parametr komunikatu przekazywany do treści powiadomienia w formularzu, przyjrzyj się uważnie kodowi źródłowemu tego powiadomienia:
![Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie]()
Segment JavaScript odpowiedzialny jest za pobranie wartości z parametru Message i jego wydrukowanie. Dzięki takiemu luźnemu sprawdzaniu danych wejściowych całkowicie możliwe jest oszukanie użytkowników w celu uzyskania dostępu do niebezpiecznych adresów URL.
Zamiast rzucać:
message=Please fill in the form
następnie przekaż:
message=GenderMaleFemale
function show(){alert();}
Następnie formularz rejestracyjny będzie wyglądał następująco:
![Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie]()
Użytkownicy nie będą podejrzliwi wobec takiej „normalnej” formy, a przy wyborze płci zostanie wykonany Skrypt:
![Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie]()
Wyjaśnię trochę więcej na temat wartości przekazanej w parametrze komunikatu:
GenderMaleFemale
function show(){alert();}
Jej głównym celem jest wykonanie funkcji show() za każdym razem, gdy w znaczniku wyboru wystąpi zdarzenie onchage. Funkcja show() pojawia się tutaj po prostu, aby pokazać, że skrypt został wykonany. Jednak w rzeczywistości hakerzy często używają tej funkcji show() do wykonania skryptu, który przesyła wartość pliku cookie użytkownika do wcześniej określonego serwera.Czytelnicy mogą zapoznać się z artykułem Reflected XSS , który wspomina, w jaki sposób hakerzy tworzą. Jak wygląda to żądanie?
Ten przykład daje nam dwa ważne wnioski. Po pierwsze, złośliwy kod został wykonany natychmiast po kliknięciu wartości w znaczniku wyboru, co oznacza, że został wykonany bezpośrednio po stronie klienta, bez konieczności sprawdzania odpowiedzi serwera. Po drugie, struktura HTML została zmieniona wraz z przekazanym skryptem. Widzimy także rzeczywisty scenariusz wykorzystania. DOM Based jest nieco bardziej podobny do Reflected niż Stored XSS, jeśli chodzi o oszukiwanie użytkowników w celu uzyskania dostępu do adresu URL zawierającego złośliwy kod.
Poniższy rysunek opisuje każdy etap wdrażania techniki ataku XSS opartej na DOM:
![Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie Web9: Rodzaje wykorzystania XSS – Część 3: XSS oparty na domenie]()
Poniżej znajduje się film przedstawiający członka forum WhiteHat.vn wykonującego exploit poprzez XSS oparty na DOM:
Powodzenia!