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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 310 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 11.Атака на 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.11.27. Запуск коллекции,перехваченный Burp

Теперь можем запустить модули Scanner, Intruder и Sequencer или повторно воспроизвести любой запрос, чтобы манипулировать данными и искать уязвимости, как мы обычно делаем, когда работаем с традиционными приложениями.

Факторы атаки

Атаки на API на базе HTTP на самом деле ничем не отличаются от атак на традиционные веб-приложения. Мы должны следовать той же основной процедуре:

определитьточки внедрения;

отправить непредвиденный ввод и наблюдать за поведением API;

искать обычных подозреваемых: SQL-инъекции, XXE, XSS, внедрение команд,локальное и удаленное включение файлов.

Можно использовать уже известные советы и хитрости, чтобы найти эти проблемы, за некоторыми исключениями.

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

В случае с веб-сервисами ответ обычно не отображается, в основном из-за заголовка Content-Type, устанавливаемого в ответе. Обычно это формат JSON илиXML,которыебольшинствобраузеровнебудетотображатькакHTML.Яговорю «большинство», потому что, к сожалению, некоторые старые браузеры

 

 

 

 

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

 

 

Факторы атаки  311 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

по-прежнему отображают контент, игнорируя заголовок Content-Type, ука-

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

занный сервером, и делая догадки на основе данных в ответе.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В URL-адресе api.ecorp.local/user/1

была обнаружена следующая отра-

 

 

 

 

 

 

 

 

 

 

 

 

женная проблема ввода:

 

 

 

 

 

 

 

 

 

 

 

 

GET /user/1<svg%2fonload=alert(1)> HTTP/1.1 Content-Type: application/json

X-Auth-Token: 3284bb036101252db23d4b119e60f7cc cache-control: no-cache

Postman-Token: d5fba055-6935-4150-96fb-05c829c62779 User-Agent: PostmanRuntime/7.1.1

Accept: */*

Host: api.ecorp.local:8081 Connection: close

Передаем полезную нагрузку JavaScript и видим, что API отражает ее обратно клиенту без экранирования.

HTTP/1.0 200 OK

Date: Tue, 24 Apr 2018 17:14:03 GMT

Server: WSGIServer/0.1 Python/2.7.11 Content-Length: 80

Content-Type: application/json

{"response": {"error": {"message": "user id 1<svg/onload=alert(1)> not

found»}}}

Обычно этого достаточно, чтобы доказать, что уязвимость существует и можно атаковать пользователей с помощью методов социальной инженерии. Однако если приглядеться, то можно заметить, что в значении Content-Type стоит application/json, а это означает, что современные браузеры не будут отображать ответ в виде HTML-кода, что делает нашу полезную нагрузку бесполезной.

API по-прежнему дают какую-то надежду. К веб-сервисам обычно нет прямого доступа в разъединенной среде.Возможно,этот конкретный API используется веб-приложением. Сообщение об ошибке может в конечном итоге попасть в браузер, что может отобразить нашу полезную нагрузку. Что делать, если все ошибки регистрируются в веб-сервисе, а затем аккуратно отображаются в панели состояния, которая видна только внутри? Тогда мы выполним код, написанный на JavaScript,для аналитика, проверяющего состояние API.

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

 

 

 

 

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

 

 

w Click

to

BUY 312  Глава 11.Атака на API

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

служба может использоваться разными клиентами.Вспомните о внеполосном

 

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

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

Резюме

Вэтой главе мы рассмотрели различные способы, облегчающие атаку на API. Описали два наиболее распространенных стандарта для веб-сервисов: SOAP и REST–и рассмотрели,какобрабатывается аутентификацияи какую рольиграюттокены JWT при безопасном обменеданными.Мы исследовали инструменты и расширения, которые помогают нам стать более эффективными.

Также мы поэкспериментировали с Postman и с идеей автоматического обнаружения уязвимостей и тестирования входов и конечных точек API.

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

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

целью получения прибыли.