Nazaj na blog

Testiranje varnosti API: Prakticni vodic

August 30, 2024 4 min branja
Testiranje varnosti API: Prakticni vodic
Nazadnje posodobljeno:

API-ji so postali primarna napadna površina sodobnih aplikacij. Medtem ko organizacije močno vložijo v varovanje spletnih vmesnikov, API-ji pogosto prejmejo bistveno manj pozornosti pri varnostnih ocenah. API-ji neposredno izpostavljajo poslovno logiko, upravljajo občutljive podatke in pogosto nimajo enake globine validacije vnosov ter nadzora dostopa kot spletni vmesniki. Pri mojih penetracijskih testiranjih ugotovitve, povezane z API-ji, dosledno sodijo med najkritičnejše odkrite ranljivosti.

Zakaj je varnost API pomembna

API-ji izpostavljajo surovo poslovno logiko brez abstrakcijske plasti, ki jo zagotavlja uporabniški vmesnik. Napadalec, ki neposredno komunicira z API-jem, lahko oblikuje zahteve, ki jih vmesnik nikoli ne bi ustvaril, s čimer preverja predpostavke razvijalcev o načinu uporabe. API-ji pogosto vračajo več podatkov, kot jih prikazuje vmesnik, kar ustvarja možnosti uhajanja podatkov, ki niso vidne pri običajni uporabi. Mobilne aplikacije, enostranske spletne aplikacije, integracije tretjih oseb in partnerski sistemi vsi komunicirajo prek API-jev, pri čemer vsak prinaša ločene izzive za overitev in avtorizacijo.

Izvidovanje: Preslikava površine API

Učinkovito testiranje še začne s temeljitim izvidovanjem za odkritje vsake končne točke in razumevanje modela overitve.

  • Viri dokumentacije - Poiščite končne točke Swagger UI (običajno na /swagger, /api-docs, /swagger-ui.html), specifikacije OpenAPI in portale za razvijalce, ki so v produkciji ostali dostopni.
  • Analiza JavaScripta - Enostranske spletne aplikacije vgrajujejo končne točke API v pakete JavaScript. LinkFinder in pregled paketov webpack razkrijejo poti končnih točk in imena parametrov.
  • Obratni inženiring mobilnih aplikacij - Dekompilirajte aplikacije z uporabo jadx (Android) ali class-dump (iOS) za pridobivanje vkodiranih končnih točk in žetonov.
  • Odkrivanje verzij - Testirajte starejše verzije API (v1, v2), ki morda nimajo trenutnih varnostnih kontrol. Preverite tako verzioniranje na podlagi poti (/api/v1/) kot na podlagi glav.
  • Odkrivanje končnih točk s fuzzingom - Uporabite ffuf s seznami besed, specifičnimi za API, za odkrivanje nedokumentiranih končnih točk kot /api/admin, /api/internal in /api/debug.

OWASP API Security Top 10

Spodnje oštevilčenje kategorij sledi izdaji OWASP API Security Top 10 (2019).

OWASP API Security Top 10 zagotavlja strukturiran okvir za najkritičnejše ranljivosti API.

  • BOLA (API1) - Najpogostejša napaka API. Dostopajte do virov z ID-ji drugih uporabnikov, medtem ko ste overjeni kot drug uporabnik. Sistematično pregledujte obsege ID-jev za odkrivanje vrzeli v avtorizaciji.
  • Neustrezna avtentikacija (API2) - Šibko generiranje žetonov, manjkajoča omejitev pogostosti zahtev na prijavnih končnih točkah in napake JWT. Testirajte zaščito pred preizkušanjem predhodno razkritih poverilnic (credential stuffing) in entropijo žetonov.
  • Pretirano razkritje podatkov (API3) - API-ji vračajo celotne objekte in se zanašajo na vmesnik za filtriranje. Primerjajte odgovore API s prikazom vmesnika za odkritje uhajajočih polj kot so e-naslovi, notranji ID-ji ali vloge.
  • Omejevanje pogostosti zahtev (API4) - Testirajte manjkajočo omejitev pogostosti zahtev na overitvi, zahtevnih operacijah in izvozu podatkov.
  • Neustrezna avtorizacija funkcij (API5) - Testirajte administrativne končne točke z žetoni običajnih uporabnikov. Zamenjajte metode HTTP (GET v PUT/DELETE) za dostop do upravljalskih funkcij.
  • Nenadzorovano dodeljevanje lastnosti objektom (API6) - Dodajte dodatne parametre kot role, isAdmin ali permissions v telesa zahtev. Mnoga ogrodja samodejno povežejo lastnosti JSON brez filtriranja.
  • Napačna konfiguracija (API7) - Preverite sledi sklada v napakah, napačne konfiguracije CORS, nepotrebne metode HTTP in manjkajoče varnostne glave.
  • Vbrizgavanje (API8) - Testirajte vse parametre za SQL, NoSQL, vbrizgavanje ukazov in LDAP. Vsebine JSON/XML lahko omogočijo napade deserializacije ali XXE.
  • Nepravilno upravljanje sredstev (API9) - Poiščite zastarele verzije API, ki so v produkciji še vedno dostopne, pogosto brez popravkov in nadzora.
  • Nezadostno beleženje (API10) - Preverite, ali napake overitve in kršitve avtorizacije sprožijo opozorila.

