Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
automatic-api-attack-tool — Инструмент Imperva для настраиваемых атак на API принимает в качестве входных данных спецификацию API, а в качестве выходных данных генерирует и запускает атаки, основанные на ней. | Kitploit
Инструменты/GitHubGitHub/imperva/automatic-api-attack-tool
Сканеры уязвимостейЭксплуатация веб-приложенийТестирование безопасности APIФаззинг
GitHubimperva/automatic-api-attack-tool

automatic-api-attack-tool

Инструмент Imperva для настраиваемых атак на API принимает в качестве входных данных спецификацию API, а в качестве выходных данных генерирует и запускает атаки, основанные на ней.

Репозиторий
495936 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Инструмент для автоматических атак на API

Настраиваемый инструмент для атак на API от Imperva принимает на вход спецификацию API, а на выходе генерирует и выполняет атаки на её основе.

Инструмент умеет анализировать спецификацию API и создавать сценарии фаззинга на основе того, что в ней определено. В каждую конечную точку внедряются грамотно сгенерированные значения в рамках границ, заданных спецификацией, а также за их пределами; отправляются соответствующие запросы, и их успех или неудача подробно фиксируются. Вы также можете расширить инструмент для выполнения различных векторов атак безопасности, таких как несанкционированный доступ к ресурсам, XSS, SQLi и RFI, направленных на существующие или даже несуществующие конечные точки. Вмешательство человека не требуется. Просто запустите инструмент и получите результаты.

Инструмент легко расширяется для адаптации к различным потребностям, например, для разработчика, желающего протестировать своё API, или организации, которая хочет регулярно проводить сканирование уязвимостей или позитивные проверки безопасности своего публичного API. Он создан с учётом CI/CD.

Требования

  • Java 8 или выше
  • Gradle

Запуск

  • Загрузите код из GitHub и выполните ./gradlew build или gradlew.bat build в Windows
  • Исполняемый jar-файл можно найти в папке build/libs
  • Выполните java -jar imperva-api-attack-tool.jar, чтобы увидеть меню справки

Создание исполняемого файла Linux

  • Скопируйте файл runnable.sh из папки src/main/resources в ту же директорию, где находится jar-файл.
  • Теперь выполните: cat runnable.sh imperva-api-attack-tool.jar > api-attack.sh && chmod +x api-attack.sh
  • Вы можете использовать файл api-attack.sh как обычный исполняемый файл

Использование

Обязательные параметры:

-f, --specFile=specFilePath

Файл спецификации API (swagger 2.0), по которому выполняется работа. Формат JSON/YAML. Для лучших результатов убедитесь, что для каждой конечной точки правильно определены ответы.

-n, --hostName=hostName

Имя хоста для подключения. Может быть также IP-адресом.

-s, --hostScheme=hostScheme

Подключение к хосту будет выполняться по этой схеме; например: https или http

Необязательные параметры:

-p, --hostPort=hostPort

Порт, на котором хост принимает вызовы API, по умолчанию: 443

-ph, --proxyHost=proxyHost

Укажите прокси-хост для отправки запросов через прокси

-pp, --proxyPort=proxyPort

Порт прокси, по умолчанию: 80

-rcn, --addNegativeRC=responseCode[,responseCode...]

Дополнительные коды ответа, которые будут приняты при негативных проверках (например, атаки с некорректными значениями). Поддерживается несколько значений, разделённых запятыми

-rcp, --addPositiveRC=responseCode[,responseCode...]

Дополнительные коды ответа, которые будут приняты при позитивных проверках (атаки с легитимными значениями). Поддерживается несколько значений, разделённых запятыми

 

Типичные сценарии использования:

  • Вы хотите проверить, защищено ли ваше API решением для безопасности API.

    Пример запуска: api-attack.sh -f swaggerPetStore.json -n myapisite.com -s http -rcn=403

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

  • Вы хотите проверить, как ваш прокси-сервер смягчает атаки на API, но у вас нет за ним реального сайта.

    Пример запуска: api-attack.sh -f swaggerPetStore.json -n myapisite.com -s http -ph 127.0.0.1 -pp=4010 -rcn=403 -rcp=404

    На этот раз мы добавили код состояния 404 в позитивные сценарии. Таким образом, если сценарий не блокируется, мы не будем сообщать об ошибке, а примем легитимный ответ 404 (ресурс не найден).

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

    Пример запуска: api-attack.sh -f myapi_swagger.yaml -n staging.myorg.com -s https

    На этот раз мы запускаем без каких-либо исключений. Файл спецификации API должен точно объявлять коды ответов. Инструмент будет принимать только их как легитимные, иначе проверка будет считаться проваленной. Подробнее об условиях провала проверки см. ниже. Запустите указанную выше команду в задании Jenkins (или в любом другом подходящем программном обеспечении CI/CD), которое будет запускаться по cron или при push кода в репозиторий. Убедитесь, что установлен плагин TestNG, который должен анализировать результаты, записанные в build/testng-results, для лучшей видимости в сценарии CI/CD.

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

    Пример запуска: api-attack.sh -f publiclyAvailableSwaggerOfAPI.yaml -n api.corporate.com -s https

  • Вы хотите проверить, правильно ли реализовано ваше API на стороне сервера, и соответствует ли его определение реализации сервера.

    Пример запуска: api-attack.sh -f publiclyAvailableSwaggerOfAPI.yaml -n api.corporate.com -s https

