Веб-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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
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):
// 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)
- Зареєструйте звичайний акаунт та отримайте автентифіковану сесію (cookies/headers).
- Перелічте background jobs або інші чутливі ресурси через процедури “list”/“all”/“status”.
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
- Викликати привілейовані дії, такі як перезапуск завдання:
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.
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).
Посилання
- https://github.com/Cyber-Guy1/API-SecurityEmpire
- How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.