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

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

Đ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

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.

MỤC LỤC MỤC LỤC HÌNH ẢNH CHƯƠNG TỔNG QUAN VỀ XSS 1.1 Khái niệm XSS Cross-Site Scripting hay gọi tắt XSS (thay gọi tắt CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet HTML) kĩ thuật công cách chèn vào website động (ASP, PHP, CGI, JSP …) thẻ HTML hay đoạn mã script nguy hiểm gây nguy hại cho người sử dụng khác Trong đó, đoạn mã nguy hiểm đựơc chèn vào hầu hết viết Client-Site Script JavaScript, JScript, DHTML thẻ HTML XSS kỹ thuật hack website phổ biến cách chèn vào URL, chèn qua tìm kiếm chèn textbox thẻ HTML đoạn mã script nguy hiểm, từ chiếm quyền điều khiển victim thực mệnh lệnh mà hacker đưa Lỗ hổng XSS xuất từ năm 90 ngày đầu Web Khi đó, trang Web thương mại điện tử bắt đầu xuất ngày nhiều Các trang Web sử dụng khung HTML JavaScript để xây dựng nội dụng cho thật "cool" Javascript cho phép nhà phát triển xây dựng trang Web với ảnh động, menus nổi, cửa sổ pop-up, v.v Nhưng hacker nhanh chóng nhận lỗ hổng Các hacker nhận rằng, người dùng truy cập trang Web, họ tải trang web (ngân hàng, bán đấu giá, cửa hàng, Web mail, v.v ) chung cửa sổ trình duyệt Web Và sử dụng JavaScript, hacker vượt qua ranh giới hai trang web, đọc liệu trang Web từ trang Web khác Hacker ăn cắp tên mật người dùng nhận, ăn cắp cookie, hay tác động lên thông tin cá nhân hiển thị hình Hinh 1.1 Minh họa XSS 1.2 Hoạt động XSS Về XSS SQL Injection hay Source Injection, yêu cầu (request) gửi từ máy client tới server nhằm chèn vào thông tin vượt tầm kiểm soát server Nó request gửi từ form liệu URL http://www.example.com/search.cgi?query=alert('Website bị lỗi XSS!'); Và trình duyệt bạn lên popup thông báo "Website bị lỗi XSS!" Hình 1.2 Tấn công XSS Các đoạn mã thẻ script không bị giới hạn chúng hoàn toàn thay file nguồn server khác thông qua thuộc tính src thẻ script Cũng lẽ mà chưa thể lường hết độ nguy hiểm lỗi XSS Nhưng kĩ thuật công khác làm thay đổi liệu nguồn web server (mã nguồn, cấu trúc, sở liệu) XSS gây tổn hại website phía client mà nạn nhân trực tiếp người khách duyệt site Tất nhiên hacker sử dụng kĩ thuật đề deface website công vào bề mặt website Thật vậy, XSS ClientSide Script, đoạn mã chạy trình duyệt phía client XSS không làm ảnh hưởng đến hệ thống website nằm server Mục tiêu công XSS không khác người sử dụng khác website, họ vô tình vào trang có chứa đoạn mã nguy hiểm hacker để lại họ bị chuyển tới website khác, đặt lại homepage, hay nặng mật khẩu, cookie chí máy tính bạn bị cài loại virus, backdoor, worm 1.3 Phân loại XSS 1.3.1 Non-Persistent( Reflected XSS) Reflected XSS dạng công thường gặp loại hình XSS Với Reflected XSS, hacker không gửi liệu độc hại lên server nạn nhân, mà gửi trực tiếp link có chứa mã độc cho người dùng, người dùng click vào link trang web load chung với đoạn script độc hại Reflected XSS thường dùng để ăn cắp cookie, chiếm session,… nạn nhân hoăc cài keylogger, trojan … vào máy tính nạn nhân Dạng công Reflected XSS tả sau: Hình 1.3 hình Reflected Như hình trên, ta thấy trình công sau: Trước tiên, hacker gửi cho nạn nhân đường link có chứa mã độc hại kèm, ví dụ: http://victim.com/index.php?id=alert(document.cookie) đường link dễ khiến nạn nhân ý nghi ngờ, nên gửi đường link cho nạn nhân, hacker mã hoá thành ký tự lạ khó đọc, ví dụ: http%3A%2F%2Fvictim.com%2Findex.php%3Fid%3D%3Cscript%3Ealert %28document.cookie%29%3C%2Fscript%3E vậy, nạn nhân không nghi ngờ đường link lạ, click vào link Khi nạn nhân click vào đường link hacker gửi, trình duyệt load trang web thực thi đoạn script kèm theo, sau gửi cho hacker thông tin nạn nhân 1.3.2 Persistent XSS (Stored XSS) Stored XSS dạng công mà hacker chèn trực tiếp mã độc vào sở liệu website Dạng công xảy liệu gửi lên server không kiểm tra kỹ lưỡng mà lưu trực tiếp vào sở liệu Khi người dùng truy cập vào trang web đoạn script độc hại thực thi chung với trình load trang web Dạng công Stored XSS tả sau: Hình 1.4 hình Stored XSS Như hình trên, ta thấy trình công sau: Trước tiên, hacker khai thác lỗi Stored XSS website cách tìm form (khung đăng ký, khung comment, khung liên hệ …) không kiểm tra kỹ liệu đầu vào tiến hành chèn đoạn mã độc vào sở liệu Sau người dùng truy cập vào trang web có chứa liệu liên quan đến sở liệu lập tức, đoạn script độc hại chạy chung với trang web Khi đoạn script thực thi, tuỳ vào mục đích hacker, đoạn script gửi cho hacker nhũng thông thông tin cookie, session token … đến đây, coi trình công hacker thành công 1.3.3 DOM-based XSS DOM-based XSS dạng công XSS làm thay đổi cấu trúc trang web cách thay đổi cấu trúc HTML Đối với dạng công này, hacker chèn đoạn script nhằm làm thay đổi giao diện mặc định trang web thành giao diện giả, ví dụ tạo form đăng nhập giả dụ người dùng đăng nhập để chiếm mật họ DOM-based XSS biến thể Persistent XSS Non-Persistent XSS Để hiểu rõ DOM-based XSS xem xét ví dụ sau: Ví dụ ta có URL sau: http://www.victim.com/hello.php Như ta thấy, đoạn code dùng để thị nội dung chào mừng người dùng người dùng chuyển hướng tới, tên người dùng lấy từ tham số: http://www.victim.com/hello.php?name=phpcoban URL chào mừng người dùng có tên: Hello, phpcoban Xem xét source code class hello.php, ta thấy ràng buộc liệu nào, vậy, thay truyền tham số phpcoban, ta thay bằng: document.getElementById('hello').innerHTML="Vui lòng xác nhận lại mật để tiếp tục: Submit";function show() {alert('HACKED');} Như URL thành: http://www.victim.com/hello.php? name=document.getElementById('hello').innerHTML="Vui lòng xác nhận lại mật để tiếp tục:Submit" ;function show(){alert('HACKED');} Khi đó, giao diện trang web thay đổi thành: Khi người dùng nhập mật vào nhấn Submit script thực thi gửi cho hacker mật người dùng Ở ví dụ đơn giản chữ HACKED Qua ví dụ ta thấy cách công DOM-based XSS tương đối giống với cách công Reflected XSS phải dụ người dùng click vào link có chứa mã độc để thực công Ngoài ra, thấy giao diện trang web bị thay đổi đoạn script thêm vào, sau thực thi phần trang web, làm cho người dùng lầm tưởng hacker dễ dàng đạt mục đích 1.4 Các phương thức công XSS 1.4.1 Đánh cắp cookie người dùng Cookie nhắc nhở mà website lưu trữ máy tính bạn địnhdanh cho bạn Khi bạn truy cập trang web, website đặt cookie máy đó, thay cho việc liên tục hỏi bạn thông tin nhau, chươngtrình website lưu thông tin vào cookie mà cần thông tin đọc cookie Nếu cookie bạn phải nhập lại thông tin hình web Thông tin mà cookie lưu trữ thông tin mà thân bạn chia sẻ với website tạo cookie Cookie cho phép công ty tiếp thị quảng cáo Khi hacker tiến hành công truyền thống dựa vào thói quen sở thích người dùng Thay công diện rộng hacker tập trung khai thác vào khu vực dễ bị tổn thương website, sử dụng vài thủ thuật đơn giản dùng thẻ javascript/css html kẻ công thực mục tiêu công như: chiếm quyền hệ thống, thực chuyển tiền… Người dùng thường xuyên đăng nhập vào WebSite phổ biến, biết khảnăng thành công công vào Website cao nên attacker thường thực công với quy lớn Kỹ thuật sử dụng phương pháp tương tự JavaScript Port Scanning việc kiểm tra lỗi đăng nhập từgiao diện JavaScript Console, nhiều Website yêu cầu đăng nhập phải có URLvà trả nội dung HTML khác tùy thuộc vào trình đăng nhập 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 chức bắt buộc phải xác thực trước truy cập vào Website Nếu URL‘s nạp cách tự động thông qua thẻ gây lỗi khác ghi nhận qua giao diện JavaScrip Console phản hồi chuỗi dẫn xuất HTML 1.4.2 Tấn công qua mạng Intranet: Hầu hết tin lướt Web bảo vệ tường lửa,cách ly thông qua lớp địa IP riêng Với hiểu biết này, giả sử phần mềm bảo mật trang Web mạng nội giao diện Web dựa thiết bị định tuyến router, hệ thống tường lửa, IP Phone… vá lỗi chưa cập nhật an toàn khu vực bảo vệ phần mềm bảo mật trên, điều không khả thi Trình duyệt Web hoàn toàn kiểm soát trang web nào, cho phép người dùng trở thành tâm điểm cho công mạng nội Hãy tưởng tượng xem truy cập vào Website có chứa phần mềm độc hại với đoạn mã JavaScript, cấu hình lại cách tự động router hay tường lửa từ tạo thành đường hầm thông giới mạng bên Hình 1.5 tả 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 trang Web độc hại nhấn vào liên kết không rõ ràng, bị nhúng mã JavaScript chứa phần mềm độc hại, sau kiểm soát trình duyệt họ Bước 2: Mã độc JavaScript Malware tải ứng dụng Java Applet làm lộ địa IP nạn nhân thông qua NAT IP Bước 3: Sau sử dụng trình duyệt nạn nhân tảng để công, mã độc JavaScript xác định máy chủ Web mạng nội Bước 4: Phát động công công chống lại Web nội Web bên ngoại, thu thập thông tin đánh cắp gửi mạng bên 1.4.3 XSS Defacements Cũng tiêu chuẩn hack dựa Web, XSS Defacement gây nhiều hỗn loạn nhầm lẫn chúng sử dụng để hack trang Web XSS Defacement có hại việc thay đổi trang từ phía máy chủ lại thực gián tiếp thông qua mã JavaScript, CSS công nghệ Web khác Có hai loại XSS Defacement: liên tục không liên tục Mức độ nghiêm trọng XSS Defacement liên tục cao so với XSS Defacement không liên tục kẻ công thay đổi vĩnh viễn thông tin trang bị công sửa đổi nội dung, đánh cắp số thông tin cá nhân người dùng Mặc dù kẻ công quyền truy cập trực tiếp vào hệ thống thông tin 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 thực thi để làm việc attacker lừa người dùng qua URL cụ thể Một số cách Deface Website đơn giản: Thay đổi màu background document.body.bgcolor= ― màu bất kỳ‖; Ví dụ: http://targetsite.com/document.body.bgcolor=―red‖ Thay đổi hình document.body.background="http://hình bạn.jpg"; Deface PasteHTML: Trước tiên, bạn upload trang deface lên Pastehtml sau lấy link Khi bạn tìm trang bị lỗi XSS bạn đánh đoạn script sau vào URL: window.location="http://pastehtml.com/link_deface_mà_bạn_đã _upload"; Đoạn script redirect đến trang deface bạn upload 1.4.4 Điều khiển trì Javascript có khả lớn việc điều khiển thông qua trình Duyệt môi trường công khai khác, trường hợp có diện sách nguồn (same-origin) thiết đặt Internet Explorer (IE) Javascript truy cập cookies, nhận phím bấm, theo dõi trang Web truy cập Điều cần làm cài đặt phương pháp để trì việc điều khiển thông qua trình duyệt, người dùng click vào link khác 1.4.5 Thu thập thông tin địa IP bị NAT Bước trình khai thác mạng intranet nhận địa IP bị NAT người dùng Đề làm điều này, chúng cần gọi applet Java đặc biệt có tính Một số chúng MyAddress phát triển Lars Kindermann, hoạt động tốt, dễ sử dụng, gửi địa IP tới nơi mà Javascript truy cập Đoạn code sau tải MyAddress.class sau mở URL http://attacker/demo.html?IP=XXXX liệu truy cập từ xa 1.5 Công cụ khai thác lỗ hỏng XSS Việc tìm kiếm lợi dụng lỗ hổng XSS phức tạp tốn nhiều thời gian Vì việc sử dụng công cụ cần thiết Trong phần này, giới thiệu vài công cụ phổ biến 1.5.1 Burp suite Proxy máy chủ, làm trung gian máy khách máy chủ Web Proxy nhận yêu cầu từ máy khách gửi yêu cầu đến máy chủ Web, sau lại trả kết cho máy khách Thỉnh thoảng, proxy sử dụng để thay đổi liệu đến đi, dụng để theo dõi gói tin gửi qua lại Hình 1.6 Công cụ Brupsuite 10 Acunetix WVS công cụ quét lỗi cho ứng dụng Web dựa sở liệu rộng lớn cập nhật thường xuyên, với thuật toán heuristic đáp ứng chế họat động phức tạp môi trường Web Acunetix WVS tự động kiểm tra lổ hỗng thông dụng cross site scripting, sql injection mối nhạy cảm khác web site truy cập trình duyệt, hay ứng dụng xây dụng kỹ thuật tiên tiến AJAX để thực điều Acunetix WVS dựa nhiều phương pháp công cụ tích hợp để: Crawling (lấy về) toàn website gồm tất liên kết site tập tin robots.txt sau hiển thị tòan cấu trúc cách chi tiết Sau tiến trình cwarling khám phá tình trạng ứng dụng web, Acunetix WVS tự động phát động đợt công lập trình sẳn dựa lổ hổng, giống web site bị hacker công thực sự, phân tích trang vị trí nhập liệu với kết hợp khác liệu đầu vào làm cho website hiển thị thông tin nhạy cảm Sau tìm lổ hổng, Acunetix WVS thông báo “Alerts Node”, alert gồm thông tin lỗi mối nguy hiểm gặp phải “dĩ nhiên” kèm theo khuyến nghị cách thức khắc phục Sau tiến trình kiểm tra hòan tất, lưu lại thành tập tin để phân tích sau này, với công cụ báo cáo chuyên nghiệp giúp cho web master dễ dàng tổng hợp kết kiểm tra khác ứng dụng Web 1.5.3 Các tiện ích mở rộng Firefox 1.5.3.1 Live HTTP Header Live HTTP Headers tiện ích mở rộng Firefox giúp phân tích tái lại truy vấn HTTP Công cụ cài đặt trực tiếp từ địa http://livehttpheaders.mozdev.org Ở đây, người dùng tìm thấy nhiều thông tin hữu ích khác Có hai cách để sử dụng Live HTTP Headers Nếu người dùng muốn theo dõi lưu thông, cần mở hiển thị LiveHTTPHeaders cách truy cập View > Sidebar > Live HTTP Headers Tuy nhiên bạn muốn sử dụng toàn tính năng, bạn nên mở cửa sổ riêng biệt, cách truy câp Tools > Live HTTP Headers Cửa sổ chương trình có dạng hình 12 Hình 1.8 Tiện ích Live HTTP Header LiveHTTPHeaders công cụ hữu ích dùng để tìm lỗ hổng XSS Chúng ta dễ dàng truy cập nội dung truy vấn, thay đổi chúng gửi chúng cần vài click chuột Nếu người dùng sử dụng Live HTTP Headers, dễ dàng nhận rằng, việc tái truy vấn cho kết trình duyệt bạn Không giống công cụ khác proxy chẳng hạn, người dùng cần phải nhìn vào thay đổi cấu trúc HTML Live HTTP Headers cung cấp giao diện trực quan với thay đổi thể hình 1.5.3.2 TamperData TamperData tiện ích cho phép người kiểm tra bảo mật trang Web hay kẻ công dễ dàng thay đổi nội dung truy vấn trước gửi đến máy chủ Bằng cách này, đưa tính giống Replay Live HTTP Headers TamperData cung cấp thêm nhiều tính hữu ích khác TamperData cài đặt từ địa http://tamperdata.mozdev.org Cửa sổ tiện ích giống hình truy cập từ Tools > Tamper Data 13 Hình 1.9 Tiện ích TamperData Để bất đầu thay đổi liệu, bạn click Start Tamper gửi truy vấn Người dùng thay đổi thông tin bạn muốn gửi đến máy chủ Người dùng nhận rằng, nhiều lỗi XSS hay SQLInjection có chung vấn đề (vector công giống nhau) TamperData dung cấp tính mà người dùng dễ dàng lựa chọn vector người dùng muốn chúng thêm vào trường tương ứng Điều giúp trình tìm bug dễ dàng nhanh nhiều Để sử dụng vector, click chuột phải vào trường muốn thay đổi chọn dang sách đưa Người dùng chọn menu data, XSS, SQL vectors Một vector chọn, trình thay đổi truy vấn hoàn toàn tự động,chỉ cần ấn OK Mọi thay đổi cho kết trình duyệt người dùng Người dùng dễ dàng quay lại, tìm hiểu tái truy vấn trình duyệt Đó chưa phải tất TamperData dung cấp cho bạn Tính làm TamperData khác với tiện ích khác khả lựa chọn payload để công TamperData thiết kế để sử dụng công cụ thử thâm nhập hệ thống Nó tích hợp sẵn nhiều payload Và thêm vào phần riêng cửa sổ Extension Configuration Để sử dụng tính này, bạn click Options hình chính, dễ dang lựa chọn payload danh sách đưa Tính khiến TamperData công cụ tốt giúp bạn tìm kiếm lỗ hổng XSS 14 1.6 Phòng chống công XSS Để ngăn chặn XSS đòi hỏi phân biệt mã độc nội dung web - Khuyến khích loại bỏ ký tự đặc biệt cách cẩn thận dựa nội dung bối cảnh HTML (phần thân, thuộc tính, Javascript, CSS, URL) mà liệu xuất Người phát triển cần phải thực điều ứng dụng họ trừ thư viện hiển thị làm - Xác thực liệu đầu vào hợp lệ qua “danh sách trắng” khuyến khích cách phòng thủ toàn diện bời nhiều ứng dụng yêu cầu kí tự đặc biệt Nên giải mã kí tự mã hóa xác thực độ dài, kí tự, định dạng liệu trước cho phép sử dụng liệu đầu vào - Hãy xem xét sử dụng tính Mozilla ContentSecurity Policy mắt Firefox để bảo vệ chống lại công XSS.[1] Đối với người thiết kế phát triển ứng dụng web - Với liệu, thông tin nhập người dùng, người thiết kế phát triển ứng dụng web cần thực vài bước sau: - Chỉ chấp nhận liệu hợp lệ - Từ chối nhận liệu hỏng - Liên tục kiểm tra lọc liệu - Tạo danh sách thẻ HTML phép sử dụng, xóa bỏ thẻ , coi đoạn script đoạn trích dẫn lỗi - Lọc dấu nháy đơn hay nháy kép - Lọc kí tự NULL - Xóa kí tự “>”, “

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

