Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Эдриан_Прутяну_Как_стать_хакером_сборник_практическиз_сценариев.pdf
Скачиваний:
18
Добавлен:
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

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

9

 

 

 

 

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 в браузере гораздо менее привлекательно, чем выполнениенативногокодаиустановкаоболочкинасамомсервереприложений. Какой смысл в том, чтобы выполнять сильно ограниченный в возможностях JavaScript-код в коротком сеансе просмотра? Какой урон может нанести зло­ умышленник,используя такой тип уязвимости? Как оказалось,довольно серь­ езный.

В этой главе мы рассмотрим атаки на стороне клиента с упором на межсайтовый скриптинг. Рассмотрим и такой тип атак, как «межсайтовая подделка запроса» (CSRF),обсудим последствия правила ограничения домена (SOP).Далее рассмотрим способы использования уязвимостейдля XSS-атак с помощью фреймворка BeEF.

К концу главы вы будете знать, как осуществлять:

хранимые, отраженные XSS-атаки и атаки на базе DOM;

межсайтовую подделку запроса и возможные атаки и ограничения;

BeEF, инструмент де-факто для эксплуатации узявимостей на стороне клиента в браузере.

Мы потратим немало времени на изучение фреймворка BeEF, поскольку он делает XSS-атаки жизнеспособными. Он позволяет с легкостью осуществлять атаки с использованием методов социальной инженериидля выполнения вредоносного нативного кода, реализации кейлоггера, сохранения нашего доступа и даже туннелирования трафика через браузер жертвы.

Правила ограничения домена

Рассмотрим сценарий, когда жертва выполняет вход в свою учетную запись Gmail (mail.google.com) на одной из открытых вкладок браузера. На другой

 

 

 

 

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

 

 

Правила ограничения домена  209 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

 

 

 

 

 

злоумышленника, которому нужен доступ к данным Gmail. Возможно, жертву заставили посетить этот конкретный сайт с помощью методов социальной инженерии или же перенаправили туда с помощью вредоносной рекламной кампании на известном новостном сайте.

Код злоумышленника может попытаться открыть соединение с доменом mail.google.com,и,посколькужертваужепрошлапроверкуаутентификациина другой вкладке браузера, код должен иметь возможность читать и отправлять электронные письма,также подделывая запросы в Gmail.JavaScript предоставляет все инструменты, необходимые для всего этого,так в чем же дело?

Ответ,как мы вскоре рассмотрим подробно,кроется в правиле ограничения домена.Онопредотвращаеттакуюатаку,иеслизлоумышленникнеможетвнедрить свой код непосредственно на mail.google.com, он не сможет прочитать там какую-либо конфиденциальную информацию.

Правило ограничения домена появилось еще во времена Netscape, потому что без него вероятность злоупотреблений была очень реальной. Проще говоря,это ограничиваетдоступ сайтов к информации сдругих сайтов,еслитолько источник запроса не совпадает с адресатом назначения.

Существуетпростой алгоритм,чтобы определить,былоли нарушено правило ограничениядомена.Браузер сравниваетсхему,домен и портисходного сайта с целевым сайтом,и если какой-либо элемент не совпадает,доступ будет закрыт.

В предыдущем примере URL-адрес сайта, выбранного в качестве объекта атаки,выгляделбытак:https://mail.google.com/mail/u/0/#inbox,чтомож-

но записать следующим образом.

( [schema], [domain], [port] ) -> ( https, mail.google.com, 443 )

Код злоумышленника на сайте https://www.cnn.com/ будетлишен доступа к чтению, поскольку нет совпадения с доменом:

(https, www.cnn.com, 443 ) != ( https, mail.google.com, 443 )

Даже вредоносный код на сайте https://www.google.com/ не сможет получить доступ к Gmail, поскольку нет совпадения с доменом, хотя они могут находиться на одном физическом сервере.

Источник

Цель

Результат

 

 

 

https://mail.google.

https://mail.google.com/

Разрешено,подразумевается­

com/mail/u/0/#inbox

mail/u/0/#inbox

порт 443

https://mail.google.

https://mail.google.com/

Отклонено,несоответствие

com/mail/u/0/#inbox

mail/u/0/#inbox

схемы

https://mail.google.

https://mail.google.com/

Отклонено,несоответствие

com:8443/u/0/#inbox

mail/u/0/#inbox

порта

h t t p s : / / d e v . m a i l .

https://mail.google.com/

Отклонено,несоответствие

google.com/u/0/#inbox

u/0/#inbox

