7.6 KiB
Web API Pentesting
{{#include ../../banners/hacktricks-training.md}}
API Pentesting Metodolojisi Özeti
Pentesting APIs, güvenlik açıklarını ortaya çıkarmak için yapılandırılmış bir yaklaşım gerektirir. Bu rehber, pratik teknikler ve araçlara vurgu yapan kapsamlı bir metodolojiyi özetler.
Understanding API Types
- SOAP/XML Web Services: Dokümantasyon için genellikle
?wsdl
yollarında bulunan WSDL formatını kullanın. SOAPUI ve WSDLer (Burp Suite Extension) gibi araçlar istekleri parse etmek ve oluşturmak için hayati öneme sahiptir. Örnek dokümantasyona DNE Online adresinden erişilebilir. - REST APIs (JSON): Dokümantasyon genellikle WADL dosyalarında bulunur, ancak Swagger UI gibi araçlar etkileşim için daha kullanıcı dostu bir arayüz sağlar. Postman örnek istekler oluşturmak ve yönetmek için değerli bir araçtır.
- GraphQL: API'ler için, API'deki verilerin tam ve anlaşılabilir bir tanımını sunan bir sorgu dili.
Practice Labs
- VAmPI: Eller-on uygulama için kasıtlı olarak zafiyetli bir API; OWASP top 10 API zafiyetlerini kapsar.
Effective Tricks for API Pentesting
- SOAP/XML Vulnerabilities: XXE zafiyetlerini inceleyin, ancak DTD deklarasyonları genellikle kısıtlanır. XML geçerli kaldığı sürece CDATA etiketleri payload yerleştirmesine izin verebilir.
- Privilege Escalation: Farklı yetki seviyelerine sahip endpoint'leri test ederek yetkisiz erişim imkanlarını tespit edin.
- CORS Misconfigurations: Kimlikli oturumlardan gelen CSRF saldırıları yoluyla sömürülebilirlik potansiyeli için CORS ayarlarını inceleyin.
- Endpoint Discovery: Gizli endpoint'leri keşfetmek için API pattern'lerinden yararlanın. Fuzzers gibi araçlar bu süreci otomatikleştirebilir.
- Parameter Tampering: İsteklere parametre ekleyip/yer değiştirerek yetkisiz veri veya fonksiyonlara erişimi test edin.
- HTTP Method Testing: Beklenmeyen davranışları veya bilgi sızıntılarını ortaya çıkarmak için istek yöntemlerini (GET, POST, PUT, DELETE, PATCH) değiştirin.
- Content-Type Manipulation: Parsing sorunları veya zafiyetleri test etmek için farklı Content-Type'lar (x-www-form-urlencoded, application/xml, application/json) arasında geçiş yapın.
- Advanced Parameter Techniques: JSON payload'larında beklenmeyen veri tipleri ile test edin veya XXE enjeksiyonları için XML verileriyle oynayın. Ayrıca daha geniş kapsamlı testler için parameter pollution ve wildcard karakterleri deneyin.
- Version Testing: Eski API versiyonları saldırılara daha açık olabilir. Her zaman birden fazla API versiyonunu kontrol edin ve test edin.
Authorization & Business Logic (AuthN != AuthZ) — tRPC/Zod protectedProcedure pitfalls
Modern TypeScript stack'leri genellikle input validasyonu için tRPC ile Zod kullanır. tRPC'de protectedProcedure
tipik olarak isteğin geçerli bir oturuma (authentication) sahip olduğunu doğrular ancak çağıranın doğru rol/izinlere (authorization) sahip olduğunu garanti etmez. Bu uyumsuzluk, hassas prosedürler yalnızca protectedProcedure
ile sınırlandırılmışsa Broken Function Level Authorization/BOLA'ya yol açar.
- Threat model: Rol kontrolleri eksikse, düşük ayrıcalıklı herhangi bir kimlik doğrulanmış kullanıcı admin düzeyindeki prosedürleri çağırabilir (ör. background migrations, feature flags, tenant-wide maintenance, job control).
- Black-box signal:
POST /api/trpc/<router>.<procedure>
endpoint'leri, admin-only olması gereken işlemler için temel hesaplarda başarılı oluyorsa. Self-serve signups istismar edilebilirliği önemli ölçüde artırır. - Typical tRPC route shape (v10+): JSON body wrapped under
{"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
}),
Practical exploitation (black-box)
- Normal bir hesap kaydı yapın ve kimlik doğrulanmış bir oturum (cookies/headers) edinin.
- Arka plan işleri veya diğer hassas kaynakları “list”/“all”/“status” işlemleri aracılığıyla listeleyin.
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
- bir işi yeniden başlatmak gibi ayrıcalıklı eylemleri çağırın:
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'
Değerlendirilecek etkiler
- Non-idempotent restarts yoluyla veri bozulması: Migrations/workers'ın eşzamanlı çalıştırılmasını zorlamak yarış durumları ve tutarsız kısmi durumlar yaratabilir (fark edilmeden veri kaybı, bozuk analizler).
- DoS via worker/DB starvation: Ağır işleri tekrar tekrar tetiklemek worker havuzlarını ve database bağlantılarını tüketebilir; bu da tenant genelinde kesintilere neden olur.
API Pentesting için Araçlar ve Kaynaklar
- kiterunner: API endpoint'lerini keşfetmek için mükemmel. Hedef API'lere karşı yolları ve parametreleri taramak ve brute force yapmak için kullanın.
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, ilişkili API endpoints için weak authentication'ı kontrol ederek exposed Swagger/OpenAPI definition files'ın denetimine yardımcı olmak üzere tasarlanmış bir komut satırı aracıdır. Ayrıca manuel zafiyet testi için komut şablonları sağlar.
- automatic-api-attack-tool, Astra ve restler-fuzzer gibi ek araçlar, attack simulation'dan fuzzing ve vulnerability scanning'e kadar API güvenlik testi için özelleştirilmiş işlevsellikler sunar.
- Cherrybomb: OAS file'a dayalı olarak API'nizi denetleyen bir API security tool'udur (araç rust ile yazılmıştır).
Learning and Practice Resources
- OWASP API Security Top 10: Ortak API zafiyetlerini anlamak için temel bir okuma (OWASP Top 10).
- API Security Checklist: API'leri güvence altına almak için kapsamlı bir kontrol listesi (GitHub link).
- Logger++ Filters: API zafiyetlerini avlarken, Logger++ faydalı filtreler sunar (GitHub link).
- API Endpoints List: Test amaçlı potansiyel API endpoint'lerinin derlenmiş listesi (GitHub gist).
References
- https://github.com/Cyber-Guy1/API-SecurityEmpire
- How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study
{{#include ../../banners/hacktricks-training.md}}