Từ khóa liên quan

Mục lục

  • MỤC LỤC HÌNH ẢNH

  • CHƯƠNG 1. TỔNG QUAN VỀ XSS

    • 1.1. Khái niệm XSS

    • 1.2. Hoạt động của XSS

    • 1.3. Phân loại XSS

      • 1.3.1. Non-Persistent( Reflected XSS).

      • 1.3.2. Persistent XSS (Stored XSS)

      • 1.3.3. DOM-based XSS

      • 1.4. Các phương thức tấn công XSS

        • 1.4.1. Đánh cắp cookie người dùng.

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

        • 1.4.3. XSS Defacements

        • 1.4.4. Điều khiển duy trì

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

        • 1.5. Công cụ khai thác lỗ hỏng XSS

          • 1.5.1. Burp suite

          • 1.5.2. Acunetix WVS

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

            • 1.5.3.1. Live HTTP Header

            • 1.5.3.2. TamperData

            • 1.6. Phòng chống tấn công XSS

            • CHƯƠNG 2. KĨ THUẬT TẤN CÔNG DOM BASED XSS

              • 2.1. Tổng quan DOM based XSS

              • 2.2. Kĩ thuật tấn công DOM Based XSS

                • 2.2.1. Khai thác lỗ hổng XSS không duy trì dựa trên DOM

                • 2.2.2. Khai thác lỗ hổng XSS duy trì dựa trên DOM

                • CHƯƠNG 3. MÔ PHỎNG TẤN CÔNG DOM BASED XSS

                  • 3.1. Mô hình tấn công

Tài liệu cùng người dùng

Tài liệu liên quan