API Recon (Detaylı Anlatım ve Uygulama Teknikleri)​

API Recon (veya API Discovery), bir hedef organizasyonun kullandığı veya maruz bıraktığı API endpoint'lerini, versiyonlarını, dokümantasyonlarını ve potansiyel zafiyetli uç noktalarını tespit etme sürecidir. Modern web uygulamalarının %90'ı API tabanlı çalıştığı için, bug bounty ve pentest'lerin en kritik aşamalarından biridir.


API Türleri (Güncel):​



API TürüAçıklamaÖrnek
REST APIEn yaygın, HTTP metotları (GET, POST, PUT, DELETE)/api/v1/users
GraphQLTek endpoint, sorgu tabanlı/graphql, /api/graphql
gRPCGoogle RPC, protobuf tabanlı:50051
SOAPXML tabanlı (eski)/soap, /webservice
WebSocketGerçek zamanlıws://, wss://
RPCUzaktan prosedür çağrısı/jsonrpc, /xmlrpc

API Keşif Yöntemleri:​

1. Path/Endpoint Fuzzing​

bash
# REST API endpoint'leri
ffuf -u https://hedef.com/api/FUZZ -w api_paths.txt -fs 0

# Versiyonlu API'ler
ffuf -u https://hedef.com/api/v1/FUZZ -w api_paths.txt -fs 0
ffuf -u https://hedef.com/api/v2/FUZZ -w api_paths.txt -fs 0
ffuf -u https://hedef.com/api/v3/FUZZ -w api_paths.txt -fs 0

# GraphQL
ffuf -u https://hedef.com/FUZZ -w graphql_paths.txt -fs 0
Yaygın API Path'leri:

text
/api
/api/v1
/api/v2
/api/v3
/rest
/rest/v1
/rest/v2
/graphql
/gql
/query
/rpc
/soap
/webservice
/ws
/jsonrpc
/xmlrpc

2. JavaScript Dosyaları​

bash
# JavaScript'ten API URL'leri çıkar
cat js_files.txt | grep -E '"/api/|/v1/|/graphql|/rest/|\.json|\.xml' | sort -u

# API base URL'leri
cat js_files.txt | grep -E 'baseURL|BASE_URL|apiUrl|API_URL' | cut -d '"' -f2

3. Wayback Machine​

bash
# Tarihsel API endpoint'leri
waybackurls hedef.com | grep -E '/api|/v1|/v2|/rest|/graphql' | sort -u
gau hedef.com | grep -E '/api|/v1|/v2|/rest|/graphql' | sort -u

4. Mobile Apps (Android/iOS)​

bash
# APK'dan API URL'leri çıkar
apktool d app.apk
grep -r "api\.hedef\.com" app/
strings app.apk | grep -E 'https?://[a-zA-Z0-9.-]+'

# iOS IPA
strings app.ipa | grep -E 'https?://[a-zA-Z0-9.-]+'

5. Documentation (Swagger/OpenAPI)​

bash
# Swagger endpoint'leri
ffuf -u https://hedef.com/FUZZ -w swagger_paths.txt -fs 0

# OpenAPI
curl -s https://hedef.com/swagger/v1/swagger.json
curl -s https://hedef.com/api/docs
curl -s https://hedef.com/api/swagger
curl -s https://hedef.com/swagger-ui
Yaygın Dokümantasyon Path'leri:

text
/swagger
/swagger-ui
/swagger-ui.html
/swagger/v1/swagger.json
/swagger/v2/swagger.json
/api-docs
/api-docs/swagger.json
/apidocs
/openapi
/openapi.json
/redoc
/rapidoc
/docs
/documentation

6. GitHub Dorking​

text
org:"hedef" api
org:"hedef" swagger
org:"hedef" openapi
org:"hedef" baseURL
org:"hedef" API_KEY
org:"hedef" endpoint
"https://api.hedef.com"

7. API Headers​

bash
# API header'larını tespit et
curl -sI https://hedef.com | grep -i 'api\|x-api\|x-request'

API Keşif Araçları:​

1. Kiterunner (Assetnote)​

Açıklama: API endpoint keşfi için özel olarak tasarlanmış fuzzing aracı.

Kurulum:

bash
go install github.com/assetnote/kiterunner@latest
Kullanım:

bash
# Tüm wordlist'leri listele
kr list

# API endpoint keşfi
kr brute -u https://hedef.com -w /usr/share/kiterunner/route-large.txt

# JSON çıktı
kr brute -u https://hedef.com -w routes-small.txt -j -o results.json

# Bulk işlem
cat urls.txt | kr brute -w routes-small.txt -j -o results.json

2. APKurlGrep​

Açıklama: APK dosyalarından URL ve API endpoint'leri çıkarma.

bash
git clone https://github.com/ndelphit/apkurlgrep
cd apkurlgrep
python apkurlgrep.py -f app.apk

3. GraphQL Introspection​

Açıklama: GraphQL endpoint'lerinden şema bilgisi çekme.

