Bardzo popularnym, atakiem na aplikacje webowe jest atak Cross Site Scripting, w skrócie XSS. Cross Site Scripting zakłada interakcje ofiary (np. Klienta) z systemem, który został skutecznie zaatakowany. 

Na czym polega atak Cross Site Scripting? 

Atak XSS polega na wstrzyknięciu do przeglądarki ofiary fragmentu kodu javaScript bądź innego języka skryptowego, który może być uruchomiony w przeglądarce. 

W efekcie czego, atakujący ma możliwość wykonania dowolnego kodu skryptowego w przeglądarce, który skutkować może m.in. wykradzeniem ciasteczek sesyjnych ofiary a w konsekwencji, przechwyceniem całej sesji ofiary. 

Rodzaje ataków XSS 

Rodzajów ataków Cross Site Scripting jest kilka – Persistent, Reflected czy DOM-based. Tutaj opisane zostaną dwa pierwsze rodzaje, które są najczęściej spotykane. 

Persistent  

Najgroźniejsza odmiana, polegająca na umieszczeniu kodu javascript w sposób trwały w kodzie aplikacji  webowej.  

Przykład:

Atakujący umieszcza javascript w komentarzu pod postem na blogu, a komentarz automatycznie jest wysyłany do moderacji. W momencie kiedy moderator odczytuje komentarz, uruchamiany jest natychmiastowo kod javascript, który może wykradać ciasteczka sesyjne administratora. W tym momencie atakujący ma dostęp do zalogowanej sesji administracyjnej bez znajomości użytkownika oraz hasła!  

Ten rodzaj XSS jest szczególnie groźny, ponieważ raz osadzony złośliwy kod javascriptowy, będzie serwowany każdemu użytkownikowi, który odwiedza tę aplikację webową „wzbogaconą” o złośliwy kod atakującego. 

Kolejną implikacją jest fakt, że zagrożenie będzie tak długo istniało, jak długo osoba odpowiedzialna za aplikację nie zorientuje się, że owy kod javascriptowy został wstrzyknięty i nie usunie go z kodu strony. 

Reflected XSS  

W tym przypadku kod javascript zaszyty jest w linku, który atakujący przesyła do ofiary. Ofiara po kliknięciu na linka łączy się z aplikacją, przekazując jej nieświadomie fragment kodu HTML zawierający kod wykonujący javascript.  Aplikacja zwraca ofierze (stąd nazwa: reflected) wynik (tj. HTML) zawierający wcześniej podany javascript, powodując wykonanie kodu w przeglądarce. 

Ten rodzaj XSS zakłada również element socjotechniczny, bowiem do sukcesu potrzeba już nie tylko samej podatności w aplikacji, ale również nakłonienia ofiary do np. kliknięcia w złośliwy link, który spowoduje uruchomienie payloada wykorzystującego podatność XSS w danej aplikacji. 

Przykładowe skutki udanego ataku XSS 

Czym może skutkować wykonanie kodu JavaScript w przeglądarce ofiary? Poniżej znajdują się przykłady:

  • wykradanie cookies (w tym cookies sesyjnych) – czyli przejęcie (zalogowanej) sesji ofiary, 
  • dynamiczna podmiana zawartości strony www (np. słynne „this site have beed hacked”), 
  • uruchomienie keyloggera w przeglądarce, 
  • hostowanie malware-u z wykorzystaniem zaatakowanej aplikacji (np. poprzez użycie tagu iframe).