Web API Pentesting
Reading time: 6 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Περίληψη Μεθοδολογίας API Pentesting
Το pentesting των APIs απαιτεί μια δομημένη προσέγγιση για την ανίχνευση ευπαθειών. Αυτός ο οδηγός συνοψίζει μια ολοκληρωμένη μεθοδολογία, δίνοντας έμφαση σε πρακτικές τεχνικές και εργαλεία.
Κατανόηση των τύπων API
- SOAP/XML Web Services: Χρησιμοποιούν τη μορφή WSDL για τεκμηρίωση, συνήθως βρίσκονται σε διαδρομές
?wsdl
. Εργαλεία όπως SOAPUI και WSDLer (Burp Suite Extension) είναι χρήσιμα για parsing και δημιουργία requests. Παράδειγμα τεκμηρίωσης είναι διαθέσιμο στο DNE Online. - REST APIs (JSON): Η τεκμηρίωση συχνά παρέχεται σε αρχεία WADL, αλλά εργαλεία όπως Swagger UI προσφέρουν πιο φιλική διεπαφή για αλληλεπίδραση. Postman είναι ένα πολύτιμο εργαλείο για τη δημιουργία και διαχείριση παραδειγματικών requests.
- GraphQL: Μια γλώσσα ερωτημάτων για APIs που προσφέρει μια πλήρη και κατανοητή περιγραφή των δεδομένων στο API σας.
Practice Labs
- VAmPI: Ένα σκόπιμα ευάλωτο API για πρακτική άσκηση, που καλύπτει τα OWASP top 10 API vulnerabilities.
Αποτελεσματικά κόλπα για API Pentesting
- SOAP/XML Vulnerabilities: Εξετάστε XXE ευπάθειες, αν και δηλώσεις DTD συχνά περιορίζονται. Τα tags CDATA μπορεί να επιτρέψουν εισαγωγή payload εφόσον το XML παραμένει έγκυρο.
- Privilege Escalation: Δοκιμάστε endpoints με διαφορετικά επίπεδα προνομίων για να εντοπίσετε πιθανότητες μη εξουσιοδοτημένης πρόσβασης.
- CORS Misconfigurations: Εξετάστε τις ρυθμίσεις CORS για πιθανή εκμεταλλευσιμότητα μέσω CSRF επιθέσεων από authenticated συνεδρίες.
- Endpoint Discovery: Εκμεταλλευτείτε μοτίβα API για να ανακαλύψετε κρυμμένα endpoints. Εργαλεία όπως fuzzers μπορούν να αυτοματοποιήσουν αυτή τη διαδικασία.
- Parameter Tampering: Πειραματιστείτε με την προσθήκη ή αντικατάσταση παραμέτρων σε requests για πρόσβαση σε μη εξουσιοδοτημένα δεδομένα ή λειτουργίες.
- HTTP Method Testing: Διαφοροποιήστε τις μεθόδους request (GET, POST, PUT, DELETE, PATCH) για να αποκαλύψετε απροσδόκητες συμπεριφορές ή διαρροές πληροφοριών.
- Content-Type Manipulation: Αλλάξτε μεταξύ διαφορετικών content types (x-www-form-urlencoded, application/xml, application/json) για να δοκιμάσετε προβλήματα parsing ή ευπάθειες.
- Advanced Parameter Techniques: Δοκιμάστε απροσδόκητους τύπους δεδομένων σε JSON payloads ή πειράξτε XML δεδομένα για XXE injections. Δοκιμάστε επίσης parameter pollution και wildcard χαρακτήρες για ευρύτερους ελέγχους.
- Version Testing: Παλιά API versions μπορεί να είναι πιο ευάλωτες σε επιθέσεις. Ελέγχετε πάντα και δοκιμάζετε πολλαπλές εκδόσεις API.
Authorization & Business Logic (AuthN != AuthZ) — tRPC/Zod protectedProcedure pitfalls
Modern TypeScript stacks commonly use tRPC with Zod for input validation. In tRPC, protectedProcedure
typically ensures the request has a valid session (authentication) but does not imply the caller has the right role/permissions (authorization). This mismatch leads to Broken Function Level Authorization/BOLA if sensitive procedures are only gated by protectedProcedure
.
- Threat model: Any low-privileged authenticated user can call admin-grade procedures if role checks are missing (e.g., background migrations, feature flags, tenant-wide maintenance, job control).
- Black-box signal:
POST /api/trpc/<router>.<procedure>
endpoints that succeed for basic accounts when they should be admin-only. Self-serve signups drastically increase exploitability. - Typical tRPC route shape (v10+): JSON body wrapped under
{"input": {...}}
.
Παράδειγμα ευάλωτου μοτίβου (χωρίς έλεγχο ρόλου/άδειας):
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),
Πρακτική εκμετάλλευση (black-box)
- Δημιουργήστε έναν κανονικό λογαριασμό και αποκτήστε μια πιστοποιημένη συνεδρία (cookies/headers).
- Απαριθμήστε εργασίες παρασκηνίου ή άλλους ευαίσθητους πόρους μέσω διαδικασιών “list”/“all”/“status”.
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
- Εκτέλεση προνομιούχων ενεργειών όπως η επανεκκίνηση μιας εργασίας:
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'
Επιπτώσεις προς αξιολόγηση
- Διαφθορά δεδομένων μέσω non-idempotent restarts: Ο εξαναγκασμός ταυτόχρονων εκτελέσεων migrations/workers μπορεί να δημιουργήσει race conditions και ασυνεπείς μερικές καταστάσεις (σιωπηλή απώλεια δεδομένων, προβλήματα στα analytics).
- DoS via worker/DB starvation: Η επαναλαμβανόμενη ενεργοποίηση βαριών εργασιών μπορεί να εξαντλήσει worker pools και database connections, προκαλώντας tenant-wide outages.
Εργαλεία και Πόροι για API Pentesting
- kiterunner: Εξαιρετικό για την ανακάλυψη API endpoints. Χρησιμοποιήστε το για να scan και brute force paths και parameters ενάντια σε target APIs.
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: Το sj είναι ένα εργαλείο command-line σχεδιασμένο να βοηθά στον έλεγχο (auditing) των exposed Swagger/OpenAPI definition files ελέγχοντας τα αντίστοιχα API endpoints για weak authentication. Παρέχει επίσης command templates για manual vulnerability testing.
- Επιπλέον εργαλεία όπως automatic-api-attack-tool, Astra, και restler-fuzzer προσφέρουν εξειδικευμένες λειτουργίες για API security testing, από attack simulation έως fuzzing και vulnerability scanning.
- Cherrybomb: Είναι ένα API security tool που ελέγχει το API σας βάσει ενός OAS file (το εργαλείο είναι γραμμένο σε rust).
Πόροι Μάθησης και Πρακτικής
- OWASP API Security Top 10: Απαραίτητη ανάγνωση για την κατανόηση κοινών API vulnerabilities (OWASP Top 10).
- API Security Checklist: Μια ολοκληρωμένη λίστα ελέγχου για την ασφάλεια των APIs (GitHub link).
- Logger++ Filters: Για εντοπισμό API vulnerabilities, το Logger++ προσφέρει χρήσιμα φίλτρα (GitHub link).
- API Endpoints List: Μια επιμελημένη λίστα πιθανών API endpoints για σκοπούς testing (GitHub gist).
Αναφορές
- https://github.com/Cyber-Guy1/API-SecurityEmpire
- How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.