graphql
query {
__schema {
types {
name
fields {
name
type {
name
}
}
}
}
}
bash
# GraphQL endpoint'leri test et
curl -s -X POST -H "Content-Type: application/json" \
-d '{"query":"query{__schema{types{name}}}"}' \
https://hedef.com/graphql

4. Arjun (API Parametreleri)​

Açıklama: API parametre fuzzing.

bash
# API parametreleri bul
arjun -u https://hedef.com/api/users -m GET

# JSON body ile
arjun -u https://hedef.com/api/users -m POST --data '{"FUZZ":"test"}'

API Versiyon Keşfi:​

bash
# Versiyon kontrolü
for v in {1..10}; do
curl -s -o /dev/null -w "%{http_code} /api/v$v\n" https://hedef.com/api/v$v
done

# Eski versiyonlar (unutulmuş)
curl -s https://hedef.com/api/v1/users
curl -s https://hedef.com/api/v2/users
curl -s https://hedef.com/api/v3/users

API Authentication Keşfi:​



Auth TypeHeaders/Patterns
Bearer TokenAuthorization: Bearer {token}
API KeyX-API-Key: {key}, api_key={key}
JWTAuthorization: Bearer eyJ...
Basic AuthAuthorization: Basic {base64}
OAuthAuthorization: OAuth {token}
Custom HeaderX-Auth-Token, X-Session-ID
bash
# Auth header'larını tespit et
curl -sI https://hedef.com/api/users | grep -i 'authorization\|x-api\|x-auth'

API Recon Pipeline:​

bash
#!/bin/bash
# API Recon Pipeline

DOMAIN=$1
OUTPUT_DIR="api_recon_$DOMAIN"
mkdir -p $OUTPUT_DIR

echo "[1] API Endpoint Discovery"

# Path fuzzing
kr brute -u https://$DOMAIN -w routes-large.txt -o $OUTPUT_DIR/kiterunner.json

# Wayback Machine
waybackurls $DOMAIN | grep -E '/api|/v[0-9]|/graphql|/rest' > $OUTPUT_DIR/wayback_api.txt
gau $DOMAIN | grep -E '/api|/v[0-9]|/graphql|/rest' >> $OUTPUT_DIR/wayback_api.txt

# JavaScript'ten
cat js_files.txt | grep -E '"/api/|/v[0-9]/|/graphql|/rest"' > $OUTPUT_DIR/js_api.txt

echo "[2] API Documentation Discovery"

# Swagger/OpenAPI
for path in swagger swagger-ui api-docs openapi; do
curl -s "https://$DOMAIN/$path" -o /dev/null -w "%{http_code} $path\n"
done > $OUTPUT_DIR/docs_status.txt

echo "[3] API Version Discovery"
for v in {1..10}; do
curl -s "https://$DOMAIN/api/v$v/users" -o /dev/null -w "%{http_code} v$v\n"
done > $OUTPUT_DIR/version_status.txt

echo "[4] GraphQL Discovery"
curl -s -X POST "https://$DOMAIN/graphql" \
-H "Content-Type: application/json" \
-d '{"query":"query{__schema{types{name}}}"}' \
-o $OUTPUT_DIR/graphql_schema.txt

echo "[5] Result"
cat $OUTPUT_DIR/*.txt > $OUTPUT_DIR/all_api_endpoints.txt
sort -u $OUTPUT_DIR/all_api_endpoints.txt

API Recon Kontrol Listesi:​

A. Endpoint Keşfi:​

  • Path fuzzing yapıldı mı?
  • JavaScript dosyaları analiz edildi mi?
  • Wayback Machine kontrolü yapıldı mı?
  • Mobile uygulamalar analiz edildi mi?

B. Dokümantasyon:​

  • Swagger/OpenAPI bulundu mu?
  • API dökümanları bulundu mu?
  • GraphQL introspection yapıldı mı?

C. Versiyonlar:​

  • Farklı API versiyonları bulundu mu?
  • Eski/unutulmuş versiyonlar bulundu mu?

D. Authentication:​

  • API auth mekanizması tespit edildi mi?
  • Auth header'ları bulundu mu?
  • API key pattern'leri bulundu mu?

Güncel API Recon İpuçları (2026):​

  1. GraphQL: Introspection genellikle kapalı ama bazen açık kalır → test et!
  2. gRPC: :50051 portu, protobuf dosyaları (.proto) ara
  3. WebSocket: ws://, wss:// endpoint'leri test et
  4. API Gateways: AWS API Gateway, Kong, Tyk → ek zafiyet yüzeyi
  5. Internal APIs: internal-api.hedef.com, admin-api.hedef.com → DNS'ten bul
  6. Serverless: AWS Lambda, Azure Functions, GCP Cloud Functions → bucket benzeri yapılar
  7. Kubernetes: /api/v1/namespaces, /api/v1/pods → internal API'ler

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
133,678Konular
3,288,743Mesajlar
324,392Kullanıcılar
PhotokotteSon Üye
Üst Alt