Metodologija testiranja

  1. Nastavite proxy - Konfigurirajte Burp Suite ali OWASP ZAP za prestrezanje prometa API. Uvozite specifikacije OpenAPI za samodejno polnjenje zemljevida strani.
  2. Overitev z več uporabniki - Ustvarite račune z različnimi ravnmi privilegijev in zajemite veljavne žetone za vsakega.
  3. Ponovno pošiljanje zahtev z različnimi pravicami - Z razširitvijo Autorize ponovno pošljite vsako zahtevo z žetonom drugega uporabnika za sistematično odkrivanje BOLA in napak avtorizacije.
  4. Fuzzing parametrov - Testirajte nepričakovane podatkovne tipe, mejne vrednosti in vsebine za vbrizgavanje z Burp Intruder ali kolekcijami Postman.
  5. Testiranje poslovne logike - Obvozite omejitve delovnega toka, ponovno uporabite enkratne žetone, manipulirajte cene in preskočite korake v večstopenjskih procesih.
  6. Analiza odgovorov - Preglejte telesa odgovorov za razkritje informacij in primerjajte velikosti odgovorov med različnimi ravnmi avtorizacije.

Bistvena orodja

  • Burp Suite Professional - Primarno orodje za testiranje API. Razširitve kot Autorize, JSON Web Tokens in InQL razširijo njegove zmogljivosti.
  • Postman - Gradnja kolekcij zahtev, upravljanje okolij z različnimi žetoni za overitev in izvajanje avtomatiziranih testnih nizov.
  • OWASP ZAP - Brezplačna alternativa z uvozom OpenAPI in avtomatiziranimi profili skeniranja API.
  • ffuf - Hiter fuzzer za odkrivanje končnih točk z uporabo seznamov besed SecLists, specifičnih za API.
  • Arjun - Odkriva skrite parametre HTTP s testiranjem seznamov besed pogostih imen parametrov.

Priporočila za odpravo

Uvedite preverjanje avtorizacije na ravni objektov v plasti dostopa do podatkov, namesto zanašanja na kontrole na ravni končnih točk. Določite sheme validacije vnosov, ki specificirajo dovoljene parametre, tipe in obsege za vsako končno točko. Sprejmite prehode API, ki dosledno uveljavljajo omejevanje pogostosti zahtev, overitev in validacijo shem v vseh storitvah. Zagotovite, da beleženje API zajame dovolj konteksta za odkrivanje incidentov brez beleženja občutljivih podatkov kot so poverilnice.

Sorodno branje: Avtorizacija API: odkrivanje in odprava BOLA/IDOR in Varnost GraphQL: Onkraj ranljivosti REST.

Vid Grosek

Vid Grosek

Etični heker & Penetracijski tester

Pomagam slovenskim podjetjem odkriti varnostne ranljivosti, preden jih odkrijejo napadalci. Z več kot 18 leti izkušenj v kibernetski varnosti.

Vse objave

Komentarji

Ni še komentarjev. Bodite prvi!

Dodaj komentar

Vam je bil članek všeč?

Prijavite se na newsletter za mesečne varnostne vpoglede.

Prijavite se