Hướng Dẫn Kiểm Tra Web An Toàn​

Để kiểm tra một website có an toàn hay không, người dùng cần áp dụng các bước kỹ thuật cơ bản như: kiểm tra chứng chỉ SSL/TLS hợp lệ, phân tích header HTTP, tra cứu thông tin tên miền qua WHOIS, rà quét mã độc bằng các công cụ như VirusTotal, và kiểm tra Blacklist từ Google Safe Browsing.

Những bước này giúp đánh giá chính xác mức độ uy tín và bảo mật của website trước khi truy cập hoặc tương tác.

1. Hướng Dẫn Kiểm Tra Web An Toàn​

Bước 1: Phân Tích Bề Mặt và Thu Thập Thông Tin (Reconnaissance)

Một chứng chỉ SSL/TLS hợp lệ là cần thiết, nhưng chưa đủ. Cần kiểm tra cấu hình chi tiết.

– Công cụ: Qualys SSL Labs Server Test

– Kiểm tra các yếu tố sau:

  • Overall Rating: Điểm tổng thể phải là A hoặc A+.
  • Protocol Support: Vô hiệu hóa các giao thức cũ và không an toàn như SSLv2, SSLv3, TLS 1.0, TLS 1.1. Chỉ nên kích hoạt TLS 1.2TLS 1.3.
  • Cipher Suites: Kiểm tra danh sách các bộ mã hóa (cipher suites) được hỗ trợ. Loại bỏ các bộ mã hóa yếu (ví dụ: sử dụng RC4, 3DES, hoặc các thuật toán EXPORT). Ưu tiên các bộ mã hóa có Forward Secrecy (ECDHE, DHE).
  • Certificate Details: Issuer (nhà cung cấp), ngày hết hạn, chuỗi tin cậy (chain of trust).
Bước 2: Kiểm Tra Các HTTP Security Headers

Headers là chỉ thị từ máy chủ đến trình duyệt để tăng cường bảo mật.

– Công cụ: Security Headers by Probely, tab “Network” trong Developer Tools của trình duyệt (F12).

– Các headers quan trọng cần có:

  • Strict-Transport-Security (HSTS): Ép trình duyệt luôn giao tiếp qua HTTPS. Ví dụ: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload.
  • Content-Security-Policy (CSP): Giảm thiểu nguy cơ XSS bằng cách định nghĩa các nguồn tài nguyên (scripts, styles, images) được phép tải. Đây là một trong những header quan trọng và phức tạp nhất để cấu hình đúng.
  • X-Frame-Options: Ngăn chặn tấn công Clickjacking bằng cách không cho phép website bị nhúng vào <iframe> từ các trang khác. Giá trị nên là DENY hoặc SAMEORIGIN.
  • X-Content-Type-Options: Ngăn trình duyệt “đoán” kiểu MIME của tài nguyên, chống lại các cuộc tấn công liên quan. Giá trị phải là nosniff.
  • Referrer-Policy: Kiểm soát lượng thông tin Referer được gửi đi. Giá trị strict-origin-when-cross-origin hoặc no-referrer là lựa chọn tốt.
  • Permissions-Policy (trước đây là Feature-Policy): Kiểm soát các API của trình duyệt có thể được sử dụng (ví dụ: camera, microphone, geolocation).
Bước 3. Thu Thập Thông Tin DNS và Tên Miền

– Công cụ: whois, nslookup, dig, DNSDumpster, VirusTotal.

– Kiểm tra:

  • WHOIS: Thông tin đăng ký tên miền (có thể bị ẩn).
  • DNS Records:
      • A, AAAA, CNAME: Địa chỉ IP của máy chủ.
      • MX: Máy chủ email.
      • TXT: Kiểm tra các bản ghi bảo mật email như SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail), và DMARC (Domain-based Message Authentication, Reporting & Conformance). Cấu hình sai có thể dẫn đến lừa đảo qua email (phishing).
  • Sử dụng VirusTotal để xem tên miền hoặc IP có liên quan đến hoạt động độc hại nào không.
Bước 4: Xác Định Công Nghệ (Technology Stack Fingerprinting)

Biết được công nghệ đằng sau giúp xác định các lỗ hổng đã biết (CVEs).

– Công cụ: Wappalyzer, BuiltWith, hoặc xem mã nguồn/headers.

– Xác định:

  • Backend: Ngôn ngữ lập trình (PHP, Python, Java, Node.js), framework (Laravel, Django, Spring, Express).
  • Frontend: Framework (React, Angular, Vue.js), thư viện (jQuery).
  • Web Server: Apache, Nginx, IIS.
  • CMS: WordPress, Joomla, Drupal.
  • Database: MySQL, PostgreSQL, MongoDB.

Khi đã có phiên bản cụ thể (ví dụ: WordPress 6.0, jQuery 3.1), bạn có thể tìm kiếm các CVE liên quan trên CVE Mitre hoặc NVD.

Bước 5: Phân Tích Cấu Hình và Mã Nguồn Phía Client

– Công cụ: view-source: trong trình duyệt, Developer Tools (F12).

– Tìm kiếm:

  • Thông tin nhạy cảm bị lộ: Chú thích (comments) của lập trình viên, đường dẫn nội bộ, địa chỉ email.
  • API Keys hoặc Credentials bị hardcode: Đây là một lỗi nghiêm trọng. Tìm kiếm các chuỗi trông giống như khóa API (ví dụ: AIza... cho Google APIs).
  • Endpoint của API: Phân tích các file JavaScript để tìm các đường dẫn API mà ứng dụng sử dụng. Các endpoint này có thể không được bảo vệ tốt.
  • Logic nghiệp vụ ở phía client: Logic quan trọng (như tính giá, kiểm tra quyền) không nên nằm hoàn toàn ở phía client vì người dùng có thể dễ dàng thay đổi nó.
  • Thư viện JavaScript lỗi thời: Kiểm tra phiên bản của các thư viện (ví dụ: jQuery, Bootstrap) và đối chiếu với các lỗ hổng đã biết.
Bước 6: Kiểm Tra Lỗi Cấu Hình Phía Máy Chủ (Thông qua phản hồi)
  • Thử truy cập các file/thư mục như: .git, .env, wp-config.php.bak, web.config, package.json.
  • robots.txt: Xem các đường dẫn mà chủ sở hữu không muốn công cụ tìm kiếm index. Đôi khi nó vô tình tiết lộ các trang quản trị hoặc khu vực nhạy cảm (ví dụ: Disallow: /admin/).
  • sitemap.xml: Khám phá cấu trúc của trang web.
  • Kiểm tra Directory Listing: Thử truy cập một thư mục không có file index (ví dụ: /images/). Nếu máy chủ liệt kê tất cả các file, đây là một lỗi rò rỉ thông tin.
  • Kiểm tra thông báo lỗi (Error Messages): Gây ra lỗi (ví dụ: nhập ký tự đặc biệt vào URL) và xem phản hồi của máy chủ. Một thông báo lỗi chi tiết (verbose error) có thể tiết lộ stack trace, câu lệnh SQL, phiên bản phần mềm, đường dẫn file hệ thống.
Bước 7: Rà Soát Lỗ Hổng Tự Động và Thủ Công

Sử Dụng Công Cụ Quét Tự Động (DAST – Dynamic Application Security Testing). Các công cụ này sẽ tự động “tấn công thử” website để tìm các lỗ hổng phổ biến.

– Công cụ:

– Quy trình:

  • Cấu hình proxy (ví dụ: ZAP hoặc Burp) để chặn và phân tích traffic giữa trình duyệt và máy chủ.
  • “Spider” (thu thập thông tin) toàn bộ trang web để lập bản đồ cấu trúc.
  • Chạy “Active Scan” để gửi các payload độc hại đã được chuẩn bị sẵn và phân tích phản hồi để phát hiện lỗ hổng.
Bước 8: Kiểm Tra Thủ Công Các Lỗ Hổng Phổ Biến (Theo OWASP Top 10)

Đây là phần quan trọng nhất, đòi hỏi kiến thức chuyên sâu. Công cụ chủ yếu là Burp Suite hoặc OWASP ZAP.

– A01:2021 – Broken Access Control (Kiểm Soát Truy Cập Bị Lỗi):

  • IDOR (Insecure Direct Object References): Thử thay đổi ID trong URL hoặc API request để truy cập tài nguyên của người dùng khác (ví dụ: GET /api/users/123/orders -> GET /api/users/124/orders).
  • Path Traversal: Thử truy cập file hệ thống bằng cách sử dụng ../. Ví dụ: GET /show_image?filename=../../../etc/passwd.
  • Privilege Escalation: Đăng nhập với tài khoản người dùng thường, sau đó thử truy cập trực tiếp vào các URL của quản trị viên (ví dụ: /admin/dashboard).

– A02:2021 – Cryptographic Failures (Lỗi Liên Quan Đến Mật Mã):

  • Kiểm tra dữ liệu nhạy cảm (mật khẩu, token) có được truyền qua HTTP không (đã kiểm tra ở Giai đoạn 1).
  • Kiểm tra xem dữ liệu nhạy cảm có được lưu trong cookie hoặc localStorage dưới dạng cleartext không.
  • Kiểm tra việc sử dụng các thuật toán mã hóa yếu, lỗi thời.

– A03:2021 – Injection (Tấn Công Chèn Lệnh):

    • SQL Injection (SQLi):
      • Chèn các ký tự đặc biệt như ', " vào các trường input, parameter của URL.
      • Sử dụng các payload OR '1'='1', UNION SELECT, và các payload time-based (...AND SLEEP(5)).
      • Sử dụng công cụ tự động như sqlmap.
    • Cross-Site Scripting (XSS):
      • Reflected XSS: Chèn payload <script>alert('XSS')</script> vào các tham số URL hoặc form và xem nó có được thực thi khi trang tải lại không.
      • Stored XSS: Chèn payload vào các trường sẽ được lưu trong CSDL (ví dụ: tên người dùng, bình luận) và xem nó có thực thi cho người dùng khác không.
      • DOM-based XSS: Tìm kiếm các “sink” trong JavaScript (như innerHTML, document.write) nhận dữ liệu từ các “source” (như location.hash) mà không được lọc.
    • Command Injection: Thử chèn các lệnh hệ điều hành vào các tham số có thể tương tác với shell. Ví dụ: ping=8.8.8.8; ls -la.

– A05:2021 – Security Misconfiguration (Lỗi Cấu Hình Bảo Mật):

    • Bao gồm nhiều mục đã kiểm tra ở trên: directory listing, verbose errors, security headers thiếu, tài khoản mặc định, các port dịch vụ không cần thiết bị mở.

– A06:2021 – Vulnerable and Outdated Components (Thành Phần Lỗi Thời và Có Lỗ Hổng):

  • Dựa trên thông tin từ Giai đoạn 1.4, tìm kiếm CVE cho từng phiên bản phần mềm.
  • Sử dụng các công cụ như Retire.js để quét các thư viện JavaScript lỗi thời.

2. Cuối cùng:

Việc kiểm tra độ an toàn của website không chỉ là thói quen cần thiết, mà còn là bước kỹ thuật cơ bản giúp phòng tránh rủi ro về bảo mật thông tin và an toàn hệ thống. Áp dụng đầy đủ các công cụ và phương pháp như kiểm tra SSL, phân tích header, tra cứu WHOIS, quét mã độc và đối chiếu blacklist sẽ giúp người dùng chủ động hơn trước các mối đe dọa mạng.

Leave a Reply

Your email address will not be published. Required fields are marked *