домена

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 9.Практические атаки на стороне клиента

 

 

 

 

 

BUY

 

 

w Click

to

BUY 210 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

Это имеет смысл с точки зрения обороны. Сценарий, который мы обрисо-

 

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

вали ранее, стал бы настоящим кошмаром, если бы не правило ограничения

 

 

 

 

 

 

 

 

 

 

 

 

домена. Однако если внимательно посмотрим на веб-приложения в интерне-

 

 

 

 

 

 

 

 

 

 

 

 

те, то заметим, что почти все они содержат контент, такой как изображения,

 

 

 

 

 

 

 

 

 

 

 

 

таблицы стилей и даже код JavaScript.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Совместноеиспользованиересурсовизразныхисточниковилисайтовимеет

 

 

 

 

 

 

 

 

 

 

 

 

свои преимущества для приложения. Статический контент можно выгружать

 

 

 

 

 

 

 

 

 

 

 

 

в сети доставки содержимого,которые обычно размещаются в других доменах

 

 

 

 

 

 

 

 

 

 

 

 

(например, fbcdn.net в Facebook), что обеспечивает бóльшую гибкость, ско-

 

 

 

 

 

 

 

 

 

 

 

 

рость и в конечном итоге экономит затраты на обслуживание пользователей.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Правило ограничения домена дает доступ к определенным типам ресур-

 

 

 

 

 

 

 

 

 

 

 

 

сов из разных источников, чтобы обеспечить нормальное функционирование

 

 

 

 

 

 

 

 

 

 

 

 

сети. В конце концов, когда основное внимание уделяется взаимодействию с

 

 

 

 

 

 

 

 

 

 

 

 

пользователем, политику безопасности, которая делает приложение непри-

 

 

 

 

 

 

 

 

 

 

 

 

годным для использования, уже вряд ли можно считать таковой, независимо

 

 

 

 

 

 

 

 

 

 

 

 

оттого, насколько она безопасна на самом деле.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Правило ограничения домена позволит встраивать следующие объекты из

 

 

 

 

 

 

 

 

 

 

 

 

разных источников в источник с любого другого сайта:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

изображения;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

таблицы стилей;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сценарии (которые браузер с удовольствием выполнит!);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

встроенные фреймы (iframe).

 

 

 

 

 

 

 

 

 

 

 

 

Мы можем включить изображения из нашей сети доставки содержимого, и браузер­ скачает байты изображения и отобразит их на экране. Однако нельзя читать байты программным путем, используя JavaScript. То же самое относится и к другому статическому контенту, который разрешен правилом ограничения домена. Можно, например, включить таблицу стилей и код JavaScript, но нельзя прочитать фактическое содержимоетаблицы,если нетсовпадения с источником.

Данное утверждение справедливо и для элементов iframe. Можно создать новый объект iframe и указать ему произвольный URL-адрес, и браузер с удовольствиемзагрузитсодержимое.Однакоунаснетвозможностипрочитатьсодержимое в случае нарушения правила ограничения домена.

Вприведенномнижепримере(рис.9.1)создаемэлемент iframe внутривебприложения https://bittherapy.net, имитирующий действия, которые могли бы бытьвыполнены в ходе XSS-атаки или вредоносным сценарием,если бы ему было разрешено запускаться в контексте bittherapy.net.

Сначала создаем новый элемент iframe с помощью функции document. createElement() и сохраняем его в переменной frame. Затем устанавливаем URL-адрес: https://bittherapy.net, используя свойство src. Наконец, добавляем вновь созданный объект iframe в документ с помощью функции

document.body.append().

 

 

 

 

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

 

 

 

 

 

-xcha

 

 

 

 

Правила ограничения домена 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

211 BUY

 

 

 

 

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

d

f

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.9.1. Создание элемента iframe с помощью консоли браузера

Видно,чтоисточник(frame.src)вточностисоответствуетвышеупомянутой тройке (схема,домен и порт), и когда мы пытаемся прочитать содержимое заголовка элемента iframe с помощью frame.contentDocument, у нас это получается. Правило ограничения домена не было нарушено.

Инаоборот,создание iframe дляhttps://bing.com/ вприложенииhttps:// bittherapy.net будет успешным,объект будет создан,но мы не сможем получить доступ к его содержимому.

Рис.9.2. Создание фрейма и попытка получить доступ к его содержимому не удались

Поисковое приложение Bing загружено просто отлично,как видим в правой части рисунка, но программным путем мы не можем прочитать содержимое, потому что это нарушает правило ограничения домена.

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