O nagłówku X-Frame-Options

X-Frame-Options to jeden z nagłówków HTTP, który jest dodawany przez serwer internetowy przy odpowiedzi na żądanie użytkownika.

Nagłówek może przyjmować jedną z dwóch wartości – DENY lub SAMEORIGIN. Niezdefiniowanie X-Frame-Options skutkuje tym, że nasza strona może zostać wyrenderowana w tagach: frame, iframe, embed bądź object.

Możliwości wykorzystania braku nagłówka

W związku z brakiem nagłówka i możliwością osadzenia strony na innych witrynach, użytkownicy są narażeni na ataki typu click-jacking. Jest to technika polegająca na kliknięciu przez użytkownika w elementy dla niego niewidoczne. Przykładowy scenariusz może wyglądać w sposób następujący:

  • użytkownik dostaje link na skrzynkę mailową z informacją, że jego niekorzystne zdjęcia zostały udostępnione w sieci na podanej stronie
  • nieświadomy cel klika w podejrzany link
  • na stronie wyświetlane jest zapytanie, czy jego mail to: mail-ofiary@gmail.com
  • użytkownik potwierdza całość przyciskiem „tak”

W tym momencie, w miejscu przycisku znajduje się niewidoczny element, który po kliknięciu aktywuje javascript, udostępniajacy dalej nieprawdziwą wiadomość na facebooku. Jest to jedna z wielu możliwości wykorzystania braku nagłówka.

Więcej przykładów?

W jednym ze swoich wpisów, użytkownik asurti6783 opisuje sposób, w jaki było możliwe przejęcie konta użytkownika. W wielkim skrócie:

Pentester znalazł błąd, który po wejściu na dwa kolejne linki, wywoływany był przygotowany skrypt. Ponieważ jest mało prawdopodobne, że użytkownik wejdzie najpierw w pierwszy link, a potem podmieni URI na drugi, szukał on alternatywy. Zauważył on brak nagłówka X-Frame-Options. Następnie przygotował on skrypt, który po wejściu na stronę atakujacego, ładował stronę w tle, a następnie przechodził z pierwszego linku na drugi. Takim sposobem byłby on w stanie przejąć np. ciasteczka użytkownika, gdyby był on tylko zalogowany.

Dalej mało? Tutaj, użytkownik przedstawił potencjalny atak na użytkowników przeglądających forum dzięki poniższemu payloadowi, wstawianego do kolejnych postów.

<iframe src=http://x.x.x.x/index.html”></iframe>

Scenariusz zakładał, że po wejściu użytkownika na post, powyższy kod ładuje kontent ze strony z atrybutu „src”, a następnie na stronie atakującego wywoływany jest skrypt, docelowo mający przejąć konto użytkownika.

Źródła

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
https://github.com/asurti6783/writeups/blob/main/bug.md
https://medium.com/@irounakdhadiwal999/stored-iframe-injection-csrf-account-takeover-42c93ad13f5d

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.