Czasami aby przeprowadzić atak na użytkownika musimy przekonać go do wykonania pewnej czynności. #od0dopentestera
Tak jest w przypadku
self XSS
, kiedy to ofiara musi samodzielnie otworzyć konsolę deweloperską przeglądarki (w przypadku Chrome przy użyciu
F12
) a następnie wkleić tam kod #javascript otrzymany od atakującego.
Innym przykładem są błędy w obsługiwaniu niektórych nagłówków przesyłanych przez przeglądarkę, chociażby User-agent
, czyli informacji na temat wersji programu, której aktualnie używamy.
Ten nagłówek jest doklejany do każdego żądania automatycznie i użytkownik nie może go w prosty sposób zmienić.
Czasami zdarza się, że treść tego nagłówka wyświetlana jest stronach bez odpowiedniej weryfikacji.
To może prowadzić do ataków typu XSS, kiedy to na stronie wykonywany jest nieautoryzowany kod #js.
W przeszłości błędy tego rodzaju nie były traktowane poważnie.
Aby je wykorzystać użytkownik musiał bowiem zainstalować dodatkowe rozszerzenie, które umożliwiało by mu zmianę konkretnego nagłówka.
I tu do gry wchodzi Web Cache Poisoning
.
Wygenerowanie niektórych podstron jest mocnym obciążeniem dla serwera a ich treść nie zmienia się zbyt często.
Aby więc zoptymalizować wykorzystywanie zasobów korzysta się z pamięci podręcznej.
Wygenerowaną treść strony zapisuje się w pamięci i w przypadku kolejnych żądań nie trzeba ponownie wykonywać skomplikowanych zapytań do bazy danych a jedynie wyświetlić zapisaną wcześniej treść.
Serwer musi jakoś rozpoznawać czy może wykorzystać zawartość cache czy też musi wygenerować stronę na nowo.
Robi to na podstawie tak zwanych cache keys
.
W najprostszym przypadku może to być treść parametrów przekazywanych przez przeglądarkę.
Jeżeli wysłano takie same parametry – wyświetlamy zawartość z pamięci podręcznej.
Jeżeli zmieniła się przynajmniej jedna wartość – musimy wygenerować stronę na nowo.
Atakujący może wykorzystać ten mechanizm do zapisania swojej wersji konkretnej podstrony.
Jak? Wysyłając żądanie z odpowiednio zmodyfikowanym nagłówkiem user-agent zawierającym odpowiedni kod JS.
Żądanie to przesyłane jest pod unikalny adres.
Dzięki temu serwer stwierdzi, że jest to nowa strona i zapisze ją w swojej pamięci razem ze zmodyfikowanym nagłówkiem.
Teraz wystarczy już tylko przekonać ofiarę do odwiedzenia tak spreparowanej podstrony.
Wtedy to serwer pobierze wcześniej zapisaną, złośliwą wersję i wyświetli ją nieświadomemu użytkownikowi.
W taki sposób możliwe jest wykorzystanie błędów, które jeszcze parę chwil temu wydawały się mało ciekawe.
Subskrybuj kanał na YouTube
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Podcast dostępny na Google i Apple Podcasts oraz Spotify i Anchor.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.
#bezpieczenstwo #programowanie #informatyka #it #nauka #technologia #ciekawostki #podcast #swiat #gruparatowaniapoziomu #biznes #webdev #security