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

Mô phỏng tấn công DOM BASE XSS

26 928 2

Đ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 26
Dung lượng 4,86 MB

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

Nội dung

CrossSite 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 CSSCascading 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 ClientSite Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML. XSS là một trong những kỹ thuật hack website phổ biến nhất hiện nay bằng cách chèn vào URL, chèn qua các thanh tìm kiếm hoặc chèn ở bất cứ 1 textbox nào những thẻ HTML hoặc những đoạn mã script nguy hiểm, từ đó chiếm quyền điều khiển của victim hoặc thực hiện những mệnh lệnh mà hacker đưa ra.

Trang 1

MỤC LỤC

MỤC LỤC HÌNH ẢNH

Trang 2

CHƯƠNG 1 TỔNG QUAN VỀ XSS 1.1 Khái niệm XSS

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ấncô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 đượcviế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 kỹ thuật hack website phổ biến nhất hiện nay bằngcách chèn vào URL, chèn qua các thanh tìm kiếm hoặc chèn ở bất cứ 1 textbox nàonhững thẻ HTML hoặc những đoạn mã script nguy hiểm, từ đó chiếm quyền điềukhiển của victim hoặc thực hiện những mệnh lệnh mà hacker đưa ra

Lỗ hổng XSS xuất hiện từ giữa những năm 90 trong những ngày đầu của Web.Khi đó, các trang Web thương mại điện tử bắt đầu xuất hiện ngày một nhiều Cáctrang Web sử dụng các khung HTML và JavaScript để xây dựng nội dụng sao chothật "cool" Javascript cho phép các nhà phát triển có thể xây dựng các trang Webvới ảnh động, menus nổi, các cửa sổ pop-up, v.v Nhưng các hacker cũng nhanhchóng nhận ra một lỗ hổng mới

Các hacker nhận ra rằng, khi người dùng truy cập các trang Web, họ có thể tảibất kỳ trang web (ngân hàng, bán đấu giá, cửa hàng, Web mail, v.v ) trên chung 1cửa sổ trình duyệt Web Và nếu sử dụng JavaScript, hacker có thể vượt qua ranhgiới giữa hai trang web, có thể đọc dữ liệu trang Web này từ 1 trang Web khác.Hacker có thể ăn cắp tên và mật khẩu người dùng đã nhận, ăn cắp cookie, hay tácđộng lên các thông tin cá nhân hiển thị trên màn hình

Hinh 1.1 Minh họa XSS

1.2 Hoạt động của XSS

Về cơ bản XSS cũng như SQL Injection hay Source Injection, nó cũng là cácyê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

