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

Περίληψη Μεθοδολογίας 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": {...}}.

Παράδειγμα ευάλωτου μοτίβου (χωρίς έλεγχο ρόλου/άδειας):

ts
// 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)

  1. Δημιουργήστε έναν κανονικό λογαριασμό και αποκτήστε μια πιστοποιημένη συνεδρία (cookies/headers).
  2. Απαριθμήστε εργασίες παρασκηνίου ή άλλους ευαίσθητους πόρους μέσω διαδικασιών “list”/“all”/“status”.
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. Εκτέλεση προνομιούχων ενεργειών όπως η επανεκκίνηση μιας εργασίας:
bash
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.
bash
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).

Αναφορές

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