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 povrsina sodobnih aplikacij. Medtem ko organizacije mocno vlozijo v varovanje spletnih vmesnikov, API-ji pogosto prejmejo bistveno manj pozornosti pri varnostnih ocenah. API-ji neposredno izpostavljajo poslovno logiko, upravljajo obcutljive 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 najkriticnejse odkrite ranljivosti.

Zakaj je varnost API pomembna

API-ji izpostavljajo surovo poslovno logiko brez abstrakcijske plasti, ki jo zagotavlja uporabniski vmesnik. Napadalec, ki neposredno komunicira z API-jem, lahko oblikuje zahteve, ki jih vmesnik nikoli ne bi ustvaril, s cimer preverja predpostavke razvijalcev o nacinu uporabe. API-ji pogosto vracajo vec podatkov, kot jih prikazuje vmesnik, kar ustvarja moznosti uhajanja podatkov, ki niso vidne pri obicajni uporabi. Mobilne aplikacije, enostranske aplikacije, integracije tretjih oseb in partnerski sistemi vsi komunicirajo prek API-jev, pri cemer vsak prinasa locene izzive za overitev in avtorizacijo.

Izvidovanje: Preslikava povrsine API

Ucinkovito testiranje se zacne s temeljitim izvidovanjem za odkritje vsake koncne tocke in razumevanje modela overitve.

  • Viri dokumentacije - Poiscite koncne tocke Swagger UI (obicajno na /swagger, /api-docs, /swagger-ui.html), specifikacije OpenAPI in portale za razvijalce, ki so v produkciji ostali dostopni.
  • Analiza JavaScripta - Enostranske aplikacije vgrajujejo koncne tocke API v pakete JavaScript. LinkFinder in pregled paketov webpack razkrijejo poti koncnih tock in imena parametrov.
  • Obratni inzeniring mobilnih aplikacij - Dekompilirajte aplikacije z uporabo jadx (Android) ali class-dump (iOS) za pridobivanje vkodiranih koncnih tock in zetonov.
  • Odkrivanje verzij - Testirajte starejse verzije API (v1, v2), ki morda nimajo trenutnih varnostnih kontrol. Preverite tako verzioniranje na podlagi poti (/api/v1/) kot na podlagi glav.
  • Odkrivanje koncnih tock s fuzzingom - Uporabite ffuf s seznami besed, specificnimi za API, za odkrivanje nedokumentiranih koncnih tock kot /api/admin, /api/internal in /api/debug.

OWASP API Security Top 10

OWASP API Security Top 10 zagotavlja strukturiran okvir za najkriticnejse ranljivosti API.

  • BOLA (API1) - Najpogostejsa napaka API. Dostopajte do virov z ID-ji drugih uporabnikov, medtem ko ste overjeni kot drug uporabnik. Sistematicno pregledujte obsege ID-jev za odkrivanje vrzeli v avtorizaciji.
  • Pokvarjena overitev (API2) - Sibko generiranje zetonov, manjkajoca omejitev hitrosti na prijavnih koncnih tockah in napake JWT. Testirajte zascito pred polnjenjem poverilnic in entropijo zetonov.
  • Pretirano razkritje podatkov (API3) - API-ji vracajo celotne objekte in se zanasajo na vmesnik za filtriranje. Primerjajte odgovore API s prikazom vmesnika za odkritje uhajajocih polj kot so e-naslovi, notranji ID-ji ali vloge.
  • Omejevanje hitrosti (API4) - Testirajte manjkajoco omejitev hitrosti na overitvi, zahtevnih operacijah in izvozu podatkov.
  • Pokvarjena avtorizacija funkcij (API5) - Testirajte administrativne koncne tocke z zetoni obicajnih uporabnikov. Zamenjajte metode HTTP (GET v PUT/DELETE) za dostop do upravljalskih funkcij.
  • Masovna dodelitev (API6) - Dodajte dodatne parametre kot role, isAdmin ali permissions v telesa zahtev. Mnoga ogrodja samodejno povezejo lastnosti JSON brez filtriranja.
  • Napacna konfiguracija (API7) - Preverite sledi sklada v napakah, napacne konfiguracije CORS, nepotrebne metode HTTP in manjkajoce varnostne glave.
  • Vbrizgavanje (API8) - Testirajte vse parametre za SQL, NoSQL, vbrizgavanje ukazov in LDAP. Vsebine JSON/XML lahko omogocijo napade deserializacije ali XXE.
  • Nepravilno upravljanje sredstev (API9) - Poiscite zastarele verzije API, ki so v produkciji se vedno dostopne, pogosto brez popravkov in nadzora.
  • Nezadostno belezenje (API10) - Preverite, ali napake overitve in krsitve avtorizacije sprozijo 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 vec uporabniki - Ustvarite racune z razlicnimi ravnmi privilegijev in zajemite veljavne zetone za vsakega.
  3. Predvajanje med konteksti - Z razsiritvijo Autorize predvajajte vsako zahtevo z zetonom drugega uporabnika za sistematicno odkrivanje BOLA in napak avtorizacije.
  4. Fuzzing parametrov - Testirajte nepricakovane 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 zetone, manipulirajte cene in preskocite korake v vecstopenjskih procesih.
  6. Analiza odgovorov - Preglejte telesa odgovorov za razkritje informacij in primerjajte velikosti odgovorov med razlicnimi ravnmi avtorizacije.

Bistvena orodja

  • Burp Suite Professional - Primarno orodje za testiranje API. Razsiritve kot Autorize, JSON Web Tokens in InQL razsirijo njegove zmogljivosti.
  • Postman - Gradnja kolekcij zahtev, upravljanje okolij z razlicnimi zetoni za overitev in izvajanje avtomatiziranih testnih nizov.
  • OWASP ZAP - Brezplacna alternativa z uvozom OpenAPI in avtomatiziranimi profili skeniranja API.
  • ffuf - Hiter fuzzer za odkrivanje koncnih tock z uporabo seznamov besed SecLists, specificnih za API.
  • Arjun - Odkriva skrite parametre HTTP s testiranjem seznamov besed pogostih imen parametrov.

Priporocila za odpravo

Implementirajte preverjanje avtorizacije na ravni objektov v plasti dostopa do podatkov, namesto zanasanja na kontrole na ravni koncnih tock. Dolocite sheme validacije vnosov, ki specificirajo dovoljene parametre, tipe in obsege za vsako koncno tocko. Sprejmite prehode API, ki dosledno uveljavljajo omejevanje hitrosti, overitev in validacijo shem v vseh storitvah. Zagotovite, da belezenje API zajame dovolj konteksta za odkrivanje incidentov brez belezenja obcutljivih podatkov kot so poverilnice.

Vid Grosek

Vid Grosek

Etični heker & Penetracijski tester

Pomagam slovenskim podjetjem odkriti varnostne ranljivosti, preden jih odkrijejo napadalci. Vec kot 5 let izkusenj s penetracijskim testiranjem.

Vse objave

Komentarji

Ni se komentarjev. Bodite prvi!

Dodaj komentar

Vam je bil clanek vsec?

Prijavite se na newsletter za mesecne varnostne vpoglede.

Prijavite se