Trang 3

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ácform 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('Website đang bị lỗi

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ệunguồ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 websitenhư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 đó XSSkhô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áccủ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áchacker để lại họ có thể bị chuyển tới các website khác, đặt lại homepage, hay nặnghơ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ạivirus, backdoor, worm

1.3 Phân loại XSS

1.3.1 Non-Persistent( Reflected XSS).

Reflected XSS là dạng tấn công thường gặp nhất trong các loại hình XSS VớiReflected XSS, hacker không gửi dữ liệu độc hại lên server nạn nhân, mà gửi trực

Trang 4

tiếp link có chứa mã độc cho người dùng, khi người dùng click vào link này thìtrang web sẽ được load chung với các đoạn script độc hại Reflected XSS thườngdùng để ăn cắp cookie, chiếm session,… của nạn nhân hoăc cài keylogger, trojan

… vào máy tính nạn nhân

Dạng tấn công bằng Reflected XSS được mô tả như sau:

Hình 1.3 Mô hình Reflected

Như hình trên, ta có thể thấy được quá trình tấn công như sau:

Trước tiên, hacker sẽ gửi cho nạn nhân một đường link có chứa mã độc hại đikèm, ví dụ:

http://victim.com/index.php?id=<script>alert(document.cookie)</script>nhưng đường link trên sẽ dễ khiến nạn nhân chú ý và sẽ nghi ngờ, nên khi gửiđường link trên cho nạn nhân, hacker có thể sẽ mã hoá nó thành những ký tự lạ khóđọc, ví dụ:

http%3A%2F%2Fvictim.com%2Findex.php%3Fid%3D%3Cscript%3Ealert

%28document.cookie%29%3C%2Fscript%3E

như vậy, nạn nhân sẽ không nghi ngờ đường link lạ, và click vào link

Khi nạn nhân click vào đường link được hacker gửi, trình duyệt sẽ load trangweb và thực thi các đoạn script kèm theo, sau đó gửi về cho hacker những thông tincủa nạn nhân

Trang 5

1.3.2 Persistent XSS (Stored XSS)

Stored XSS là dạng tấn công mà hacker chèn trực tiếp các mã độc vào cơ sở

dữ liệu của website Dạng tấn công này xảy ra khi các dữ liệu được gửi lên serverkhông được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu Khi người dùngtruy cập vào trang web này thì những đoạn script độc hại sẽ được thực thi chungvới quá trình load trang web

Dạng tấn công bằng Stored XSS được mô tả như sau:

Hình 1.4 Mô hình Stored XSS

Như hình trên, ta có thể thấy được quá trình tấn công như sau:

Trước tiên, hacker sẽ khai thác lỗi Stored XSS trên website bằng cách tìmnhững form (khung đăng ký, khung comment, khung liên hệ …) không được kiểmtra kỹ dữ liệu đầu vào và tiến hành chèn các đoạn mã độc vào cơ sở dữ liệu

Sau đó khi người dùng truy cập vào trang web có chứa dữ liệu liên quan đến

cơ sở dữ liệu này thì ngay lập tức, các đoạn script độc hại sẽ được chạy chung vớitrang web

Khi các đoạn script được thực thi, tuỳ vào mục đích của hacker, các đoạnscript sẽ gửi về cho hacker nhũng thông thông tin như cookie, session token … đếnđây, coi như quá trình tấn công của hacker đã thành công

1.3.3 DOM-based XSS

DOM-based XSS là một dạng tấn công XSS làm thay đổi cấu trúc của trangweb bằng cách thay đổi cấu trúc HTML Đối với dạng tấn công này, hacker sẽ chèncác đoạn script nhằm làm thay đổi giao diện mặc định của trang web thành một

Trang 6

giao diện giả, ví dụ như tạo ra form đăng nhập giả và dụ người dùng đăng nhập đểchiếm mật khẩu của họ DOM-based XSS là một biến thể của Persistent XSS vàNon-Persistent XSS.

Để hiểu rõ hơn về DOM-based XSS chúng ta cùng xem xét ví dụ sau:

Ví dụ ta có một URL như sau: http://www.victim.com/hello.php

URL trên sẽ chào mừng người dùng có tên: Hello, phpcoban

Xem xét source code class hello.php, ta thấy không có sự ràng buộc dữ liệunào, vì vậy, thay vì truyền tham số là phpcoban, ta có thể thay bằng:

<script><span class="bdv_cx" decoration:underline;color:#1E6EC1;" id="bdvrplc2" onMouseOver="return escape('document');">document</span>.getElementById('hello').innerHTML="<l abel>Vui lòng xác nhận lại mật khẩu để tiếp tục: </label><input type='password'/><button onclick='show()'>Submit</button>";function show() {alert('HACKED');}</script>

style="cursor:pointer;text-Như vậy URL sẽ thành:

Trang 7

Khi người dùng nhập mật khẩu vào và nhấn Submit thì lập tức script sẽ đượcthực thi và gửi về cho hacker mật khẩu của người dùng Ở ví dụ trên đơn giản chỉ làhiện ra chữ HACKED.

Qua ví dụ trên ta thấy cách tấn công của DOM-based XSS cũng tương đốigiống với cách tấn công của Reflected XSS là phải dụ người dùng click vào link cóchứa mã độc để thực hiện tấn công Ngoài ra, cũng có thể thấy giao diện của trangweb có thể bị thay đổi bởi đoạn script được thêm vào, và sau đó nó sẽ thực thi như

là một phần của trang web, như vậy sẽ làm cho người dùng lầm tưởng và hacker sẽ

Cookie cho phép các công ty tiếp thị hoặc quảng cáo Khi một hacker tiếnhành một cuộc tấn công truyền thống dựa vào thói quen và sở thích người dùng.Thay vì tấn công trên diện rộng hacker sẽ tập trung khai thác vào khu vực dễ bị tổnthương nhất trên website, sử dụng một vài thủ thuật đơn giản như dùng các thẻjavascript/css và html kẻ tấn công sẽ thực hiện mục tiêu tấn công của mình như:chiếm quyền hệ thống, thực hiện chuyển tiền…

Người dùng thường xuyên đăng nhập vào các WebSite phổ biến, biết đượckhảnăng thành công khi tấn công vào các Website này là khá cao nên các attackerthường thực hiện các cuộc tấn công với quy mô lớn Kỹ thuật này sử dụng phươngpháp tương tự như JavaScript Port Scanning bằng việc kiểm tra lỗi đăng nhậptừgiao diện JavaScript Console, nhiều Website yêu cầu khi đăng nhập phải cóURLvà trả về nội dung HTML khác nhau tùy thuộc vào quá trình đăng nhập cóhoặc không

Ví dụ: Quản lý tài khoản người dùng, người quản trị muốn thực hiện chứcnăng trên bắt buộc phải được xác thực trước khi truy cập vào Website Nếu URL‘s

được nạp một cách tự động thông qua thẻ <script src=‖> nó sẽ gây ra các lỗi khác

nhau và được ghi nhận qua giao diện JavaScrip Console bởi vì phản hồi ở đây làcác chuỗi dẫn xuất HTML

Trang 8

1.4.2 Tấn công qua mạng Intranet:

Hầu hết chúng ta tin rằng trong khi lướt Web mình đã được bảo vệ bởi tườnglửa,cách ly thông qua lớp địa chỉ IP riêng Với sự hiểu biết này, giả sử các phầnmềm bảo mật của những trang Web mạng nội bộ và giao diện Web dựa trên cácthiết bị định tuyến router, hệ thống tường lửa, IP Phone… thì ngay cả khi các bản

vá lỗi chưa được cập nhật chúng ta vẫn an toàn trong khu vực được bảo vệ bởi cácphần mềm bảo mật trên, điều này có vẻ không khả thi lắm Trình duyệt Web hoàntoàn có thể được kiểm soát bởi bất kỳ trang web nào, cho phép người dùng trởthành tâm điểm cho các cuộc tấn công mạng nội bộ Hãy tưởng tượng xem khi truycập vào một Website có chứa phần mềm độc hại với các đoạn mã JavaScript, nó cóthể cấu hình lại một cách tự động router hay tường lửa từ đó tạo thành một đườnghầm thông ra thế giới mạng bên ngoài

Hình 1.5 Mô tả tấn công qua mạng Intranet

Các bước khai thác:

Bước 1: Một nạn nhân truy cập một trang Web độc hại hoặc nhấn vào một liên

kết không rõ ràng, sẽ bị nhúng mã JavaScript chứa phần mềm độc hại, sau đó sẽkiểm soát trình duyệt của họ

Bước 2: Mã độc JavaScript Malware sẽ tải một ứng dụng trên nền Java Applet

và làm lộ ra địa chỉ IP của nạn nhân thông qua NAT IP

Bước 3: Sau đó sử dụng trình duyệt của nạn nhân như một nền tảng để tấn

công, mã độc JavaScript sẽ xác định máy chủ Web trên mạng nội bộ

Bước 4: Phát động tấn công công chống lại các Web nội bộ hoặc Web bên

ngoại, thu thập thông tin đánh cắp được và gửi ra mạng bên ngoài

1.4.3 XSS Defacements

Cũng như các tiêu chuẩn về hack dựa trên nền Web, XSS Defacement có thểgây ra khá nhiều sự hỗn loạn và nhầm lẫn khi chúng được sử dụng để hack một

Trang 9

trang Web XSS Defacement ít có hại trong việc thay đổi các trang từ phía máy chủnhưng lại được thực hiện gián tiếp thông qua các mã JavaScript, CSS và các côngnghệ Web khác.

Có hai loại XSS Defacement: liên tục và không liên tục

Mức độ nghiêm trọng của XSS Defacement liên tục là cao hơn so với XSSDefacement không liên tục vì những kẻ tấn công có thể sẽ thay đổi vĩnh viễn thôngtin các trang bị tấn công như sửa đổi nội dung, đánh cắp một số thông tin cá nhâncủa người dùng Mặc dù kẻ tấn công không có quyền truy cập trực tiếp vào hệthống thông tin tại nơi trang Web bị lỗi XSS

XSS Defacement không liên tục thường dễ dàng tìm kiếm và thực thi nhưng

để nó làm việc attacker sẽ lừa người dùng qua một URL cụ thể

Một số cách Deface Website đơn giản:

Thay đổi màu của background

<script>document.body.bgcolor= ― màu bất kỳ‖;</script>

Đoạn script sẽ redirect đến trang deface của bạn đã upload

1.4.4 Điều khiển duy trì

Javascript có một khả năng rất lớn trong việc điều khiển thông qua trình Duyệt

và các môi trường công khai khác, ngay cả trong trường hợp có sự hiện diện củachính sách cùng nguồn (same-origin) và các thiết đặt của Internet Explorer (IE).Javascript có thể truy cập cookies, nhận các phím được bấm, theo dõi trang Webđược truy cập Điều đầu tiên chúng ta cần làm là cài đặt một phương pháp để duytrì việc điều khiển thông qua trình duyệt, ngay cả khi người dùng click vào các linkkhác

1.4.5 Thu thập thông tin địa chỉ IP đã bị NAT

Bước tiếp theo trong quá trình khai thác mạng intranet là nhận địa chỉ IP đã bịNAT của người dùng Đề làm được điều này, chúng là cần gọi một applet Java đặc

Trang 10

biệt có tính năng này Một trong số chúng là MyAddress được phát triển bởi LarsKindermann, bởi vì nó hoạt động tốt, rất dễ sử dụng, và gửi địa chỉ IP tới nơi màJavascript có thể truy cập được Đoạn code sau tải MyAddress.class và sau đó mở

URL http://attacker/demo.html?IP=XXXX và dữ liệu này có thể được truy cập từ

1.5.1 Burp suite

Proxy là một máy chủ, làm trung gian giữa máy khách và các máy chủ Web.Proxy sẽ nhận yêu cầu từ máy khách và gửi yêu cầu đến các máy chủ Web, sau đólại trả kết quả về cho máy khách Thỉnh thoảng, proxy có thể được sử dụng để thayđổi dữ liệu đến và đi, hoặc dụng nó để theo dõi các gói tin được gửi qua lại

Hình 1.6 Công cụ Brupsuite

Trang 11

Burp Proxy là một phần của bộ công cụ viết bằng Java là Burp Suite, cho phépthâm nhập vào các ứng dụng Web Khi cấu hình và chạy Burp Proxy, bạn có thểtheo dõi mọi dữ liệu được gửi và nhận bởi một máy khách Nó cho phép bạn tìmcác thông tin được gửi và thay đổi chúng Tất nhiên những dữ liệu bị that đổi đượcgửi đến trình duyệt của bạn, và nó chỉ có tác dụng với bạn mà thôi Tuy nhiên, nếu

nó có thể tắt tính năng bảo vệ Javascript ở máy khách thì nó có thể thực hiện cáchành vi bất chính, như tấn công XSS Nó cũng có thể được sử dụng để loại bỏnhiều thông tin có thể bị rò gỉ như cookie, các link dẫn, hoặc các thông tin dư thừa,làm chậm việc khai thác lỗ hổng Một tính năng hữu dụng khác là việc có thểchuyển sang hex mode (nhìn mã hexa của gói tin), tính năng này đặc biệt hữu dụngkhi xem các trang Web sử dụng encode không chuẩn như US-ASCII hay UTF-16Burp Proxy là một trong những công cụ hữu dụng nhất trong đánh giá bảo mậtcác ứng dụng Web Nó không chỉ giúp khám phá những thứ rõ ràng, nó có thể tuỳbiến bằng cách viết các quy tắc riêng nếu bạn biết mình đang tìm kiếm điều gì Ví

dụ, bạn chỉ muốn tìm các file XML để gỡ rối Ajax, bạn có thể viết quy tắc để BurpProxy thực hiện điều này

1.5.2 Acunetix WVS

Acunetix WVS (Web Vulnerability Scanner) là chương trình tự động kiểm tracác ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting,… và tìm kiếm những chính sách đối với mật khẩu đăng nhập cũngnhư các phương thức xác thực vào Web Site

Hình 1.7 Công cụ Acunetix

Trang 12

Acunetix WVS là một công cụ quét lỗi cho ứng dụng Web dựa trên một cơ sở

dữ liệu rộng lớn được cập nhật thường xuyên, với các thuật toán heuristic đáp ứngđược các cơ chế họat động phức tạp của môi trường Web Acunetix WVS có thể tựđộng kiểm tra các lổ hỗng thông dụng như cross site scripting, sql injection và cácmối nhạy cảm khác của những web site có thể truy cập bằng trình duyệt, hay nhữngứng dụng được xây dụng trên các kỹ thuật tiên tiến như AJAX để thực hiện đượcđiều này Acunetix WVS dựa trên nhiều phương pháp và công cụ tích hợp để:

Crawling (lấy về) toàn bộ website gồm tất cả các liên kết trên site và cả trongtập tin robots.txt sau đó hiển thị tòan bộ cấu trúc này một cách chi tiết

Sau tiến trình cwarling và khám phá tình trạng của ứng dụng web, AcunetixWVS tự động phát động các đợt tấn công đã được lập trình sẳn dựa trên các lổhổng, giống như khi web site bị 1 hacker tấn công thực sự, phân tích các trang vànhững vị trí có thể nhập liệu cùng với các sự kết hợp khác nhau của dữ liệu đầu vào

có thể làm cho website hiển thị những thông tin nhạy cảm

Sau khi tìm ra được các lổ hổng, Acunetix WVS thông báo trên các “AlertsNode”, mỗi alert gồm các thông tin về lỗi cũng như các mối nguy hiểm có thể gặpphải và “dĩ nhiên” là kèm theo các khuyến nghị về cách thức khắc phục

Sau khi tiến trình kiểm tra hòan tất, chúng ta có thể lưu lại thành một tập tin đểphân tích sau này, với công cụ báo cáo chuyên nghiệp sẽ giúp cho các web master

dễ dàng tổng hợp các kết quả kiểm tra khác nhau trên ứng dụng Web của mình

1.5.3 Các tiện ích mở rộng của Firefox

1.5.3.1 Live HTTP Header

Live HTTP Headers là một tiện ích mở rộng của Firefox giúp chúng ta phântích và tái hiện lại các truy vấn HTTP Công cụ này có thể được cài đặt trực tiếp từ

địa chỉ http://livehttpheaders.mozdev.org Ở đây, người dùng cũng có thể tìm thấy

nhiều thông tin hữu ích khác

Có hai cách chính để sử dụng Live HTTP Headers Nếu người dùng chỉ muốntheo dõi lưu thông, chỉ cần mở một thanh hiển thị của LiveHTTPHeaders bằng cáchtruy cập View > Sidebar > Live HTTP Headers Tuy nhiên nếu bạn muốn sử dụngtoàn bộ tính năng, bạn nên mở nó trên một cửa sổ riêng biệt, bằng cách truy câpTools > Live HTTP Headers Cửa sổ chương trình sẽ có dạng như hình dưới đây

Trang 13

Hình 1.8 Tiện ích Live HTTP Header

LiveHTTPHeaders là một trong những công cụ hữu ích nhất khi nó được dùng

để tìm các lỗ hổng XSS Chúng ta có thể dễ dàng truy cập nội dung các truy vấn,thay đổi chúng và gửi chúng chỉ cần một vài click chuột Nếu người dùng đã sửdụng Live HTTP Headers, có thể dễ dàng nhận ra rằng, việc tái hiện các truy vấnnày sẽ cho kết quả ngay trên trình duyệt của bạn Không giống như các công cụkhác như proxy chẳng hạn, người dùng cần phải nhìn vào sự thay đổi cấu trúcHTML Live HTTP Headers cung cấp một giao diện trực quan với những thay đổiđược thể hiện ngay trên màn hình

TamperData có thể được cài đặt từ địa chỉ http://tamperdata.mozdev.org Cửa

sổ tiện ích này giống như hình dưới đây khi truy cập từ Tools > Tamper Data

Ngày đăng: 10/07/2017, 12:29

TỪ KHÓA LIÊN QUAN

w