W poprzednim artykule dowiedzieliśmy się o błędach XSS (Cross Site Scripting) i faktycznym wykorzystaniu XSS Reflected. Istnieje inny typ XSS, który jest uważany za bardziej niebezpieczny: przechowywany XSS.
W przeciwieństwie do Reflected, który bezpośrednio atakuje kilka ofiar będących celem hakerów, Stored XSS atakuje więcej ofiar. Ten błąd pojawia się, gdy aplikacja webowa nie sprawdza dokładnie danych wejściowych przed zapisaniem ich do bazy danych (tutaj używam tego pojęcia w odniesieniu do bazy danych, pliku lub innych obszarów przechowujących dane aplikacji. web).
Dzięki technice Stored XSS hakerzy nie wykorzystują jej bezpośrednio, ale muszą to zrobić w co najmniej 2 krokach.
Po pierwsze, hakerzy wykorzystują niefiltrowane punkty wejściowe (formularz, dane wejściowe, obszar tekstowy...), aby wstawić niebezpieczny kod do bazy danych.

Następnie, gdy użytkownik uzyska dostęp do aplikacji internetowej i wykona operacje związane z zapisanymi danymi, w przeglądarce użytkownika zostanie wykonany kod hakera.
![Web8: Exploity XSS – Część 2: Przechowywane XSS Web8: Exploity XSS – Część 2: Przechowywane XSS]()
W tym momencie wydaje się, że haker osiągnął swój cel. Z tego powodu technika Stored XSS nazywana jest także XSS drugiego rzędu.
Scenariusz eksploatacji opisano w następujący sposób:
![Web8: Exploity XSS – Część 2: Przechowywane XSS Web8: Exploity XSS – Część 2: Przechowywane XSS]()
Odbity XSS i przechowywany XSS mają dwie główne różnice w procesie ataku.
- Po pierwsze, aby wykorzystać Reflected XSS, haker musi nakłonić ofiarę do uzyskania dostępu do jej adresu URL. W przypadku Stored XSS nie ma takiej potrzeby, haker po umieszczeniu niebezpiecznego kodu w bazie danych aplikacji musi jedynie poczekać, aż ofiara automatycznie uzyska do niego dostęp. W przypadku ofiar jest to całkowicie normalne, ponieważ nie wiedzą, że dane, do których uzyskują dostęp, zostały zainfekowane.
- Po drugie, cel hakera będzie łatwiejszy do osiągnięcia, jeśli w momencie ataku ofiara będzie nadal w sesji aplikacji internetowej. Dzięki Reflected XSS haker może przekonać lub nakłonić ofiarę do zalogowania się i uzyskania dostępu do podanego przez niego adresu URL w celu wykonania złośliwego kodu. Jednak w przypadku Stored XSS jest inaczej, ponieważ złośliwy kod został zapisany w internetowej bazie danych, więc za każdym razem, gdy użytkownik uzyska dostęp do powiązanych funkcji, złośliwy kod zostanie wykonany, a najprawdopodobniej te funkcje wymagają uwierzytelnienia. Najpierw zaloguj się, więc oczywiście w tym czasie użytkownik nadal uczestniczy w sesji.
Z tych rzeczy wynika, że Stored XSS jest znacznie bardziej niebezpieczny niż Reflected XSS, a ofiarami mogą być wszyscy użytkownicy tej aplikacji internetowej. Jeśli ofiara pełni funkcję administracyjną, istnieje również ryzyko przejęcia sieci.