# 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](http://www.dneonline.com/calculator.asmx) adresinden erişilebilir. - **REST APIs (JSON)**: Dokümantasyon genellikle WADL dosyalarında bulunur, ancak [Swagger UI](https://swagger.io/tools/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**](https://github.com/erev0s/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/.` 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): ```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 }), ``` Practical exploitation (black-box) 1) Normal bir hesap kaydı yapın ve kimlik doğrulanmış bir oturum (cookies/headers) edinin. 2) Arka plan işleri veya diğer hassas kaynakları “list”/“all”/“status” işlemleri aracılığıyla listeleyin. ```bash curl -s -X POST 'https:///api/trpc/backgroundMigrations.all' \ -H 'Content-Type: application/json' \ -b '' \ --data '{"input":{}}' ``` 3) bir işi yeniden başlatmak gibi ayrıcalıklı eylemleri çağırın: ```bash curl -s -X POST 'https:///api/trpc/backgroundMigrations.retry' \ -H 'Content-Type: application/json' \ -b '' \ --data '{"input":{"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**](https://github.com/assetnote/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. ```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**](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**](https://github.com/blst-security/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](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). - **API Security Checklist**: API'leri güvence altına almak için kapsamlı bir kontrol listesi ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). - **Logger++ Filters**: API zafiyetlerini avlarken, Logger++ faydalı filtreler sunar ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). - **API Endpoints List**: Test amaçlı potansiyel API endpoint'lerinin derlenmiş listesi ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). ## References - [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) - [How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study](https://www.depthfirst.com/post/how-an-authorization-flaw-reveals-a-common-security-blind-spot-cve-2025-59305-case-study) {{#include ../../banners/hacktricks-training.md}}