API penetration is a must-have skill for any penetration tester, especially because all modern software relies on APIs. If you know how to test APIs, you’ll:
- Find real vulnerabilities 🐞
- Write better bug bounty reports 💰
- Build more secure software 🔐
🧠 What is an API?
An API (Application Programming Interface) allows communication between two programs.
It can be compared to a waiter in a restaurant:
- The client (you) orders food
- Waiter processes request
- Sends it to kitchen and brings back results
Example of the API request/response cycle:
GET /api/v1/users/123
Authorization: Bearer token{
"id": 123,
"name": "Rahul",
"email": "rahul@example.com"
}⚠️ Why are APIs dangerous?
Unlike frontend applications, APIs:
- Return raw data
- Usually have less UI protection
- Can be poorly protected from attacks
Therefore, the attackers target specific endpoints and steal information.
🛠️ Basic Tools for API Pen Testing
Postman / Insomnia
Burp Suite
curl
Devtools (browser console)
🛠️ Advanced Tools for API Pen Testing
OWASP ZAP
ffuf / wfuzz (fuzzing)
Swagger documents
⚔️ API Pentest: Detailed List of Attacks (Critical)
And now, we will cover each potential vulnerability with an explanation and example.
1. 🔓 Broken Object Level Authorization (BOLA)
💡 Description:
Application trust user input (ID) without verification.
❌ Vulnerable Example:
GET /api/user/123
GET /api/user/124In case when you change user ID and get info about other users -> 💥
🧠 Attacker’s Action Plan:
Log in as normal user and:
- Change user id in a request to see all users’ info
💥 Potential Consequence:
Data breach
✅ Protection against this vulnerability:
Always add the following check:
Does this user have access to this particular resource?
2. 🔒 Broken Authentication
💡 Description:
Weak login/token system.
❌ Examples of Vulnerabilities:
- No token expiration date
- Predictable tokens
- No logout invalidation
🧠 Attack Scenarios:
1. Token Reuse Attack
Use previously received token again
2. Brute Force Attack
No password attempts limitation
3. Token Leakage
Store token in:
- URL parameters
- Client-side local storage (unsafe)
💥 Potential Consequences:
Account takeover
✅ Protection against this vulnerability:
Use the following protection mechanisms:
Expiry tokens
MFA (2FA)
Secure storage
3. 🧾 Broken Object Property Authorization
💡 Description:
The user can modify properties that he/she is not supposed to.
❌ Example:
PUT /api/user/123
{
"name": "Rahul",
"role": "admin"
}If application receives this request and applies it -> 💀 critical vulnerability
🧠 Attacker’s Action Plan:
Change role parameter to admin
💥 Potential Consequence:
Privilege Escalation
✅ Protection against this vulnerability:
Use:
Whitelist validation
Ignore suspicious fields provided by users
4. 🚀 Unrestricted Resource Consumption
💡 Description:
No limitations on the consumption of resources.
🧠 Attack Types:
1. DoS Attack
Send:
- Large payload
- Multiple requests per second
2. Expensive Queries Attack
GET /api/search?query=aaaaaa...aaaaaYour database crashes because the query takes too much time.
💥 Potential Consequences:
Overload
✅ Protection against this vulnerability:
Use rate limits
Set up request size and time-out limitations
5. 🛑 Broken Function Level Authorization
💡 Description:
The user has unauthorized access to administrative functions.
❌ Example:
POST /api/admin/deleteUserThis endpoint should be only accessible to admins.
🧠 Attacker’s Action Plan:
Log in as user and:
- Intercepts HTTP request
- Modify its path to gain admin permissions
💥 Potential Consequence:
Execute any administrative function
✅ Protection against this vulnerability:
Use RBAC (Role-Based Access Control)
6. 🚚 Unrestricted Business Flow
💡 Description:
Improper business logic that allows the attacker to exploit a certain process.
🧠 Examples of Attacks:
OTP Abuse Attack
POST /api/send-otpNo restriction for the frequency of sending OTPs
Payment Logic Attack
Apply discount coupons as many times as you want
Password Reset Attack
Re-use password reset token several times
💥 Potential Consequence:
Financial Loss
✅ Protection against this vulnerability:
Implement flow restrictions
7. 🌐 SSRF — Server-Side Request Forgery
💡 Description:
API acts as a proxy and fetches data on behalf of the attacker.
❌ Example:
POST /api/fetch
{
"url": "http://internal-service"
}🧠 Attacker’s Action Plan:
Change this parameter to:
http://localhost:8080/admin💥 Potential Consequence:
Internal API service exposure
✅ Protection against this vulnerability:
Validate URL and IP addresses.
Block internal services.
8. ⚙️ Security Misconfiguration
💡 Description:
Improper configuration causes API vulnerabilities.
❌ Vulnerabilities:
- Debug mode is enabled
- Showing stack traces in error messages
- Default usernames and passwords
🧠 Attacker’s Action Plan:
Simply read:
- All error messages
- Hidden server paths
💥 Potential Consequence:
Information Leakage
✅ Protection against this vulnerability:
Disable debug mode
Hide error pages
9. 📦 Improper Inventory Management
💡 Description:
Outdated APIs can be exploited.
❌ Vulnerability:
/api/v1/login
/api/v2/login🧠 Attacker’s Action Plan:
Find deprecated endpoints
They usually have no authentication mechanism
💥 Potential Consequence:
Easiest way to gain access to the system
✅ Protection against this vulnerability:
Keep track of all APIs and their deprecation dates
10. 🔗 Unsafe API Consumption
💡 Description:
Untrusted third party APIs.
🧠 Attacker’s Action Plan:
The third-party API returns a response with an injection:
<script>alert(1)</script>💥 Potential Consequence:
XSS attack
✅ Protection against this vulnerability:
Sanitize third party responses.
🧪 API Pen Test Step-by-Step Process
1. Reconnaissance
- Find all endpoints
- Read documentation
- Use Burp Suite
2. Authentication Testing
- Token reuse
- Missing authentication
3. Authorization Testing
- ID manipulation
- Role escalation
4. Input Validation Testing
- Invalid input data
- Fuzzing
5. Business Logic Testing
- Thinking like an attacker 🧠
6. Rate Limits Testing
- Sending multiple requests
7. Response Testing
- Checking hidden information
📝 API Penetration Testing — An Example of Attack
Endpoint:
GET /api/orders/1001Testing steps:
- Change order id in the request
- Remove the authentication token
📑 Writing Bug Reports — Template
Title:
Broken authorization
Steps:
Changed user id
Impact:
Data leakage
Fix:
Add ownership validation for user objects
🔐 How To Test APIs Safely
- Strong authentication mechanism
- Input validation
- Request rate limitations
- Minimal privileges
- HTTPS protocol
- Proper logging and monitoring
⚠️ Ethical Guidelines for Bug Bounty Hunter
- Always ask for permission to test the application
- Perform tests safely
- Never violate privacy
- NEVER:
Unauthorized access
Data stealing
Exploit vulnerabilities
🚀 What’s Next?
API hacking is one of the most profitable skills for bug bounties right now!
Start easy and then go advanced:
- Study basic endpoints
- Do labs
Then move to:
- Business logic attacks
- Real-world APIs