BrowExt - XSS Example
Cross-Site Scripting (XSS) za pomocą Iframe
W tej konfiguracji, skrypt treści jest implementowany w celu utworzenia Iframe, w którym zawarta jest URL z parametrami zapytania jako źródło Iframe:
Jest publicznie dostępna strona HTML o nazwie message.html
, która dynamicznie dodaje zawartość do ciała dokumentu na podstawie parametrów w adresie URL:
Wykonuje się złośliwy skrypt na stronie przeciwnika, modyfikując parametr content
źródła Iframe, aby wprowadzić payload XSS. Osiąga się to poprzez aktualizację źródła Iframe, aby zawierało szkodliwy skrypt:
Nadmiernie liberalna polityka zabezpieczeń treści, taka jak:
pozwala na wykonanie kodu JavaScript, co czyni system podatnym na ataki XSS.
Alternatywnym podejściem do wywołania ataku XSS jest utworzenie elementu Iframe i ustawienie jego źródła tak, aby zawierało szkodliwy skrypt jako parametr content
:
DOM-based XSS + ClickJacking
Ten przykład został zaczerpnięty z oryginalnego wpisu.
Główny problem wynika z podatności na DOM-based Cross-site Scripting (XSS) znajdującej się w /html/bookmarks.html
. Problematyczny kod JavaScript, będący częścią bookmarks.js
, jest szczegółowo opisany poniżej:
Ten fragment kodu pobiera wartość z pola wejściowego txtName
i używa konkatenacji ciągów znaków do generowania kodu HTML, który jest następnie dodawany do DOM za pomocą funkcji .append()
z biblioteki jQuery.
Zazwyczaj polityka bezpieczeństwa zawartości (CSP) rozszerzenia Chrome uniemożliwia występowanie takich podatności. Jednak ze względu na relaksację CSP z użyciem 'unsafe-eval' oraz wykorzystanie metod manipulacji DOM z biblioteki jQuery (które używają globalEval()
do przekazywania skryptów do funkcji eval()
podczas wstawiania do DOM), nadal istnieje możliwość wykorzystania podatności.
Choć ta podatność jest istotna, jej wykorzystanie zazwyczaj zależy od interakcji użytkownika: odwiedzenia strony, wprowadzenia ataku XSS i aktywacji przycisku "Dodaj".
Aby zwiększyć wykorzystanie tej podatności, wykorzystuje się dodatkową podatność clickjacking. Manifest rozszerzenia Chrome zawiera obszerną politykę web_accessible_resources
:
Warto zauważyć, że strona /html/bookmarks.html
jest podatna na osadzanie w ramkach, co czyni ją podatną na clickjacking. Ta podatność jest wykorzystywana do osadzenia strony w witrynie atakującego, nakładając na nią elementy DOM w celu oszukańczego przeprojektowania interfejsu. Ta manipulacja sprawia, że ofiary nieświadomie oddziałują z podstawowym rozszerzeniem.
Odwołania
Last updated