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

 

 

 

 

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

 

 

 

Аутентификация с помощью API  295 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

JWT4B значительно упрощает атаку реализаций JWT, поскольку может вы-

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

полнить частьтяжелой работы за нас.

Postman

Притестированиитипичноговеб-приложениясначаланастраиваемсистем­ ный прокси-сервер так, чтобы он указывал на Burp Suite. Теперь все наши запросы­ можно проверять, когда мы проходим приложение. Начинать атаки легко,потому что эти запросы создаютсядля нас с помощью пользовательского интерфейса, который Burp видит. Например, во время обычной операции пользователи вводят данные в поле поиска, а приложение создает GETили POST-запрос со всеми соответствующими параметрами перед их отправкой. Всеэтидействительныезапросытеперьдоступныдляповторноговоспроизведения,модификации и сканирования через перехватывающий прокси-сервер. Процесс обнаружения уязвимостей намного проще, когда есть пользовательский интерфейс,чтобы управлять генерацией трафика.

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

Postman –фантастический инструмент.Его можно использоватьдля создания набора запросов к целевому API, тем самым упрощая тестирование. Это особенно верно, если существует сотрудничество со стороны клиента и разработчиков. Для более эффективного использования времени тестирования клиенты могут предоставить нам набор уже сгенерированных запросов, что значительно ускорит процесс тестирования приложений.

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

Будучи хакерами, мы можем получить полностью готовую коллекцию от клиентаипростозапуститьеевсвоейсобственнойсреде.Мыточновидим,что API должен вести себя так,как надеялись разработчики.Postman также удобно поддерживает вышестоящие прокси-серверы, поэтому мы можем извлекать все надлежащим образом отформатированные запросы из Collection Runner

 

 

 

 

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

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

через Burp и быстро приступать к атаке с помощью модулей Intruder, Scanner

 

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

и Repeater.

Существует бесплатная версия Postman, которая поддерживает до 1000 вызовов в месяц, но если количество тестируемых API растет, версии Pro и Enterprise могут быть хорошим вложением.

Postman доступен в версиях Free,Pro и Enterprise здесь: https://

www.getpostman.com/.

В демонстрационных целях в этой главе мы будем использовать Docker-приложение с уязвимым API от Мэтта Вальдеса (Matt Valdes)

с сайта https://github.com/mattvaldes/vulnerable-api нашем примере API работаеттут:http://api.ecorp.local:8081/.

После установки Docker уязвимый API можно скачать и запустить с по­ мощью команды docker run из терминала Linux. Мы также можем указать порт,который нужно открытьв контейнере,используя опцию -p.Наконец,па- раметр --name будет указывать Docker, что нужно выбрать контейнер mkam/

vulnerable-api-demo.

root@kali:~# docker run -p 8081:8081 --name api mkam/vulnerable-api- demo

CRIT Supervisor running as root (no user in config file)

WARN Included extra file "/etc/supervisor/conf.d/vAPI.conf" during parsing

INFO RPC interface 'supervisor' initialized

CRIT Server 'unix_http_server' running without any HTTP authentication checking

INFO daemonizing the supervisord process INFO supervisord started with pid 10

system type 0x794c7630 for '/var/log/supervisor/supervisord.log'. please report this to bug-coreutils@gnu.org. reverting to polling

INFO spawned: 'vAPI' with pid 12

INFO success: vAPI entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Хотим протестировать функциональность? Можем использовать команду curl, чтобы выполнить GET-запрос для корневого URL-адреса для только что запущенного API.

root@kali:~# curl http://api.ecorp.local:8081/

{

"response": {

 

 

 

 

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

 

 

 

 

}

}

"Application": "vulnerable-api", "Status": "running"

Аутентификация с помощью API 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

297 BUY

 

 

 

 

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Установка

Существуют версии клиента Postman для Linux, Mac и Windows. Для ясности будем использовать клиента для Linux на нашей атакующей машине. В Windows и Mac установка довольно проста,но в Linux может понадобиться пара зависимостей для начала работы.

Клиент Postman – это приложение, созданное с использованием фреймворка Electron. Оно довольно переносимое, но для него требуется зависимость libgconf,доступная в репозиториях Kali. Ее можно установить, используя команду apt-get install из терминала.

root@kali:~/tools# apt-get install libgconf-2-4 Reading package lists... Done

Building dependency tree [...]

Чтобы получить последнюю скомпилированную сборку Postman, загрузим архив с расширением .gzip из его репозитория, доступного на сайте https:// dl.pstmn.io/download/latest/linux64, с помощью команды wget. Команда wget

сохранит файл в postman.tar.gz в локальном каталоге.

root@kali:~/tools# wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz

[...]

HTTP request sent, awaiting response... 200 OK Length: 78707727 (75M) [application/gzip] Saving to: 'postman.tar.gz'

[...]

Извлечем содержимое на диск в нашем каталоге tools с помощью команды tar zxvf, как показано ниже.

root@kali:~/tools# tar zxvf postman.tar.gz Postman/

Postman/snapshot_blob.bin [...]

 

 

 

 

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

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

После установки зависимостей можно запуститьPostman,вызвав предвари-

 

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

тельно скомпилированный двоичный файл Postman. Как и ожидалось, он находится в каталоге Postman/, который мы только что извлекли из архива.

root@kali:~/tools# ~/tools/Postman/Postman

Рис.11.8. Запуск клиента Postman для Linux

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

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

В качестве теста выполним тот же запрос, который создали ранее с помощью команды curl. Ответ появится на вкладке Body, изображенной на скриншоте (рис. 11.9), с возможностью форматировать содержимое. Postman может автоматически парсить и форматировать ответ в виде XML, HTML, JSON или обычного текста. Эта функция полезна, когда ответ представляет собой большой блок данных.

Одна из сильных сторон Postman заключается в его способности записывать все запросы,которые мы сделали в панели History (История) слева.Это позволяетнам,разработчикамAPI или QA-аналитикам,сохранять запросы и ответы в коллекциях.