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

 

 

 

 

10

 

 

 

 

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

 

 

 

 

Практические атаки на стороне сервера

В предыдущей главе мы провели серию практических атак, направленных на пользователей, используя уязвимости в приложениях для достижения нашей цели. В этой главе основное внимание будет уделено атакам на стороне сервера, прежде всего посредством эксплуатации XML-уязвимостей. Несмотря на то что формат JSON завоевал значительную долю в обмене данными в вебприложениях, формат XML по-прежнему довольно распространен. Он не такой прозрачный, как JSON, и его, может быть, немного сложнее читать, но он зрелый.СуществуетогромноемножествобиблиотекдляпарсингаXML-файлов для любого языка, который разработчик может выбрать для завершения проекта. Язык Java по-прежнему популярен в корпоративном мире, и феномен Android породил еще больше энтузиастов Java. Microsoft по-прежнему очень любит XML, и вы будете встречать его повсюду: в Windows, в манифестах приложений и в файлах конфигурации сайтов, использующих IIS.

Целью данной главы является знакомcтво с XML-атаками, и к ее концу вы будете знать,что такое:

условия осуществления DoS-атак;

подделки запросов на стороне сервера (SSRF);

утечка информации;«слепая» эксплуатация и внеполосная эксфильтрация данных;

удаленное выполнение кода.

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

<?xml version="1.0" encoding="UTF-8"?>

Далее следуют произвольные теги, которые описывают данные, содержащиеся в документе. В то время как HTML инструктирует клиента, например браузер,относительнотого,какотображатьданные,форматXMLиспользуется

 

 

 

 

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

 

 

Внутренние и внешние ссылки  251 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

 

 

 

 

 

определяются или описываются строительными блоками под названием «элементы». Пример XML-документа выглядиттак:

<?xml version="1.0" encoding="UTF-8"?> <user>

<name>Dade Murphy</name> <id>1</id> <email>admin@localhost</email>

</user>

Элемент <user> указывает тип записи, и у него есть закрывающий тег </user>, совсем как в HTML. Он также является корневым элементом. В этой записи у нас есть теги <name>, <id> и <email> с соответствующими значения­ ми. Важно отметить, что любое приложение, которое выполняет синтаксичес­ кий анализ этих данных, должно знать, что делать с содержимым. Современные веб-браузеры знают, что делать с HTML-тегами <div> и <a>, потому что все они следуют определенному стандарту. Приложения, обменивающиеся данными в формате XML,должны решить,что это заданные и как они обрабатываются или отображаются. Структура XML может быть допустимой с точки зрениясинтаксиса(тоестьвсетегиправильнозакрыты,естькорневойэлемент и присутствует заголовок документа), но в нем могут отсутствовать ожидаемыеэлементы,иприложениямогутаварийнозавершитьработуилипотратить ресурсы, пытаясь проанализировать эти данные.

Внутренние и внешние ссылки

Определение типа документа (DTD) используется для правильного построения конкретного документа. На DTD ссылаются в документах XML с помощью элемента объявлениятипадокумента DOCTYPE.DTD можно полностью записывать внутри XML-документа,или на них можно ссылаться извне,чтобы парсер мог их загрузить и обработать.

Внутренние DTD можно найти в верхней части XML-документа в теге

DOCTYPE.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE user [ <!ELEMENT user ANY>

<!ENTITY company "Ellingson Mineral Company">

]>

<user>

<name>Dade Murphy</name> <id>1</id>

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 252  Глава 10.Практические атаки на стороне сервера

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

<email type="local">admin@localhost</email>

 

 

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

<company>&company;</company> </user>

 

 

 

 

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

 

 

 

 

ПредыдущеевнутреннееDTDопределяеткорневойэлементuser ивнутреннюю сущность, company, которая определена для хранения строкового значе-

ния "Ellingson Mineral Company".

В самом документе на сущность company можно ссылаться, обрамляя его знаком амперсанда с левой стороны и точкой с запятой – справа. Вы с этим знакомы, если у вас есть опыт работы с HTML. Когда парсер дойдет до строки &company;, он вставит значение, заданное в предыдущем определении типа документа.

Как говорилось ранее, также возможно указать XML-парсеру нашего документа на внешний DTD-файл. Парсер просто пойдет и извлечет этот файл перед обработкой остальной части документа. На внешние DTD ссылаются в DOCTYPE, поставив перед ними ключевое слово SYSTEM.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE user SYSTEM "user.dtd">

<user>

<name>Dade Murphy</name> <id>1</id>

<email type="local">admin@localhost</email> <company>&company;</company>

</user>

Файл user.dtd будет содержать наши определения сущностей и элементов.

<!DOCTYPE user [ <!ELEMENT user ANY>

<!ENTITY company "Ellingson Mineral Company">

]>

Сущностьcompany будетподставленавдокумент,какираньше,послеуспешной загрузки и анализа DTD.

Как и наше внешнее определение DTD, мы можем ссылаться и на внешние сущности.

Синтаксис похож на тот, что используется при ссылке на внешние DTD: он вызываетключевоеслово SYSTEM иунифицированныйидентификаторресурса.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE user [ <!ELEMENT user ANY>

<!ENTITY company SYSTEM "http://config.ecorp.local/company.xml">