Uporaba orodja Fiddler

Fiddler je proksi, ki lahko prestreže ves HTTP(S) promet, ki se prenaša med odjemalcem in strežnikom.

Fiddler lahko prenesemo s spletne strani http://www.fiddler2.com, in ga namestimo. Prenesemo lahko Fiddler 2 ali Fiddler 4 glede na verzijo .NET, ki ga imamo nameščenega. Ko uspešno namestimo Fiddler, ga lahko odpremo. Osnovno okno je prikazano na spodnji sliki.

Ko Fiddler poženemo, le-ta začne poslušati na vratih 8888, kar lahko zlahka preverimo z netstat komando, kar lahko vidimo na spodnji sliki.

Še vedno pa nismo omenili nič o tem, kako lahko Fiddler uporabimo. Fiddler lahko uporabimo tako, da najprej pravvilno nastavimo spletni brskalnik IE ali kateregakoli drugega. Ker Fiddler posluša na vratih 8888, moramo spletnemu bskalniku nastaviti opcije, da naj se poveže na proksi, ki teče na 127.0.0.1 na vratih 8888. V spletnem brskalniku Firefox, to lahko nastavimo tako, da kliknemo na Firefox Options – Connection Settings; tam moramo proksi nastaviti na 127.0.0.1:8888 kot prikazuje spodnja slika.

Če sedaj v istem spletnem brskalniku obiščemo spletno stran www.google.com, bomo vse zahteve in odgovore lahko videli v programu Fiddler, kot prikazuje spodnja slika.

Na zgornji sliki lahko vidimo vse zahteve, ki smo jih poslali na spletni strežnik www.google.com. Razlaga vseh stolpcev sledi spodaj: – # : ID zahteve – Result : HTTP status koda HTTP odgovora – Protocol : protokol, ki ga uporablja zahteva – Host : ime strežnika na katerega smo povezani – URL : dejanski URL, ki smo ga zahtevali od strežnika – Body : velikost odgovora v bajti – Caching : HTTP glava Cache-Control, ki smo jo dobili v odgovoru – Content-Type : HTTP glava Content-Type, ki smo jo dobili v odgovoru – Custom : se lahko uporabi za skriptne namene – Comments : se lahko uporabi za skriptne namene Vsaka zahteva ima sedem zavihkov, ki smo jih opisali spodaj: – Statistics : predstavlja različne informacije o seji; ta funkcija je najbolj uporabna, če izberemo več zahtev, čez katere se nato izračuna statistika in predstavi v tem zavihku. Poglejmo primer.

Na zgornji sliki lahko vidimo, da smo izbrali 185 zahtev, ki vsega skupaj uporabljajo 32 različnih domen in skupno število poslanih bajtov je 145.499. Vidimo lahko tudi HTTP statusne kode odgovorov, kjer je 168 zahtev, ki so bile uspešno izvedene in imajo HTTP statusno kodo 200, 8 zahtev ima statusno kodo 302, 8 jo ima 204 in in zahteva ima statusno kodo 307. – Inspectors : predstavlja zahtevo in odgovor na različne načine. Eden izmed načinov je “raw” pogled, kjer Fiddler predstavi zahtevo in odgovor točno tako kot dejansko je brez olepševanja, dodajanja in brisanja informacij. Dejansko zahtevo in odgovor lahko vidimo na spodnji sliki.

– AutoResponder : se lahko uporabi, da vrne prej ustvarjeni odgovor namesto, da se dejansko vedno povezuje na strežnik. – Composer : se lahko uporabo za kloniranje zahteve, ki jo lahko potegnemo v ta pogled in nato spremenimo ter ponovno pošljemo na strežnik. – Filters : se uporablja za filtriranje zahtev, pri čemer se določene zahteve skrijejo in vidimo lahko samo zahteve, ki ustrezajo ključu, ki smo ga nastavili v zavihku Filters. Se lahko uporabi, če npr. želimo videti samo zahteve določene domene, ki jo trenutno testiramo in skriti ostale zahteve. – Log : se uporablja za beleženje zahtev. – Timeline : omogoča predstavitev HTTP zahtev in odgovorov na grafu. Zajem HTTPS prometa Do sedaj smo videli zajem zahtev in odgovorov, ki so se pretakali preko protokola HTTP, toda ali lahko to storimo tudi za varni protokol HTTPS. Će obiščemo spletni naslov https://www.google.com (opazite uporabo varnega protokola https), bo Fiddler zahtevo zgolj spustil skozi in ne bomo mogli videti dejanske zahteve in odgovora. To lahko vidimo na spodnji sliki, kjer je bila zahteva zgolj posredovana naprej na spletni strežnik Google.

