Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Эдриан_Прутяну_Как_стать_хакером_сборник_практическиз_сценариев.pdf
Скачиваний:
17
Добавлен:
19.04.2024
Размер:
20.34 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

«Полиглот»  59 BUY

 

 

 

 

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис.2.28. Вкладка Results

Intruder сгенерирует список полезных нагрузок на основе указанного нами форматадаты и вычислитхеш строки перед отправкой его в приложение всего за несколько кликов.Вскоре мы обнаружим по крайней меретри неправильно защищенных, потенциально конфиденциальных документа, которые доступны анонимно.

«Полиглот»

«Полиглот» – это фрагмент кода, который может выполняться в приложении в нескольких контекстах. Данные типы вирусов популярны среди злоумышленников, потому что они быстро проверяют элементы управления вводом приложения на предмет наличия слабых мест с минимальным уровнем шума.

В сложном приложении пользовательский ввод может проходить через множество контрольных точек – от URL-адреса через фильтр до базы данных и обратно в декодер, прежде чем его увидит пользователь, как показано на рисунке.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 60  Глава 2.Эффективное обнаружение

 

 

 

 

 

 

 

 

m

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пользователь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Фильтр входных данных

Приложение

 

Кодирование

 

 

 

 

 

 

 

 

 

 

 

 

 

брандмауэра веб-приложения

 

 

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

База данных

 

Серверный API

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис.2.29. Типичный поток данных от пользователя к приложению

Любойшагнаэтомпутиспособенизменитьилизаблокироватьвирус,чтозатруднитподтверждение наличия уязвимости в приложении.«Полиглот» пытается эксплуатировать уязвимость внедрения, комбинируя несколько методов для выполнения кода в одном потоке.Он пытается использовать слабые места вфильтрациивредоносов,увеличиваявероятностьтого,чтохотябычастькода будет пропущена и успешно выполнится. Это возможно благодаря тому, что JavaScript – очень снисходительный язык. Браузеры всегда были легким препятствием для разработчиков, и JavaScript основан на схожей философии.

XSS Filter Evasion Cheat Sheet от сообщества OWASP содержит примеры «по-

лиглотов», которые также могут обходить некоторые фильтры приложений: https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet.

Неплохой пример сильного полиглота можно найти на GitHub. Его автор – Ахмед Элсобки (Ahmed Elsobky).

