Web API Pentesting

Reading time: 6 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

API Pentesting Metodologie Opsomming

Pentesting van APIs behels 'n gestruktureerde benadering om kwesbaarhede te ontbloot. Hierdie gids bevat 'n omvattende metodologie en beklemtoon praktiese tegnieke en gereedskap.

Begrip van API-tipes

  • SOAP/XML Web Services: Gebruik die WSDL-formaat vir dokumentasie, gewoonlik te vinde by ?wsdl-paaie. Gereedskap soos SOAPUI en WSDLer (Burp Suite Extension) is nuttig vir die parseer en genereer van requests. Voorbeelddokumentasie is beskikbaar by DNE Online.
  • REST APIs (JSON): Dokumentasie kom dikwels in WADL-lêers, maar gereedskap soos Swagger UI bied 'n gebruikersvriendelike koppelvlak vir interaksie. Postman is 'n waardevolle hulpmiddel om voorbeeldversoeke te skep en te bestuur.
  • GraphQL: 'n query-taal vir APIs wat 'n volledige en verstaanbare beskrywing van die data in jou API bied.

Praktyklaboratoriums

  • VAmPI: 'n Op 'n doelbewuste wyse kwesbare API vir praktiese oefening, wat die OWASP top 10 API-kwesbaarhede dek.

Effektiewe Wenke vir API Pentesting

  • SOAP/XML Vulnerabilities: Verken XXE-kwesbaarhede, alhoewel DTD-deklarasies dikwels beperk is. CDATA tags kan payload-invoeging toelaat as die XML geldig bly.
  • Privilege Escalation: Toets endpoints met verskillende privilege-vlakke om ongemagtigde toegang moontlikhede te identifiseer.
  • CORS Misconfigurations: Ondersoek CORS-instellings vir potensiële uitbuitbaarheid deur CSRF-aanvalle vanaf geauthentiseerde sessies.
  • Endpoint Discovery: Gebruik API-patrone om versteekte endpoints te ontdek. Gereedskap soos fuzzers kan hierdie proses outomatiseer.
  • Parameter Tampering: Eksperimenteer deur parameters by te voeg of te vervang in versoeke om toegang tot ongemagtigde data of funksionaliteite te kry.
  • HTTP Method Testing: Varieer versoekmetodes (GET, POST, PUT, DELETE, PATCH) om onverwagte gedrag of inligtingsvrystellings te ontdek.
  • Content-Type Manipulation: Skakel tussen verskillende content types (x-www-form-urlencoded, application/xml, application/json) om parsing-kwessies of kwesbaarhede te toets.
  • Advanced Parameter Techniques: Toets met onverwagte datatipes in JSON payloads of eksperimenteer met XML-data vir XXE-inspuiting. Probeer ook parameter pollution en wildcard-karakters vir wyer toetse.
  • Version Testing: Ouer API-weergawes kan meer vatbaar wees vir aanvalle. Kyk altyd na en toets teen verskeie API-weergawes.

Autorisering & Besigheidslogika (AuthN != AuthZ) — tRPC/Zod protectedProcedure valkuils

Moderne TypeScript stacks gebruik gewoonlik tRPC met Zod vir insetvalidering. In tRPC verseker protectedProcedure tipies dat die request 'n geldige sessie het (authentication), maar dit impliseer nie dat die aanroeper die regte rol/permissions het (authorization) nie. Hierdie mismatch lei tot Broken Function Level Authorization/BOLA as sensitiewe procedures slegs deur protectedProcedure gefilter word.

  • Dreigmodel: Enige laag-geprivilegieerde geauthentiseerde gebruiker kan admin-grade prosedures aanroep as rolkontroles ontbreek (bv. background migrations, feature flags, tenant-wide maintenance, job control).
  • Black-box sein: POST /api/trpc/<router>.<procedure> endpoints wat sukses behaal vir basiese rekeninge wanneer dit admin-only behoort te wees. Self-serve signups verhoog die uitbuitbaarheid drasties.
  • Tipiese tRPC-roete vorm (v10+): JSON body gewikkel onder {"input": {...}}.

Voorbeeld kwesbare patroon (geen rol/permission hek):

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
}),

Praktiese uitbuiting (black-box)

  1. Registreer 'n normale rekening en kry 'n geauthentiseerde sessie (cookies/headers).
  2. Enumereer agtergrondtake of ander sensitiewe hulpbronne via “list”/“all”/“status” prosedures.
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. Voer geprivilegieerde handelinge uit soos om 'n taak te herbegin:
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'

Impact to assess

  • Gegewenskorrupsie via nie-idempotente herstarts: Deur gelyktydige runs van migrations/workers af te dwing, kan race conditions en onsamehangende gedeeltelike state geskep word (stilswyende dataverlies, beskadigde analytics).
  • DoS via worker/DB uitputting: Deurlopend die aktivering van swaar jobs kan worker pools en databaseverbindinge uitput, wat tenant-breë uitval veroorsaak.

Gereedskap en Hulpbronne vir API Pentesting

  • kiterunner: Uitstekend om API-endpunte te ontdek. Gebruik dit om paaie en parameters teen teiken-APIs te skandeer en brute force toe te pas.
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 is 'n command-line tool ontwerp om te help met die ouditering van exposed Swagger/OpenAPI definition files deur die geassosieerde API endpoints vir swak authentication te kontroleer. Dit bied ook command templates vir handmatige vulnerability testing.
  • Bykomende gereedskap soos automatic-api-attack-tool, Astra, en restler-fuzzer bied gespesialiseerde funksies vir API security testing, wat wissel van attack simulation tot fuzzing en vulnerability scanning.
  • Cherrybomb: Dit is 'n API security tool wat jou API oudit op grond van 'n OAS file (die tool is in rust geskryf).

Leer- en Oefenhulpbronne

  • OWASP API Security Top 10: Noodsaaklike leesstof om algemene API kwesbaarhede te verstaan (OWASP Top 10).
  • API Security Checklist: 'n Omvattende kontrolelys om APIs te beveilig (GitHub link).
  • Logger++ Filters: Vir die jag van API kwetsbaarhede bied Logger++ nuttige filters (GitHub link).
  • API Endpoints List: 'n Gekeurde lys van potensiële API-endpunte vir toetsdoeleindes (GitHub gist).

References

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks