Príspevok

TryHackMe - IDOR

🔑 Zistite, ako nájsť a zneužiť zraniteľné miesta IDOR vo webovej aplikácii

TryHackMe - IDOR

Zistite, ako nájsť a zneužiť zraniteľné miesta IDOR vo webovej aplikácii, ktorá vám poskytuje prístup k údajom, ktoré by ste nemali mať. Tryhackme Room Link

Čo je to IDOR?

IDOR je skratka pre Insecure Direct Object Reference a je typom zraniteľnosti riadenia prístupu.

Tento typ zraniteľnosti sa môže vyskytnúť, keď webový server príjme užívateľom poskytnutý vstup na načítanie objektov (súborov, údajov, dokumentov), ​​vstupným dátam je priveľká dôvera a nie sú overené na strane servera, aby sa potvrdilo, že požadovaný objekt patrí užívateľovi, ktorý ho požaduje.

Príklad IDORu

Predstavte si, že ste sa práve zaregistrovali do online služby a chcete zmeniť informácie vo svojom profile. Odkaz, na ktorý kliknete, prejde na http://online-service.thm/profile?user_id=1305 a uvidíte svoje informácie.

Zvedavosť vás premôže a skúsite zmeniť hodnotu user_id na 1000 namiesto (http://online-service.thm/profile?user_id=1000) a na vaše prekvapenie teraz vidíte informácie o inom používateľovi. Teraz ste objavili zraniteľnosť IDOR!

V ideálnom prípade by mala byť na webovej lokalite kontrola, ktorá potvrdí, že informácie o používateľovi patria prihlásenému používateľovi, ktorý ich požaduje.

Pomocou toho, čo sme sa naučili vyššie, kliknite na tlačidlo View Site a pokúsme sa získať vlajku objavením a zneužitím zraniteľnosti IDOR.

Môžeme vidieť 4 e-maily

Poďme zistiť, na ktorý z nich môžeme použiť túto zraniteľnosť:

IDOR Example

Skúsime zmeniť číslo objednávky na 1000:

IDOR Example 2

A dostávame vlajku:

IDOR Example 3

Otázka:

Čo je vlajka z webovej stránky IDOR?

Odpoveď:
1
THM{IDOR-VULN-FOUND}

Hľadanie IDORov v enkódovaných ID

Enkódované IDs

Pri odovzdávaní údajov zo stránky na stránku buď prostredníctvom údajov príspevkov, reťazcov dopytov alebo súborov cookie, weboví vývojári často najskôr zoberú nespracované údaje a zakódujú ich. Kódovanie zaisťuje, že prijímajúci webový server bude schopný porozumieť obsahu. Kódovanie mení binárne údaje na reťazec ASCII, ktorý bežne používa znaky a-z, A-Z, 0-9 a = na vyplnenie. Najbežnejšou technikou kódovania na webe je kódovanie base64 a zvyčajne sa dá veľmi ľahko rozpoznať. Na dekódovanie reťazca môžete použiť webové stránky ako base64encode, potom upraviť údaje a znova ich zakódovať pomocou base64encode a potom znova odoslať webovú žiadosť, aby ste zistili, či došlo k zmene v odpovedi.

Odpoveď:
1
base64

Hľadanie IDORov v zahashovaných ID

Zahashované IDs

Hashované ID je o niečo komplikovanejšie ako s kódovanými, ale môžu sa riadiť predvídateľným vzorom, ako je napríklad hashovaná verzia celočíselnej hodnoty. Napríklad identifikačné číslo 123 by sa zmenilo na 202cb962ac59075b964b07152d234b70, ak by sa používalo hashovanie md5.

Oplatí sa vložiť akékoľvek objavené hodnoty hash prostredníctvom webovej služby, ako je napríklad crackstation (ktorá má databázu miliárd hashov na vyhodnotenie výsledkov), aby sme zistili, či môžeme nájsť nejaké zhody.

Odpoveď:
1
base64

Hľadanie IDORov v nepredvídateľných IDs

Nepredvídateľné IDs

Ak nie je možné zistiť ID pomocou vyššie uvedených metód, vynikajúcou metódou detekcie IDOR je vytvorenie dvoch účtov a výmena identifikačných čísel medzi nimi. Ak si môžete prezerať obsah ostatných používateľov pomocou ich identifikačného čísla, pričom ste stále prihlásení pod iným účtom (alebo nie ste prihlásení vôbec), našli ste valídnu chybu zabezpečenia IDOR.

Odpoveď:
1
2

Kde sa nachádzajú?

Zraniteľný koncový bod(tzv. endpoint), na ktorý sa zameriavate, nemusí byť vždy niečo, čo vidíte v paneli s adresou. Môže to byť obsah, ktorý váš prehliadač načíta prostredníctvom požiadavky AJAX alebo niečo, na čo nájdete odkaz v JavaScript súbore.

Niekedy môžu mať koncové body nereferencovaný parameter, ktorý mohol byť nejakým spôsobom užitočný počas vývoja a dostal sa do produkcie. Môžete si napríklad všimnúť volanie na /user/details zobrazujúce informácie o vašom používateľovi (overené vašou reláciou(session)). Ale prostredníctvom útoku známeho ako dolovanie parametrov(parameter mining) objavíte parameter s názvom user_id, ktorý môžete použiť na zobrazenie informácií iných používateľov, napríklad /user/details?user_id=123.

Ak nie je možné zistiť ID pomocou vyššie uvedených metód, vynikajúcou metódou detekcie IDOR je vytvorenie dvoch účtov a výmena identifikačných čísel medzi nimi. Ak si môžete prezerať obsah ostatných používateľov pomocou ich identifikačného čísla, pričom ste stále prihlásení pod iným účtom (alebo nie ste prihlásení vôbec), našli ste platnú chybu zabezpečenia IDOR.

Odpoveď:
1
Nie je potrebná odpoveď

Praktický príklad IDORu

Začnime stlačením tlačidla Start Machine; po spustení navštívte webovú stránku v novej karte prehliadača:

https://WEBSITE_IP.p.thmlabs.com

Najprv sa musíme prihlásiť. Kliknite na zákaznícku sekciu a vytvorme si účet. Po prihlásení kliknime na kartu Your Account.

Časť Váš účet nám dáva možnosť zmeniť svoje informácie, ako je používateľské meno, e-mailová adresa a heslo. Všimnite si, že používateľské meno a e-mailové polia sú predvyplnené našimi informáciami.

Practice 1

Začneme tým, že preskúmame, ako sa tieto informácie predvypĺňajú. Ak otvoríme nástroje pre vývojárov v prehliadači, vyberieme kartu Network a potom obnovíme stránku, zobrazí sa volanie koncového bodu(endpointu) s cestou /api/v1/customer?id={user_id}

Táto stránka vráti naše používateľské ID, používateľské meno a e-mailovú adresu vo formáte JSON. Z cesty vidíme, že zobrazené informácie o používateľovi sú prevzaté z parametra id reťazca dopytu(query string).

Skúsme aktualizovať naše používateľské meno na niečo iné a kliknite na tlačidlo Update:

Practice 2

Môžeme kliknúť pravým tlačidlom myši a vybrať možnosť Upraviť a znova odoslať(Edit and Resend):

Practice 3

Zmeňme ID na „1“ a kliknime na Send.

Practice 4

Vidíme, že ID sa teraz zmenilo a môžeme vidieť používateľa:

Practice 5

Odpoveď:
1
adam84

Teraz urobíme to isté pre ID 3:

Practice 6

Odpoveď:
1
j@fakemail.thm

Tento príspevok je licencovaný pod CC BY 4.0 autorom.