Việc tìm kiếm và khai thác các lỗ hổng bảo mật đòi hỏi rất nhiều kỹ năng. Nếu bạn muốn viết code tốt hơn, bạn nên thường xuyên tìm các lỗ hổng trên ứng dụng hoặc website của người khác. Mình đã soạn ra danh sách Top 10 trang web để thực hành hack XSS giúp bạn nâng cao khả năng khai thác. Các Website được tạo ra để bạn có thể tìm hiểu cách những kẻ tấn công khai thác lỗ hổng Cross-site Scripting như thế nào, bạn có thể thực hành ngay trên các trang Web đó.
Những trang web XSS này đều được xây dựng dựa trên các trường hợp tấn công thực tế. Một trong những trang web đó sẽ giúp bạn tìm hiểu những kiến thức cơ bản về Cross-site Scripting. Và bạn cũng có thể tự vượt qua thử thách bằng những trang web XSS có độ khó cao hơn. Bạn có thể sử dụng các trang web XSS này để thực hành và kiểm tra kỹ năng của mình nhưng cũng có thể sử dụng nó để giáo dục người khác về tầm quan trọng của việc bảo mật code hiệu quả.
Lưu ý: Nếu bạn sử dụng Chrome (hoặc trình duyệt dựa trên Chromium) để thực hiện các cuộc tấn công XSS, bạn có thể phải tắt trình kiểm tra XSS bằng flag sau: –disable-xss-auditor.
Top 10 trang web thực hành kỹ năng Hack XSS
Nếu không vượt qua các bài tập, bạn có thể dùng công cụ tấn công tự động XSS-Freak mà mình đã giới thiệu.
#1: Google XSS Game
Vào năm 2014, Google đã tạo ra một game cho bạn thấy việc khai thác các lỗ hổng XSS dễ dàng như thế nào. Nó được phát hành để tuyên truyền nhận thức về bảo mật và quảng bá chương trình bug bounty. Game có 6 cấp độ khó tăng dần, Google XSS rất đơn giản. Tất cả những gì nó yêu cầu là kiến thức JavaScript cơ bản và một chút hiểu biết về Python. Mình không phải là một kỹ sư bảo mật nhưng đã chơi được tới cấp 4 mà không cần tìm một giải pháp nào cả. Chắc chắn, bạn cũng có thể làm được.
#2: alert(1) to win
Bộ thử thách này được tạo ra bởi Erling Ellingsen vào năm 2013. Tương tự như Google XSS, nó có 8 cấp độ khó dần để khám phá các khía cạnh khác nhau của Cross-site Scripting. Nhìn chung, các thử thách khó hơn và đòi hỏi kinh nghiệm viết code nhiều hơn một chút. Điểm tuyệt vời nhất của game này là bạn có thể thấy ngay kết quả của code mà bạn nhập và kết quả đầu ra của console. Khi bạn giải một cấp độ, bạn có thể thấy danh sách những người chiến thắng khác và điểm số của họ. Điểm số dựa trên thời gian payload. Càng ít ký tự trong XSS, thứ tự của bạn sẽ càng cao.
#3: prompt(1) to win
Nhà nghiên cứu bảo mật từ Hồng Kông được biết đến với tên gọi là filedescriptor đã tạo ra trang web XSS này vào năm 2014, lấy cảm hứng từ alert(1) to win. Trang web chứa 20 thử thách (4 trong số đó là thử thách ẩn) và khó hơn hai game mình đã nói ở trên. Tương tự như alert(1) to win, game này cũng hiển thị cho bạn kết quả của các hành động khi bạn nhập code HTML. Tuy nhiên, nó không hiển thị giao diện console nên bạn phải tự theo dõi lỗi. Lưu ý rằng các cấp độ cuối cùng của trang web này có thể không bị đánh bại do những thay đổi trong công cụ trình duyệt.
#4: XSS Challenges by yamagata21
XSS challenges của Yamagata là một trong những game XSS lâu đời nhất. Bao gồm 19 giai đoạn bắt đầu từ các bài tập XSS cơ bản nhất xuất hiện từ năm 2008. Không giống như các thử thách ở trên, trang web XSS này không cung cấp kết quả trực tiếp, không có đầu ra HTML trực tiếp và không có mã nguồn phía máy chủ, vì vậy bạn phải tự mình làm tất cả mọi việc. Trang web được xây dựng để dễ bị tấn công XSS. Điều này cũng có nghĩa là bạn cần đảm bảo tính năng bảo vệ XSS trong trình duyệt của bạn đã được tắt. Ngoài ra, lưu ý rằng một số giai đoạn (ví dụ: 17 và 18) không còn áp dụng được nữa và bạn không thể hoàn thành chúng vì chúng yêu cầu phiên bản Internet Explorer cũ để hoạt động.
#5: XSS Challenges by nopernik
Bộ thử thách này được tạo ra bởi Alexander Korznikov (nopernik) vào năm 2016 nên nó tương đối mới mẻ. Tương tự như game của yamagata, hiện tại nó có 19 thử thách nhưng những thử thách mới luôn được thêm vào theo thời gian, vì vậy trang web sẽ có thêm một số thử thách khác trong tương lai. Giống như game của yamagata, đây cũng chỉ là một trang HTML đơn giản với code JavaScript cơ bản và không có thêm Trợ giúp. Trong trường hợp này, việc tắt bộ lọc XSS từ phía client cũng rất quan trọng. Các thử thách cao hơn không bị ẩn, vì vậy bạn không cần phải tìm cách truy cập vào chúng. Tuy nhiên, các thử thách sẽ khó khăn hơn vì dường như không có giải pháp nào được tìm thấy trên mạng.
#6: XSS Polyglot Challenge
The Polyglot Challenge được thiết kế bởi filedescriptor từ Hồng Kông (tác giả của prompt(1) to win) và nó không dành cho người mới bắt đầu. Nó yêu cầu bạn code payload hoạt động trong hầu hết các ngữ cảnh. Bạn có thể xử lý càng nhiều bối cảnh và payload càng ngắn thì thứ hạng của bạn càng cao. Ban đầu, đây là một thử thách hộp đen: tác giả không tiết lộ các ngữ cảnh đã thử nghiệm payload. Hiện tại tác giả đã liệt kê các ngữ cảnh trên trang, vì vậy thử thách sẽ dễ dàng hơn. Để đạt được kết quả tốt nhất bạn nên tạo các ngữ cảnh này trên server cục bộ và kiểm tra payload của mình ở đó trước khi gửi payload.
#7: Vulnweb by Acunetix
Vulnweb không chỉ có các lỗ hổng về XSS. Nó chứa một số ứng dụng với các công nghệ khác nhau như PHP và ASP. Hầu hết chúng đều dễ bị tấn công bởi một số dạng XSS cùng với SQL Injection và nhiều kiểu tấn công khác nữa. Trang web này ban đầu được thiết kế để giúp bạn kiểm tra các trình quét lỗ hổng tự động. Do đó, nó không được thiết kế như các trang web XSS gồm nhiều thử thách. Thử thách của bạn là cố gắng tự tìm ra các lỗ hổng. Sau đó, bạn có thể sử dụng Acunetix để xem bạn đã bỏ lỡ bao nhiêu lỗ hổng.
#8: OWASP WebGoat Project
The WebGoat project là một ứng dụng mã nguồn mở mà bạn cần tải xuống và tự chạy. Nó giúp bạn tìm hiểu không chỉ lỗ hổng XSS (bao gồm XSS dựa trên DOM, ít phổ biến hơn) mà còn nhiều loại lỗ hổng bảo mật khác .WebGoat hiện đang ở phiên bản 8.0 và nó có sẵn để tải xuống (tệp JAR) hoặc dưới dạng Docker image. Ngoài WebGoat, có một số dự án OWASP tương tự khác, chẳng hạn như Juice Shop.
#9: Hack.me XSS Library
Dự án cộng đồng Hackme là một thư viện code của bên thứ ba. Bất kỳ ai cũng có thể tải lên các ví dụ code để người khác thực hành. Khi bạn muốn kiểm tra kỹ năng của mình, Hackme sẽ tạo ra một phiên bản người dùng duy nhất để có thể làm việc. Thư viện Hackme được phân loại theo các loại lỗ hổng. Liên kết được cung cấp ở trên chỉ dẫn đến phần XSS của thư viện. Nó bao gồm rất nhiều ví dụ khác nhau, cả những ví dụ đơn giản và phức tạp. Bạn có thể thực hành các loại XSS khác nhau bao gồm stored XSS, reflected XSS, và DOM-based XSS.
#10: cure53 XSS Challenge Wiki
Nếu danh sách của mình không đủ cho bạn, bạn có thể theo dõi XSS challenge wiki được tạo bởi Cure53 và được lưu trữ trên GitHub. Mặc dù không được cập nhật trong một thời gian, nó vẫn chứa danh sách các bài tập hack XSS khác nhau. Hầu hết các bài tập thực hành được mô tả trên đây đều được các gợi ý. Tuy nhiên, một số trang web lỗi XSS không còn hoạt động nửa.