Веб-API Pentesting

Reading time: 6 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

API Pentesting — короткий огляд методології

Pentesting API вимагає структурованого підходу для виявлення вразливостей. Цей посібник узагальнює всебічну методологію, акцентуючи на практичних техніках та інструментах.

Розуміння типів API

  • SOAP/XML Web Services: використовують формат WSDL для документації, зазвичай доступний за шляхами ?wsdl. Інструменти як SOAPUI та WSDLer (Burp Suite Extension) корисні для парсингу та генерації запитів. Приклад документації доступний на DNE Online.
  • REST APIs (JSON): документація часто постає у вигляді WADL-файлів, але інструменти як Swagger UI надають зручніший інтерфейс для взаємодії. Postman — цінний інструмент для створення та керування прикладами запитів.
  • GraphQL: мова запитів для API, яка надає повний і зрозумілий опис даних у вашому API.

Практичні стенди

  • VAmPI: навмисно вразливий API для практики, охоплює OWASP top 10 API vulnerabilities.

Ефективні трюки для API Pentesting

  • SOAP/XML Vulnerabilities: перевіряйте XXE, хоча декларації DTD часто відключені. Теги CDATA можуть дозволити вставку payload, якщо XML залишається валідним.
  • Privilege Escalation: тестуйте ендпоінти з різними рівнями привілеїв, щоб виявити можливості несанкціонованого доступу.
  • CORS Misconfigurations: досліджуйте налаштування CORS на предмет можливого експлуатування через CSRF із сесій, що вже автентифіковані.
  • Endpoint Discovery: використовуйте патерни API для виявлення прихованих ендпоінтів. Інструменти-фаззери можуть автоматизувати цей процес.
  • Parameter Tampering: експериментуйте з додаванням або заміною параметрів у запитах, щоб отримати неавторизований доступ до даних або функціональностей.
  • HTTP Method Testing: змінюйте методи запитів (GET, POST, PUT, DELETE, PATCH) щоб знайти несподівану поведінку або витоки інформації.
  • Content-Type Manipulation: перемикайтеся між різними content-type (x-www-form-urlencoded, application/xml, application/json) щоб перевірити проблеми парсингу або вразливості.
  • Advanced Parameter Techniques: тестуйте несподівані типи даних в JSON-пейлоадах або експериментуйте з XML для XXE-ін’єкцій. Також пробуйте parameter pollution та wildcard-символи для ширшого охоплення тестів.
  • Version Testing: старі версії API можуть бути більш вразливими. Завжди перевіряйте і тестуйте кілька версій API.

Авторизація та бізнес-логіка (AuthN != AuthZ) — підводні камені tRPC/Zod protectedProcedure

Сучасні TypeScript-стеки часто використовують tRPC разом із Zod для валідації вводу. У tRPC protectedProcedure зазвичай гарантує наявність валідної сесії (authentication), але не означає, що виконавець має потрібну роль/дозволи (authorization). Така невідповідність призводить до Broken Function Level Authorization/BOLA, якщо чутливі процедури захищені лише через protectedProcedure.

  • Модель загрози: будь-який користувач з низькими привілеями та автентифікацією може викликати процедури рівня адміністратора, якщо відсутні перевірки ролей/дозволів (наприклад, background migrations, feature flags, tenant-wide maintenance, job control).
  • Чорнокоробковий сигнал: ендпоінти POST /api/trpc/<router>.<procedure> які працюють для базових акаунтів, тоді як вони повинні бути доступні лише адміністраторам. Self-serve signups значно підвищують можливість експлуатації.
  • Типова форма маршруту tRPC (v10+): JSON-тіло загорнуте під {"input": {...}}.

Example vulnerable pattern (no role/permission gate):

ts
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),

Практична експлуатація (black-box)

  1. Зареєструйте звичайний акаунт та отримайте автентифіковану сесію (cookies/headers).
  2. Перелічте background jobs або інші чутливі ресурси через процедури “list”/“all”/“status”.
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. Викликати привілейовані дії, такі як перезапуск завдання:
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'

Вплив для оцінки

  • Пошкодження даних через неідемпотентні перезапуски: примусовий одночасний запуск міграцій/воркерів може створити умови гонки та неконсистентні часткові стани (прихована втрата даних, зламані аналітичні звіти).
  • DoS via worker/DB starvation: повторне ініціювання важких завдань може вичерпати пул воркерів і з'єднання з базою даних, спричиняючи відмови, що охоплюють усіх орендарів.

Інструменти та ресурси для API Pentesting

  • kiterunner: Відмінний для виявлення API endpoints. Використовуйте його для сканування та brute force шляхів і параметрів проти цільових API.
bash
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
  • https://github.com/BishopFox/sj: sj — це command line tool, призначений, щоб допомогти з auditing exposed Swagger/OpenAPI definition files шляхом перевірки пов'язаних API endpoints на наявність weak authentication. Також надає command templates для manual vulnerability testing.
  • Додаткові інструменти, такі як automatic-api-attack-tool, Astra та restler-fuzzer, пропонують спеціалізовані функції для API security testing, від attack simulation до fuzzing та vulnerability scanning.
  • Cherrybomb: Це API security tool, який проводить аудит вашого API на основі OAS file (інструмент написаний на rust).

Ресурси для навчання та практики

  • OWASP API Security Top 10: Обов'язкове читання для розуміння common API vulnerabilities (OWASP Top 10).
  • API Security Checklist: Всебічний checklist для захисту API (GitHub link).
  • Logger++ Filters: Для пошуку API vulnerabilities, Logger++ пропонує корисні filters (GitHub link).
  • API Endpoints List: Курована list потенційних API endpoints для testing purposes (GitHub gist).

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks