CEO @CyStack
Lỗ hổng Cross-site Scripting (XSS) có thật và thực sự nguy hiểm, nó không còn là vấn đề gây tranh cãi như trước nữa. Hãy cùng điểm qua một vài nét về lỗ hổng XSS cũng như mức độ nguy hiểm của nó và cùng chúng tôi xem xét một số ý tưởng về thử nghiệm thủ công và sử dụng các công cụ kiểm thử lỗ hổng XSS tự động.
Lỗ hổng XSS là gì?
Kỹ thuật XSS được thực hiện dựa trên việc chèn các đoạn script nguy hiểm vào trong source code ứng dụng web. Nhằm thực thi các đoạn mã độc Javascript để chiếm phiên đăng nhập của người dùng.
> Bạn có thể đọc thêm series bài viết về lỗ hổng XSS tại đây.
Lỗ hổng XSS nghiêm trọng như thế nào?
Kẻ tấn công có thể sử dụng lỗ hổng XSS để ăn cắp cookie, chiếm đoạt tài khoản, thực hiện ActiveX, thực thi Flash content, lừa người dùng tải phần mềm… Các vụ tấn công lừa đảo thường khai thác lỗ hổng XSS để giả mạo là các website hợp pháp.
Nếu kẻ tấn công thực sự khôn ngoan, chúng có thể thực hiện một cuộc tấn công XSS nhắm mục tiêu tới các quản trị viên. Có thể bằng cách gửi thư có tiêu đề “Trợ giúp! URL website này tiếp tục báo lỗi cho tôi!”. Sau khi quản trị viên mở URL, kẻ tấn công có thể gây ra nhiều thiệt hại như ăn cắp thông tin của họ và chiếm đoạt quyền quản trị viên.
Kiểm thử thủ công
Việc kiểm thử thủ công đòi hỏi nhiều kiến thức về bảo mật web và lập trình. Dưới đây là bước bạn có thể thực hiện:
1. Lập sơ đồ trang web theo từng URL khác nhau.
2. Xác định và liệt kê các input đầu vào của Website.
3. Suy nghĩ và liệt kê các testcase kiểm thử.
4. Bắt đầu thử nghiệm và chú ý đến kết quả đầu ra.
5. Thay đổi các testcase liên tục.
Dưới đây là một số dữ liệu giúp bạn kiểm thử lỗ hổng XSS
>"'><script>alert(‘XSS')</script> >%22%27><img%20src%3d%22javascript:alert(%27XSS%27)%22> >"'><img%20src%3D%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;alert(%26quot;XSS%26quot;)> AK%22%20style%3D%22background:url(javascript:alert(%27XSS%27))%22%20OS%22 %22%2Balert(%27XSS%27)%2B%22 <table background="javascript:alert(([code])"></table> <object type=text/html data="javascript:alert(([code]);"></object> <body onload="javascript:alert(([code])"></body> ...
Kiểm thử tự động lỗ hổng XSS
Một công cụ quét lỗ hổng bảo mật thông thường sẽ kết nối với ứng dụng web thông qua giao diện web để có thể tìm ra các lỗ hổng tiềm tàng và những điểm yếu về cấu tạo của web. Công cụ này sẽ không truy cập vào mã nguồn mà chỉ thực hiện kiểm tra chức năng để tìm ra các lỗ hổng bảo mật.
Hiện nay trên thị trường có rất nhiều công cụ quét lỗ hổng bảo mật ứng dụng web, có thể miễn phí hoặc cần trả phí mới sử dụng được. Dưới đây, chúng tôi sẽ liệt kê một số công cụ quét lỗ hổng bảo mật ứng dụng web hàng đầu có thể giúp bạn đánh giá ứng dụng web để loại bỏ các rủi ro về bảo mật.
1. CyStack Platform – A Web Security Platform
CyStack là một nền tảng nền tảng an ninh mạng đầu tiên tại Việt Nam, CyStack Platform đã bao gồm 04 apps, cung cấp các tính năng bảo vệ cho website của bạn bao gồm: các công cụ quét lỗ hổng bảo mật ứng dụng web, công cụ giám sát an ninh liên tục, tưởng lửa ứng dụng web và truy tìm mã độc.
- CyStack Scanning: tự động phát hiện các lỗ hổng và đưa ra phương án khắc phục cho bạn.
- CyStack Monitoring: giúp bạn phát hiện sớm các vấn đề trên website của mình để có biện pháp khắc phục sớm nhất.
- CyStack Protecting: là một giải pháp tường lửa (Cloud web application firewall) đứng giữa website và người truy cập để chủ động ngăn chặn tất cả các cuộc tấn công từ bên ngoài.
- CyStack Responding: được xây dựng như một phần mềm diệt virus giúp bạn nhanh chóng phát hiện các dữ liệu độc hại và làm sạch website của mình.
> Đăng ký quét lỗ hổng miễn phí cho website trong 14 ngày tại đây.
2. Phần mềm Burp Suite Free
Burp Suite là một bộ công cụ quét lỗ hổng bảo mật cho ứng dụng web. Người dùng có thể trải nghiệm phiên bản miễn phí với các tính năng giới hạn hoặc trả phí với đầy đủ tính năng. Burpsuite là một nền tảng tích hợp cho việc kiểm tra an ninh các ứng dụng web. Các công cụ đa dạng làm việc hoàn hảo với nhau để hỗ trợ toàn bộ quá trình thử nghiệm, từ lập bản đồ ban đầu đến việc tìm kiếm và khai thác lỗ hổng bảo mật.
3. Phần mềm Netsparker
Được thiết kể để hỗ trợ cho cả việc phát hiện và khai thác các lỗ hổng. Mục tiêu Netsparker hướng tới là cho người dùng một kết quả chính xác nhất. Để đảm bảo tính xác thực của kết quả, thì công cụ này chỉ báo cáo về các lỗ hổng đã xác định được sau khi khai thác thành công hoặc thử nghiệm chúng. Netsparker sẽ phát hiện và báo cáo về các lỗ hổng như SQL Injection và Cross-site Scripting (XSS) trong tất cả các loại ứng dụng web, dựa trên bất kể nền tảng và công nghệ nào mà web được xây dựng.
4. Arachni
Arachni là một Ruby framework với đầy đủ tính năng, modular và hiệu suất cao nhằm mục đích giúp các nhà kiểm tra và quản trị viên thâm nhập đánh giá tính bảo mật của ứng dụng web. Arachni thể hiện sự thông minh qua việc có thể tự đào tạo bản thân bằng cách kiểm tra và học hỏi từ các hành động của ứng dụng web trong quá trình scan. Không chỉ vậy Arachni còn thực hiện phân tích meta bằng một số yếu tố để đánh giá độ tin cậy của kết quả tìm được để tránh cho ra các kết quả sai.
5. Phần mềm W3af
W3af (Web Application Attack and Audit Framework) là một web scanner mã nguồn mở. Web scanner này cung cấp một công cụ quét và khai thác lỗ hổng cho các ứng dụng web. W3af được viết bằng ngôn ngữ Python và có sẵn cho nhiều hệ điều hành phổ biến khác như Microsoft Windows, Linux, Mac OS X, FreeBSD và OpenBSD.
W3af được chia thành hai phần chính, đó là core và các plug-in. Bộ quét lỗ hổng xác định hầu hết các lỗ hổng trong ứng dụng web bằng cách sử dụng hơn 130 plug-in. Phần core kết hợp với các quy trình và đưa ra các tính năng dựa trên plug-in. Để từ đó tìm ra các lỗ hổng và khai thác chúng.
Kết luận
Kiểm thử lỗ hổng XSS thường chỉ là một phần nhỏ trong quá trình pentest. Sau khi thực hiện điều này, chúng tôi nhấn mạnh rằng việc sử dụng Excel hoặc một tài liệu để lưu trữ tất cả các đường dẫn trên website, cùng với tất cả các giá trị đầu vào mà mỗi trang chấp nhận (chuỗi truy vấn, cookie, dữ liệu POST, SOAP) là một bước quan trọng trước khi bạn bắt đầu thử nghiệm.
Nếu bạn không phải là 1 lập trình viên, tôi khuyên bạn nên sử dụng các công cụ tự động.