jaVasCript:/*-/*'/*\'/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/-- !>\x3csVg/<sVg/oNloAd=alert()//>\x3e

На первый взгляд выглядитдовольно неряшливо,но у каждого символа есть своя цель.Данный вирус был создан для выполнения JavaScript-кода в различных контекстах,независимо оттого,отражается ли код в HTML-теге или непосредственно в серединедругого фрагмента JavaScript-кода.HTML-и JavaScriptпарсеры браузера очень удобны. Они нечувствительны к регистру, дружески настроены по отношению ошибкам, и им не важны отступы, окончания строк или интервалы.Экранированные или закодированные символы иногдапреобразуются обратно в первоначальный вид и вводятся на страницу. В частности, JavaScriptделаетвсе возможное,чтобы выполнитьлюбой переданный ему код. Хороший «полиглот» воспользуется всем этим и постарается избежать фильт­ рации.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

«Полиглот»  61 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Первое, что бросается в глаза, – это то, что в большинстве ключевых слов,

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

таких как textarea, javascript и onload, встречаются прописные буквы.

jaVasCript:/*-/*'/*\'/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/-- !>\x3csVg/<sVg/oNloAd=alert()//>\x3e

Похоже на тщетную попытку обойти фильтры входных данных брандмау­ эра, но вы будете удивлены, узнав, насколько плохо они спроектированы. Рассмотрим приведенный ниже фильтр регулярных выражений:

s/onclick=[a-z]+\(.+\)//g

Регулярное выражение – это фрагмент текста, определяющий шаблон поиска. Некоторые сетевые экраны могут использовать регулярные выражения для поиска потенциально опасных строк внутри HTTP-запросов.

Он эффективно предотвращает внедрение JavaScript-кода через событие onclick, но с одним явным недостатком – не учитывает чувствительность к регистру. Регулярные выражения обладают значительным количеством модификаторов,таких как g в предыдущем примере, и по умолчанию большинству движков требуется, чтобы модификатор i игнорировал регистр, иначе они не будут совпадать, а фильтр уязвим для обхода.

На рисунке показана страница сайта Regex10 с регулярным выражением из предыдущего примера. Видно, что только две из четырех протестированных полезных нагрузок соответствуют выражению,тогда как все четыре выполни-

ли бы JavaScript-код.

Рис.2.30. Визуализация Regex101

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 62  Глава 2.Эффективное обнаружение

 

 

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

При проверке фильтра входных данных на основе регулярных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выражений Regex101–отличное место,чтобы протестироватьего

 

 

 

 

 

 

 

 

 

 

 

 

сразу с несколькими полезными нагрузками: https://regex101.

 

 

 

 

 

 

 

 

 

 

 

 

com.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Разработчикам неоднократно приходится работать в условиях нереальных сроков.Когда в отчете отестировании на проникновение освещается конкретная проблема очистки входных данных, разработчики вынуждены использоватьисправление безопасности,которое было написано быстро,недостаточно протестировано и устраняеттолько частьпроблемы.Часто реализация фреймворка для обработки фильтрации входных данных – вещь слишком долгая и дорогая, и выбирается короткий путь в ущерб безопасности.

«Полиглот» отАхмеда Элсобкитакже направлен на эксплуатацию уязвимос­ тей, передаваясь через механизм, обрабатывающий шестнадцатеричные значения,экранированные обратной косой чертой.Например,JavaScript и Python будут обрабатывать два алфавитно-цифровых символа, которым предшествует \x как один байт. «Полиглот» может обойти определенные встроенные XSSфильтры, выполняющие проверки сравнения простых строк.

jaVasCript:/*-/*'/*\'/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/-- !>\x3csVg/<sVg/oNloAd=alert()//>\x3e

Полезная нагрузка может быть удалена из большинства других ключевых слов, но когда фильтр дойдет до \x3c и \x3e, он интерпретирует их как безопасные­ строки, состоящие из четырех символов. Приложение может провести синтаксический анализ строки и непреднамеренно вернуть однобайтовый эквивалент­ экранированных шестнадцатеричных символов < и > соот- ветственно.ВрезультатеполучаетсяHTML-элемент<svg>,которыйвыполняет произвольный JavaScript-код через событие onload.

SVG(отангл.ScalableVectorGraphics–масштабируемаявекторная графика)–это элемент на странице,который можно использовать для рисования сложной графики на экране без двоичных данных. SVG используется в XSS-атаках главным образом потому, что он предоставляет свойство onload, которое будет выполнять произвольный JavaScript-код,когда элемент отображается браузером.

Еще больше примеров, демонстрирующих мощь этого «полиглота»,можно найти на странице Ахмеда Элсобки в GitHub: https:// github.com/0xSobky.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

«Полиглот»  63 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

«Полиглот» способен выполнять код в различных сценариях внедрения, а

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

также может быть полезен при отражении в HTTP-ответе сервера.

jaVasCript:/*-/*'/*\'/*'/*"/**/(/* */oNcliCk=alert() )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/-- !>\x3csVg/<sVg/oNloAd=alert()//>\x3e

Закодированные в URL символы %0d и %0a – это перевод строки и возврат каретки. Данные символы в основном игнорируются HTML- и JavaScriptпарсерами, но имеют значение в заголовке HTTP-запроса или ответа.

Если целевое приложение не может должным образом отфильтровывать ввод данных пользователем, в некоторых случаях оно способно принять произвольное значение и добавить его как часть HTTP-ответа. Например, при попытке установить куки Remember me приложение отображает полезную нагрузку, не отфильтрованную в заголовках HTTP-ответа, что приводит к появлению межсайтового скриптинга в браузере пользователя.