Условия провала проверок

  • Инструмент проверяет, соответствует ли код ответа сгенерированного запроса объявленным кодам ответов в swagger. Однако:
  • Позитивные проверки: если это явная ошибка (код 5xx), мы всё равно провалим проверку, даже если этот код ответа не определён в спецификации, но не в случае, если вы указали переопределение.
  • Негативные проверки: если ответ не является легитимной ошибкой (1xx, 2xx, 5xx), мы проваливаем проверку, если вы не указали переопределение. Если легитимный код ошибки отсутствует в спецификации, проверка также будет провалена.
  • Вы можете использовать определение 'default' в разделе ответов swagger, но это не рекомендуется. Всегда точно определяйте свои легитимные ответы.

Условия провала проверок

  • Инструмент проверяет, соответствует ли код ответа сгенерированного запроса объявленным кодам ответов в swagger. Однако:
  • Позитивные проверки: если это явная ошибка (код 5xx), мы всё равно провалим проверку, даже если этот код ответа не определён в спецификации, но не в случае, если вы указали переопределение.
  • Негативные проверки: если ответ не является легитимной ошибкой (1xx, 2xx, 5xx), мы проваливаем проверку, если вы не указали переопределение. Если легитимный код ошибки отсутствует в спецификации, проверка также будет провалена.
  • Вы можете использовать определение 'default' в разделе ответов swagger, но это не рекомендуется. Всегда точно определяйте свои легитимные ответы.

Ожидаемые результаты:

  • Инструмент использует платформу отчётности testng, поэтому можно использовать любой плагин, работающий с testng. Обратите внимание: результаты записываются в папку build/testng-results. Это, конечно, можно изменить.
  • Инструмент генерирует запросы в соответствии со своими наборами проверок, и каждый запрос проверяет что-то конкретное. Таким образом, каждая проверка выводит все соответствующие детали в командную строку, включая то, что проверяется, каков ответ и соответствует ли он ожиданиям.
  • Любые некорректные запросы будут сохранены в папку bad_requests, чтобы вы могли проанализировать их позже (например, если это выполняется на сервере CI/CD, и у вас нет немедленного доступа к машине).
  • В конце вы получите сводку.
Пример негативной проверки, которая провалилась:
root@kitploit:~
***** Testing API Endpoint *****
***** Test ID: 1575128763286-74212
Testing: Bad Property: /username (STRING), value: {, URL encoded: %7B
--> Url: /user/{
--> Method: GET
--> Headers: []
----------**----------
Request was: GET /user/{ [Accept: application/json], Response status code: 200(UNEXPECTED)
Response (non parsed):
{"id":0,"username":"string","firstName":"string","lastName":"string","email":"string","password":"string","phone":"string","userStatus":0}

Почему проверка провалилась? Запрос получил код 200, хотя URL не был корректным.

Другой пример:
root@kitploit:~
***** Testing API Endpoint *****
***** Test ID: 1575128763286-25078
Testing: Bad Property: /body/quantity (INTEGER), value: 0.4188493, URL encoded: 0.4188493
--> Url: /store/order
--> Method: POST
--> Headers: []
--> Body: {"petId":-2511515111206893939,"quantity":0.4188493,"id":698757161286106823,"shipDate":"�s","complete":"true","status":"approved"}
----------**----------
Request was: POST /store/order [Accept: application/json], Response status code: 200(UNEXPECTED)
Response (non parsed):
{"id":0,"petId":0,"quantity":0,"shipDate":"2019-11-30T15:46:03Z","status":"placed","complete":false}

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

Пример успешной проверки:
root@kitploit:~
***** Testing API Endpoint *****
***** Test ID: 1575128763137-43035
Testing: /user/{username}
--> Url: /user/%E68E97EDB4Oq-(!BbG,Y$p'A-KW%65f9FA6jt5vvDz-cW.QGsLS+AA~RIHC3wgy25lDJsGzcT.;kJ+(
--> Method: GET
--> Headers: []
----------**----------
Request was: GET /user/%E68E97EDB4Oq-(!BbG,Y$p'A-KW%65f9FA6jt5vvDz-cW.QGsLS+AA~RIHC3wgy25lDJsGzcT.;kJ+( [Accept: application/json], Response status code: 404
Response (non parsed):
{"statusCode":404,"error":"Not Found","message":"Not Found"}

Мы указали имя пользователя, которое не существует, но является допустимым в соответствии со спецификацией API. Сервер правильно обработал этот запрос и вернул легитимную ошибку.

Поддерживаемые сценарии проверок

Здесь мы используем термин конечная точка как пару URL конечной точки и метод.

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

Мы работаем над переносом других наших сценариев в инструмент с открытым исходным кодом на благо сообщества. Следите за обновлениями.

Расширяемость

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

Получение помощи

Если у вас есть вопросы по библиотеке, обязательно ознакомьтесь с документацией по исходному коду. Если вопросы остались, свяжитесь со мной по электронной почте: boris.serebro(at)imperva(dot)com.

Сообщение об ошибках

Пожалуйста, откройте Issue на GitHub и включите как можно больше информации. По возможности предоставьте пример кода, иллюстрирующий проблему, с которой вы столкнулись. Если ошибка возникает только в определённом репозитории, по возможности укажите ссылку на него. Не открывайте Issue на GitHub для получения помощи, только для сообщений об ошибках.

Скачать инструмент