Vidimo lahko, da ima zahteva v stoplcu Host zapisano “Tunnel to”, kar nam pove, da je bila zahteva posredovana naprej na strežnik po varnem protokolu HTTPS. Na spodnjem delu slike vidimo tudi, da je Fiddler izpisal, da omogoča zgolj pregledovanje HTTP prometa skozi proksi. Na prvi pogled se nam zdi, da pregledovanje HTTPS prometa ni mogoče, toda to vseeno lahko nastavimo v nastavitvah programa Fiddler. Do teh nastavitev lahko pridemo, če kliknemo na Tools – Fiddler Options – HTTPS in omogočimo enake nastavitve kot jih vidimo na spodnji sliki.

Če sedaj ponovno obiščemo HTTPS spletno stran, nas bo brskalnik vprašal, če zaupamo certifikatu, ki nam ga predstavi Fiddler. Če hočemo nadaljevati moramo pritrdilno odgovoriti na vprašanje, kar nas bo poneslo na HTTPS spletno stran, pri tem pa bomo sedaj lahko videli vsebino HTTPS prometa. Izvajanje Ukazov Na dnu orodja Fiddler lahko opazimo vnosno polje, kjer piše “ALT-Q > type HELP…”; dejansko je to ukazni poziv, kamor lahko vnašamo komande in jih izvajamo.

Najbolj osnovne komande smo opisali spodaj: – ?text : kadar vnesemo znak ‘?’, ki mu sledi neko poljubno besedilo, bomo povzročili, da bo Fiddler označil zahteve, ki iskani tekst vsebujejo v URL naslovu. Poglejmo primer spodaj.

V vnosno polje smo vnesli ?search, kar je v vseh zahtevah v URL naslovu iskalo besedo “search”. V zgornji sliki lahko vidimo, da so bile zateve, ki v URL naslovu vsebujejo besedo “search” označene v sivo barbo (to je zgolj ena zahteva z IDjem 6). – >size : izbere vse zahteve, katerih odgovor je večji od določene velikosti (v bajtih).

– =status : izbere vse zahteve, katerih HTTP statusna koda je enaka izbrani statusni kodi. Na spodnji sliki lahko vidimo izbro vse zahtev, katerih odgovor vsebuje statusno kodo 200 OK (vse take zahteve so označene z sivo barvo).

– =method : izbere vse zahteve, ki uporabljajo določeno HTTP metodo; to je lahko GET, POST, HEAD, itd.. Na spodnji sliki lahko vidimo izbor vse POST zahtev, ki smo jih poslali na strežnik (take zahteve so označene z sivo barvo).

– select MIME: izbere tiste zahteve, ki imamo točno določeno vrednost HTTP glave Content-Type. Prekinitvene točke (Breakpoints) V Fiddlerju lahko nastavljamo tudi prekinitvene točke, toda le-te niso enako kot jih lahko nastavljamo v razhroščevalnikih kot so Ida Pro, Ollydbg ali kateri drugi; tukaj lahko nastavljamo prekinitvene točke na zahteve in odgovore, ki jih lahko ujamemo, spremenimo in pošljemo naprej na strežnik; to je praktično obvezno pri izvajanju penetracijskih testov). Prekinitveno točko lahko nastavimo tako, da kliknemo na Rules – Automatic Breakpoints in izberemo ali “Before Requests” ali “After Responses”, kar prekinitveno točko nastavi na zahtevo ali odgovor. Te opcije lahko vidimo na spodnji sliki.

Nastavimo prekinitveno točko na zahtevo z izborom “Before Requests” opcije. S tem bomo imeli možnost zahtevo ujeti, jo spremeniti in spremenjeno poslati naprej na strežnik, ki jo bo sprocesiral in vrnil odgovor. Ko omenjeno opcijo omogočimo, lahko pošljemo novo zahtevo na spletno stran kot je “http://www.najdi.si”, s čimer bomo zahtevo ujeli. Po ujetju zahteve nam bo Fiddler dal možnost, da zahtevo ustrezno spremenimo ter pošljemo naprej na strežnik, kar lahko storimo s pritiskom na gumb “Run to Completion”. Ujeto zahtevo lahko vidimo na spodnji sliki.

Na vrhu slike lahko vidimo, da zahtevo pošiljamo na domeno www.najd.si, toda hitro lahko opazimo tudi čudno rdečo ikono z črko T zraven zahteve. To nam pove, da imamo zahtevo trenutno ujeto in jo lahko poljubno spreminjamo. Na dnu slike lahko vidimo tudi dva gumba, “Break on Reponse” in “Run to Completion”, ki ju lahko uporabimo, da spremenjeno zahtevo dejansko posredujemo strežniku, ki jo mora obdelati in vrniti rezultat.

Zaključek Videli smo osnovne značilnosti programa Fiddler, ki jih lahko uporabljamo pri penetracijskem testu. Nepogrešljiva lastnost kateregakoli proksi orodja je ta, da lahko zahtevo ujamemo, jo spremenimo in spremenjeno pošljemo na strežnik, saj tako lahko aplikaciji pošiljamo nepravilne vhodne podatke, ter s tem izvedemo akcijo, ki je ne bi smeli.

Objavil Dejan Lukan, dne18.2.2014