...................
...::: phearless zine #1 :::...
...............>---[ Cross Site Scripting with examples ]---<...............
..........................>---[ by Exoduks ]---<............................
exoduks[at]gmail[dot]com
SADRZAJ:
[0] Uvod
[1] XSS - Sto je to
[2] Za sto nam je XSS koristan
[3] Dvije najcesce metode XSS napada
[4] Primjeri i exploitovanje
[5] Primjeri korisnog JavaScript koda
[6] Zastita
[7] EOF a.k.a THE END
*** na kraju teksta se nalazi uuencodeovan XSS-examples.tar.gz sa primerima
*** za exploitanje vezanim za ovaj tekst !
////////////////////////////////////////////////////////////////////////////
--==<[ 0. Uvod
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
U ovom tekstu cu vam pisati o Cross Site Scripting propustu u web
aplikacijama. Inace XSS propust je dosta rasiren i programeri premalo pozornosti
posvecuju sigurnosti web aplikacija.
Cross Site Scripting ili skraceno CSS koji mnoge asocira na Cascading
Style Sheet i ako jedno s drugim nemaju nikakve veze. Jos je i poznat pod
nazivom koji se najcesce upotrebljava, a to je XSS koji cu i ja u daljnjem
dijelu koristiti.
////////////////////////////////////////////////////////////////////////////
--==<[ 1. XSS - Sto je to
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
XSS je propust koji se javlja kad neka web aplikacija dobije zlonamjerne
podatke od korisnika, u najcescem slucaju taj zahjtev sadrzi JavaScript,
HTML, VBScript ili neki drugi kod. Jednom kad web aplikacija zaprimi takav
kod prosljeduje ga korisnku gdje njegov web browser izvrsi zlonamjerni kod.
////////////////////////////////////////////////////////////////////////////
--==<[ 2. Za sto nam je XSS koristan
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
XSS je beskoristan ako zlonamjerni kod izvrsi vas browser na vasem
racunalu, jer dobijete vlastite podatke, a to mozete dobiti i bez toga,
stoga se XSS primjenjuje na neku osobu od koje zelite dobiti odredjene
podatke, natjerate da web aplikacija zlonamjerni kod prosljedi njegovom
browseru koji to izvrsava na njegovom racunalu. XSS se najcesce koristi za
dobijanje cookie-a i session-a.
////////////////////////////////////////////////////////////////////////////
--==<[ 3. Dvije najjace metode XSS napada
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Prva metoda je kada korisnik posalje web aplikaciji zlonamjerni kod i
ona ga spremi negdje na serveru (u neku bazu, neki fajl ili nesto trece) i
svaki put kada neki korisnik ucita odredjenu stranicu web aplikacija sa
servera ucitava zlonamjerni kod i salje ga korisniku koji je posjetio tu
stranicu.
Druga metoda je da se "zlonamjerni kod" ne pohranjuje na serveru nego ga
korisnik unosi nekim putem u web aplikaciju i ona mu ga proslijeduje natrag,
te se kod zatim izvrsava.
Prva metoda je korisnija od ove druge jer je laksa za exploitati. U 2-oj
metodi moramo natjerati na neki nacin zrtvu da ona sama unese zlonamjerni
kod koji ce se izvrsiti na zrtvinom racunalu i poslate podatke nama.
////////////////////////////////////////////////////////////////////////////
--==<[ 4. Primjeri i exploitanje
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Kao sto sam vec napomenuo uz ova tekst prilozeni se u primjeri ranjivih
web aplikacija, koje ste trebali vec instalirati. Prvo sa vasim browserom
posjetite:
http://www.server.com/XSS-primjer/index.php
...i pokrenut ce se aplikacija koja ce vam ispisati sadrzaj baze, na ovom
principu rade forumi, razne knjige gostiju, a velik broj njih je ranjiv na
XSS, pogotovo one manje poznate. Nas u ovom dijelu ne zanima kod index.php
stranice pa ga necu objasnjavati.
Kliknite na link koji se nalazi na index.php stranici "Dodaj tekst !"
koji vodi do strance sa formom za unos texta "add.html"(simulacija dodavanja
posta na forumu ili knjigi gostiju). Na toj stranici za pocetak cemo unijeti
pod naslov "Proba", a pod tekst "Blabalbal" nakon unosa pritisnite submit.
Nakon toga trebalo bi vam se pojaviti Uspjesno dodano. Zatim opet posjetite
"index.php" na kojoj cete vidjeti text koji ste unijeli preko forme.
Zatim otvorite add.php i pogledajte sljedeci kod:
------- star code -------
------- end code -------
Idemo sad malo razjasniti kod:
...
include("config.php");
...
- ukljucuje se fajl config.php u kojem su smjesteni podaci za spajanje na
bazu.
...
$naslov = $_POST['naslov'];
$text = $_POST['text'];
...
- ove dvije varijable hvataju POST zahtjev od add.html forme, posto nema
nikakve provjere za sadrzajem tih dviju varijabli mozemo bez problema
unijeti zlonmajerni kod, kao sto cete vidjeti sami.
...
mysql_connect($server, $dbuser, $dbpass);
mysql_select_db($database) or die("Greska u spajanju na bazu !");
$query = "INSERT INTO XSS_primjer1 VALUES ('$naslov', '$text')";
mysql_query($query);
mysql_close();
echo "Dodano u bazu !";
...
- funkcije za spajanje na bazu i dodavanje sadrzaja varijabli $naslov i
$text u bazu, ali taj dio i nije toliko vazan.
Znaci koliko vidimo iz gornjeg koda nema provjere ulaznih varijabli $naslov
i $text stoga je XSS napad moguc pa idemo da vidiom i to.
- sa browserom posjetite add.html i u polje naslov stavite "proba - xss"
a pod text stavite sljedeci JavaScript kod:
- nakon sto ste unijeli kliknite na submit i zatim ponovno otidite na
index.php stranicu.
- odmah nakon sto se stranica ucita iskocit ce vam prozor sa porukem "XSS
primjer 1 - exploited !"
- kao sto smo i predpostavili moguce je unijeti kod i sremiti ga u bazu te
ce se izvrsiti na svim korisncima koji posjete tu stranicu.
////////////////////////////////////////////////////////////////////////////
--==<[ 5. Primjeri korisnog JavaScript koda
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
"IL(?IFF3+#M8BD'Q`0W]12 M:@$8TXJXU]0*Q>>G)6J$K62YQPM;I1?V'G;ED(6W7/4RHTX@/]M<&7V5:G2E MM,P6_(JI7V@`'4I&\4:#9.],Q4JW?C%19$^MME>&SY[_J`M6P6/)^5^R[7+F M_+?5^8\&H#[_UX'G<_YGM^ML-TKK@>T;FP$?6P(^X30PO)C=&??,+:2DP6:L/7^_/5EYQ^Y)"/WSWUC*SZMYR4JJ?*-T:WXX+]'2@%U MY/:6H'Q,^2YLN=U(I"\A*CVDG]04U,>*[]WN]I9+4*<207>`<7`]%.@73O\S M)!`!:OL!"081:F[HDKL(-A,)/T24WZ(8YO'99?NB`\=GG=>`<_,^507P]N#D M3?L2MG-I9W*[D(MES^V84Q%B(ML)K9E !7/=\31.A^( MH0?79.`;J>I1RL%G#O'[ZKJ`BBM11"J;,X8YM4R:GV;MC/8W6:T,'6 MQR.JJE%4,T.&VLZA@#5%R.F(2`]"U$&.AWKGJ4?^>>#!_3^[A7XYCV7^'ZM2 MO>?_JY=*9;W_UX'G8_]][_Z?15_/@WZ>V4UVZJ`U6_=\H?L.#^^:R!^D2V MYF7[I'W8@;_"SQ>O3[/6ICI>XEHV5OND;;G%V22(1K-B?'^O_"5I#5LQ,K:Z MG`V(@Y6L?6/2]WP*V].\!J0D=N!?60L](<>IB'PY)88#D+3:A:F3:">UW) A#BW-:RLNC?$K3 MCC2ZO!4+&'M=8G?+U-.BBI35G8KXPP_[QK_OV^K:(O^>\.#Y/U.17\YCF?U? ML>V/SO^*K<__=4!M=-2"?^JJ[G$6!6[>83[C>_!GO)B5:S6E(8QIK6G14?NH M?7@0%TEW%V0_6_CRY2$B+NR7L@4_(\KEI,"^7Y!RZI=WH5^Y7S@E5\7"6K:P M5E/ __=>#YV'_?N_]'Q_]U_%_' M_S76BR7G_TJ^`GA4_%_%__#\+^OS?RW0\7\=_Y_M?T[=$2W(&[E:'LO\OZ@` M,OM?_?U757T2H/?_&O`[`2_`(?#5O3\"-L:K\I![H:1X4Y:<=@.&E_<1#"BX M6!6OT&C`T"ZDC@$OL8%B&\_H>CX#'\U8'QMYO@ M$@Z/+9_=T<"0#$;X@O0BM)&\^,8_8DX$:/">WAZX(P_%4<+%@N=)*NB0]<#E M40\?(6<]3D8$A1T2%P6AT&.2C3T0!%3`E(Q]9=S24>)G8'+,N(>UYI8U**YA M%'CQ,**=/*3*BV%DW1B*/`O3O@OB\CLTXM70NIB')G1ZLQH30?)82@59^#[/ M,'XGTAO-N L[XXC>?>H5J?$TLZ/_%O;4R'LOT?RG[_4_\___4K&I%Z_]UX/"B M?=!I0^?@IY,VW`@QB]9LOS``TAOEF'#E5-G&>=R!L]<=.'MS<@(NO29X\85< M;E?5C?T/\:]IC3C[_.+X].#B';QJOP/83J-7+XP=4$ZGYNGM\>7!Z?X+0_UD M`T=946:!H[>1'RA?`9#0]QRB'%&HPI1FA\W<;NZ "^_#)NBRYU&6 MVXDG^ZF7O8:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:& 0AH:&QC>)_P$@-@#I`'@````` ` end sum -r/size 19780/2401