# Web API Pentesting {{#include ../../banners/hacktricks-training.md}} ## API Pentesting Metodolojisi Özeti API'leri pentest etmek, zayıflıkları ortaya çıkarmak için yapılandırılmış bir yaklaşım içerir. Bu kılavuz, pratik teknikler ve araçlara vurgu yaparak kapsamlı bir metodolojiyi kapsar. ### **API Türlerini Anlamak** - **SOAP/XML Web Servisleri**: Dokümantasyon için genellikle `?wsdl` yollarında bulunan WSDL formatını kullanır. **SOAPUI** ve **WSDLer** (Burp Suite Eklentisi) istekleri ayrıştırmak ve oluşturmak için önemlidir. Örnek dokümantasyon [DNE Online](http://www.dneonline.com/calculator.asmx) adresinde mevcuttur. - **REST API'leri (JSON)**: Dokümantasyon genellikle WADL dosyalarında gelir, 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 istekleri oluşturmak ve yönetmek için değerli bir araçtır. - **GraphQL**: API'ler için, API'nizdeki verilerin tam ve anlaşılır bir tanımını sunan bir sorgu dilidir. ### **Uygulama Laboratuvarları** - [**VAmPI**](https://github.com/erev0s/VAmPI): OWASP'ın en iyi 10 API zayıflığını kapsayan, uygulamalı pratik için kasıtlı olarak zayıf bir API. ### **API Pentesting için Etkili İpuçları** - **SOAP/XML Zayıflıkları**: XXE zayıflıklarını keşfedin, ancak DTD bildirimleri genellikle kısıtlıdır. XML geçerli kaldığı sürece CDATA etiketleri yük eklemeye izin verebilir. - **Yetki Yükseltme**: Yetkisiz erişim olasılıklarını belirlemek için farklı yetki seviyelerine sahip uç noktaları test edin. - **CORS Yanlış Yapılandırmaları**: Kimlik doğrulama oturumlarından CSRF saldırıları yoluyla potansiyel istismar edilebilirlik için CORS ayarlarını araştırın. - **Uç Nokta Keşfi**: Gizli uç noktaları keşfetmek için API desenlerinden yararlanın. Fuzzer gibi araçlar bu süreci otomatikleştirebilir. - **Parametre Manipülasyonu**: Yetkisiz verilere veya işlevlere erişmek için isteklerde parametre eklemeyi veya değiştirmeyi deneyin. - **HTTP Yöntemi Testi**: Beklenmedik davranışları veya bilgi sızıntılarını ortaya çıkarmak için istek yöntemlerini (GET, POST, PUT, DELETE, PATCH) değiştirin. - **İçerik Türü Manipülasyonu**: Ayrıştırma sorunları veya zayıflıkları test etmek için farklı içerik türleri (x-www-form-urlencoded, application/xml, application/json) arasında geçiş yapın. - **Gelişmiş Parametre Teknikleri**: JSON yüklerinde beklenmedik veri türleri ile test edin veya XXE enjeksiyonları için XML verileri ile oynayın. Ayrıca, daha geniş testler için parametre kirliliği ve joker karakterler deneyin. - **Sürüm Testi**: Eski API sürümleri saldırılara daha duyarlı olabilir. Her zaman birden fazla API sürümünü kontrol edin ve test edin. ### **API Pentesting için Araçlar ve Kaynaklar** - [**kiterunner**](https://github.com/assetnote/kiterunner): API uç noktalarını keşfetmek için mükemmel. Hedef API'lere karşı yolları ve parametreleri taramak ve kaba kuvvetle denemek 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, zayıf kimlik doğrulama için ilişkili API uç noktalarını kontrol ederek **açık Swagger/OpenAPI tanım dosyalarının** denetimine yardımcı olmak üzere tasarlanmış bir komut satırı aracıdır. Ayrıca manuel güvenlik testi için komut şablonları sağlar. - **automatic-api-attack-tool**, **Astra** ve **restler-fuzzer** gibi ek araçlar, saldırı simülasyonundan fuzzing ve güvenlik taramasına kadar API güvenlik testi için özel işlevler sunar. - [**Cherrybomb**](https://github.com/blst-security/cherrybomb): OAS dosyasına dayalı olarak API'nizi denetleyen bir API güvenlik aracıdır (araç rust ile yazılmıştır). ### **Öğrenme ve Pratik Kaynakları** - **OWASP API Güvenliği En İyi 10**: Yaygın API güvenlik açıklarını 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 Güvenlik Kontrol Listesi**: API'leri güvence altına almak için kapsamlı bir kontrol listesi ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). - **Logger++ Filtreleri**: API güvenlik açıklarını avlamak için Logger++, yararlı filtreler sunar ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). - **API Uç Noktaları Listesi**: Test amaçları için potansiyel API uç noktalarının derlenmiş bir listesi ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). ## Referanslar - [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) {{#include ../../banners/hacktricks-training.md}}