GET /save.php?remember=username HTTP/1.1 Host: www.cb2.com

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0

Content-Type: application/x-www-form-urlencoded; charset=UTF-8 [...]

HTTP/1.1 200 OK Cache-Control: private

Content-Type: text/html; charset=utf-8 Server: nginx/1.8.1

Set-Cookie: remember_me=username Connection: close

Username saved!

Если мы передадим «полиглот» в качестве имени пользователя, которое нужно запомнить,заголовки HTTP-ответа будут изменены и тело будет содержать данные, контролируемые злоумышленником.

GET /save.php?remember=jaVasCript%3A%2F*-

%2F*%60%2F*%60%2F*'%2F*%22%2F**%2F(%2F*%20*%2FoNcliCk%3Dalert()%20)%2

F%2F%0D%0A%0d%0a%2F%2F%3C%2FstYle%2F%3C%2FtitLe%2F%3C%2FteXtarEa%2F%3 C%2FscRipt%2F--!%3E%3CsVg%2F%3CsVg%2FoNloAd%3Dalert()%2F%2F%3E%3E

HTTP/1.1

Host: www.cb2.com

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 64  Глава 2.Эффективное обнаружение

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

Вот ответ сервера.

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

HTTP/1.1 200 OK Cache-Control: private

Content-Type: text/html; charset=utf-8 Server: nginx/1.8.1

Set-Cookie: remember_me=jaVasCript:/*-/*'/*\'/*'/*"/**/(/* */oNcliCk=alert() )//

//</stYle/</titLe/</teXtarEa/</scRipt/-- !>\x3csVg/<sVg/oNloAd=alert()//>\x3e

Connection: close Username saved!

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Ответ немного искажен, но у нас есть выполнение кода. Закодированные в URL символы возврата каретки %0D%0A%0d%0a интерпретируются как частьответа HTTP. В HTTP-протоколе два набора символов возврата каретки и перевода строки указывают на конец заголовка, и все, что следует дальше, будет отображаться браузером как часть страницы.

Тот же вирус,но другой контекст

Существует множество других контекстов, в которых «полиглот» может успешно выполнить код.

Если «полиглот» содержится в свойстве value в поле,где вводится имя пользователя,интерпретация кода браузером явно показываетнеработающее поле ввода и вредоносный элемент <svg>. HTML-код перед обработкой полезной нагрузки выглядиттак:

<input type = "text" name = "username" value = "[payload]">

На рисунке показано, что браузер просматривает HTML-код после обработки полезной нагрузки.

Рис.2.31. HTML-код отраженного XSS

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

«Полиглот»  65 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

«Полиглот» также выполнит код, если он содержится в комментарии HTML-

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

кода, например:

<!-- Comment! [payload] -->

Полезная нагрузка содержит индикатор конца комментария -->, который оставляетостальнойтекстдля интерпретации браузером в качестве HTML-кода. И снова свойство onload элемента <svg> выполнит наш произвольный код.

На рисунке показано, что браузер просматривает HTML-код после обработки полезной нагрузки.

Рис.2.32. HTML-код отраженного XSS

«Полиглот» также полезен, если он содержится в коде, устанавливающем объект регулярного выражения, например var expression = /[payload]/gi.

Можно проверить это поведение в консоли браузера с помощью предыдущего примера кода.

Рис.2.33. Визуализация «полиглота»

Видно, что стратегически размещенные индикаторы комментариев, такие как /*, */ и //, вынудят браузер игнорировать большую часть полезной нагрузки,что приводит к правильному JS-коду.

Код выполняется здесь.

(/* */oNcliCk=alert()

)

Многострочные комментарии игнорируются, и будет выполняться любой код,содержащийсявкруглыхскобках.ВданномконтекстеoNcliCk неявляется