Bối cảnh và vấn đề nghiên cứu

Sự bùng nổ của các ứng dụng nền tảng web trong mọi lĩnh vực như thương mại điện tử, mạng xã hội, dịch vụ thư điện tử và truyền thông tin tức kéo theo sự gia tăng phức tạp của các nguy cơ mất an toàn thông tin. Việc kiểm thử an ninh ứng dụng web theo phương pháp truyền thống thủ công bộc lộ nhiều điểm hạn chế: tiêu tốn nhiều thời gian, công sức, và việc lặp đi lặp lại các kịch bản kiểm thử không mang lại hiệu suất tối ưu cho các doanh nghiệp. Mặc dù thị trường đã có một số giải pháp thương mại lẫn mã nguồn mở hỗ trợ quét tự động (như Burp Suite, Acunetix, Nessus, Nikto, Nuclei, ZAP, SQLMap hay giải pháp nội địa CyStack Web Security), người sử dụng vẫn gặp phải các rào cản về chi phí bản quyền lớn, quy trình vận hành phức tạp hoặc đòi hỏi trình độ chuyên môn kỹ thuật sâu.

Trước yêu cầu cấp thiết về việc tự động hóa quá trình phát hiện điểm yếu bảo mật nhằm tiết kiệm thời gian và chi phí cho các chuyên gia kiểm thử, đề tài "Xây dựng công cụ quét và phát hiện lỗ hổng bảo mật trong ứng dụng web" được thực hiện bởi nhóm tác giả Trần Quốc Siêu và Võ Huỳnh Anh Nhật (ngành Công nghệ Thông tin, chuyên ngành Mạng máy tính, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh) dưới sự hướng dẫn của ThS. Nguyễn Thị Thanh Vân.

Mục tiêu nghiên cứu của đề tài được xác định qua ba nhiệm vụ trọng tâm:

  1. Làm rõ khái niệm, kiến trúc và cơ chế vận hành của ứng dụng web; phân tích nguyên nhân phát sinh và hệ quả kỹ thuật của các lỗ hổng bảo mật trên hệ thống web.
  2. Khảo sát, phân tích cơ chế quét và phát hiện lỗ hổng của các công cụ quét tự động mã nguồn mở phổ biến (như Nikto, Nuclei, Reconftw), từ đó rút ra các ưu điểm và hạn chế của từng giải pháp.
  3. Thiết kế và phát triển một công cụ quét tự động mang tên WebSentry, tập trung xử lý nhóm lỗ hổng xác thực đầu vào (Input Validation) với khả năng tùy chỉnh linh hoạt và cơ chế vận hành đa luồng tối ưu.

Đối tượng nghiên cứu của đồ án là các phương pháp kiểm thử an ninh ứng dụng web tự động, cấu trúc kịch bản kiểm thử (testcase) và cơ chế phân tích phản hồi HTTP. Phạm vi nghiên cứu tập trung vào nhóm lỗ hổng xác thực đầu vào phổ biến gồm: SQL Injection, Cross-Site Scripting (XSS), Local/Remote File Inclusion (LFI/RFI), Remote OS Command Injection, Server-Side Template Injection (SSTI), XML External Entity (XXE) và Server-Side Request Forgery (SSRF) trên các nền tảng ứng dụng web thực tế.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết của nghiên cứu được xây dựng dựa trên các tiêu chuẩn bảo mật ứng dụng web của Dự án An toàn Ứng dụng Web Mở (Open Web Application Security Project - OWASP), nguyên lý tương tác giao thức HTTP/HTTPS (HTTP Requests, HTTP Responses, Status Codes, Headers, Body), mô hình phân tầng Client-Side (HTML, CSS, JavaScript) - Server-Side (PHP, Java, Node.js) và hệ thống quản trị cơ sở dữ liệu (DBMS như MySQL, PostgreSQL, Microsoft SQL Server).

Phương pháp nghiên cứu kết hợp giữa lý luận, kỹ thuật công nghệ và thực nghiệm:

  • Phương pháp phân tích - tổng hợp lý thuyết: Hệ thống hóa các dạng lỗ hổng bảo mật ứng dụng web, phân loại theo bản chất kỹ thuật (lỗ hổng xác thực đầu vào, logic nghiệp vụ, quản lý phân quyền và xác thực, cấu hình sai hệ thống, lỗ hổng thư viện tích hợp).
  • Phương pháp khảo sát và phân tích kỹ thuật công cụ: Đánh giá kiến trúc xử lý mẫu quét (template-driven) của Nuclei, khả năng quét toàn diện của Nikto và cơ chế Active Scan của Burp Suite.
  • Phương pháp thiết kế và phát triển hệ thống phần mềm: Ứng dụng ngôn ngữ Python cùng các thư viện nền tảng để xây dựng công cụ WebSentry dựa trên mô hình API Gateway, cơ chế kiểm thử dựa trên tệp cấu hình YAML và xử lý đồng thời đa luồng (multithreading).
  • Phương pháp thực nghiệm và đối chuẩn (Benchmarking): Thiết lập môi trường thử nghiệm trên các ứng dụng kiểm thử tiêu chuẩn (testphp.vulnweb.com và testasp.vulnweb.com), thu thập các điểm cuối (endpoints) qua kỹ thuật Proxy/Crawl, thực thi dò quét và so sánh đối chiếu số lượng lỗ hổng phát hiện được với công cụ thương mại Burp Suite Active Scan.

Thiết kế và triển khai hệ thống WebSentry

Công cụ WebSentry được thiết kế theo cấu trúc mô-đun hướng dịch vụ, tích hợp cơ chế tự động hóa kiểm thử thông qua cấu trúc API Gateway, hỗ trợ chuyên viên an ninh mạng định nghĩa kịch bản tấn công thử nghiệm qua các tệp mẫu cấu hình định dạng YAML.

Thành phần / Mô-đun Chức năng kỹ thuật chính trong hệ thống WebSentry
API Gateway Tiếp nhận yêu cầu điều khiển, điều phối luồng dữ liệu giữa giao diện kiểm thử/công cụ bên ngoài (Postman, trình duyệt) và hệ thống xử lý lõi.
Template Engine (Xử lý YAML) Đọc, phân tích cú pháp tệp cấu hình YAML; trích xuất thông tin lỗ hổng, định nghĩa tham số, cấu trúc payload và các quy tắc so khớp phản hồi.
Execution Engine (Thực thi HTTP) Tạo lập và gửi các yêu cầu HTTP mang payload kiểm thử tới các điểm cuối (endpoint) mục tiêu theo cơ chế bất đồng bộ đa luồng.
Matcher (Lọc đối số) Xác định chính xác các điểm chèn dữ liệu (tham số GET, POST, Headers, Cookie) trên URL hoặc thân thông điệp yêu cầu để tiêm payload.
Asserter (Xác nhận lỗ hổng) Phân tích cú pháp phản hồi HTTP (mã trạng thái, chuỗi phản hồi, độ trễ thời gian) dựa trên điều kiện của template để khẳng định sự tồn tại của lỗ hổng.

Quy trình vận hành kỹ thuật của công cụ gồm các bước:

  1. Thu thập dữ liệu mục tiêu (Crawl): Người kiểm thử sử dụng tiện ích chuyển hướng Proxy (FoxyProxy) trên trình duyệt để ghi nhận toàn bộ lưu lượng duyệt web và các điểm cuối vào hệ thống.
  2. Nạp và cấu hình không gian làm việc: Sử dụng Postman để cấu hình thông tin mục tiêu, quản lý các endpoint đã crawl và chọn các bộ testcase tương ứng.
  3. Phân tích template: Template Engine nạp các kịch bản kiểm thử dạng YAML, bóc tách phương thức HTTP, đường dẫn, tham số và hàm kiểm tra.
  4. Phát sinh tải và gửi yêu cầu: Execution Engine kết hợp với Matcher tự động chèn payload vào các đối số, kích hoạt đa luồng gửi các HTTP Request đến máy chủ ứng dụng web mục tiêu.
  5. Thẩm định kết quả: Asserter kiểm tra HTTP Response trả về (dấu hiệu lỗi cơ sở dữ liệu, mã script phản xạ, thời gian trễ thực thi lệnh) và trích xuất báo cáo kết quả quét chi tiết.

Nội dung chính theo từng chương

CHƯƠNG 1: TỔNG QUAN VỀ LỖ HỔNG BẢO MẬT TRONG ỨNG DỤNG WEB

Chương này phân tích toàn diện nền tảng cấu trúc của ứng dụng web và phân loại chi tiết các mối nguy hại an toàn thông tin:

  • Kiến trúc và vận hành: Làm rõ cơ chế giao tiếp Client - Server qua thông điệp HTTP Request (Method, URL, Headers, Body) và HTTP Response (Status Code, Status Message, Headers, Body), cùng vai trò lưu trữ của các hệ quản trị cơ sở dữ liệu.
  • Phân loại lỗ hổng bảo mật:
    • Lỗ hổng xác thực đầu vào: Phân tích nguyên lý và ví dụ mã nguồn của Cross-Site Scripting (Reflected XSS, Stored XSS, DOM-based XSS); SQL Injection (Error-based, Blind SQLi gồm Boolean-based, Time-based và Out-of-band, Union-based SQLi); OS Command Injection; Code Injection; File Inclusion (LFI, RFI); XML External Entity Injection (XXE); Server-Side Request Forgery (SSRF); Server-Side Template Injection (SSTI); Host Header Injection; Insecure Deserialization và Mass Assignment.
    • Lỗ hổng logic nghiệp vụ: Phân tích các thiếu sót trong kiểm tra tính hợp lệ dữ liệu logic (Business Logic Data Validation), kiểm tra toàn vẹn (Integrity Checks), định thời quy trình (Process Timing), giới hạn số lần thực thi hàm, phá vỡ luồng xử lý (Circumvention of work flow), tải lên tệp tin không mong muốn hoặc tệp tin độc hại, và rủi ro trong chức năng thanh toán (Payment Functionality).
    • Lỗ hổng xác thực và quản lý phân quyền: Làm rõ kỹ thuật vượt qua cơ chế xác thực (Bypass Authentication Schema), vượt qua phân quyền (Bypass Authorization Schema), chính sách mật khẩu yếu, chức năng khôi phục mật khẩu không an toàn, tham chiếu trực tiếp đối tượng không an toàn (IDOR), leo thang đặc quyền (Privilege Escalation), Cross-Site Request Forgery (CSRF) và các lỗi triển khai JSON Web Token (JWT).
    • Lỗ hổng cấu hình sai và phần mềm tích hợp: Cấu hình phương thức HTTP không an toàn, thiếu vắng chính sách bảo mật truyền tải HTTP Strict Transport Security (HSTS), thiếu chính sách bảo mật nội dung Content Security Policy (CSP), cùng nguy cơ từ các thư viện bên thứ ba và hệ quản trị nội dung (CMS) lỗi thời.

CHƯƠNG 2: TÌM HIỂU VỀ CÁC CÔNG CỤ QUÉT VÀ PHÁT HIỆN LỖ HỔNG HIỆN NAY

Chương 2 khảo sát các kỹ thuật quét tự động (fuzzing, phân tích phản xạ, dò tìm mẫu chuỗi) và đi sâu nghiên cứu kiến trúc của các công cụ kiểm thử:

  • Đánh giá các công cụ quét mã nguồn mở gồm Nikto, Nuclei (với cơ chế Nuclei Template và hệ thống báo cáo kết quả), Reconftw, SQLMap, Zed Attack Proxy (ZAP).
  • Đánh giá các phần mềm thương mại tiêu chuẩn công nghiệp như Acunetix, Burp Suite Active Scan, Nessus.
  • Tổng kết ưu và nhược điểm của từng công cụ: chỉ ra sự phụ thuộc vào tệp cấu hình mẫu, mức độ tiêu tốn tài nguyên và tính linh hoạt khi triển khai tùy biến trong môi trường thực tế.

CHƯƠNG 3: XÂY DỰNG CÔNG CỤ QUÉT VÀ PHÁT HIỆN LỖ HỔNG TRONG ỨNG DỤNG WEB

Chương 3 trình bày chi tiết quy trình xây dựng công cụ WebSentry:

  • Bài toán và giải pháp: Giải quyết bài toán tự động hóa kiểm thử các lỗ hổng xác thực đầu vào bằng cách xây dựng hệ thống kiểm thử hướng mẫu (template-driven).
  • Kiến trúc hệ thống: Ứng dụng mô hình API Gateway kết hợp cơ chế xử lý đa luồng giúp tăng tốc độ gửi payload và kiểm tra phản hồi.
  • Triển khai các mô-đun chức năng:
    • Template Engine: Tiếp nhận và phân tích các trường dữ liệu trong tệp YAML (tên lỗ hổng, mức độ nghiêm trọng, thông tin yêu cầu HTTP, danh sách payload, điều kiện so khớp).
    • Execution Engine: Thực hiện gửi yêu cầu tuần tự hoặc song song tới máy chủ đích.
    • Matcher & Asserter: Trích xuất các tham số trên URL hoặc body để nhúng payload, đồng thời áp dụng các biểu thức điều kiện nhằm phân tích cú pháp dữ liệu phản hồi (Response Status, Response Headers, Response Body) để xác định điểm yếu bảo mật.

CHƯƠNG 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ

Chương 4 thực hiện cài đặt, cấu hình và kiểm thử công cụ WebSentry trên môi trường thực nghiệm với hai trang web mục tiêu có chủ đích: testphp.vulnweb.com và testasp.vulnweb.com.

  • Cấu hình môi trường: Thiết lập API Gateway, công cụ quét, import bộ collection vào Postman và định cấu hình tiện ích FoxyProxy để bắt gói tin, thu thập endpoint.
  • Kịch bản thực nghiệm trên testphp.vulnweb.com: Tiến hành quét trên 19 kịch bản kiểm thử tương ứng với các URL/endpoint: /search.php?test=query, /listproducts, /showimage, /product, /cart, /sendcommand, /artists, /comment, /userinfo, /guestbook, /AJAX/showxml, /AJAX/infotitle, /AJAX/infoartist, /secured/newuser, /AJAX/infocateg... Tổng hợp danh sách lỗ hổng phát hiện được (SQLi, XSS, Path Traversal, Command Injection, XXE).
  • Kịch bản thực nghiệm trên testasp.vulnweb.com: Tiến hành quét trên các kịch bản kiểm thử tại các URL: /Login, /Register, /Templatize, /showforum, /showthread... Ghi nhận các điểm yếu về xác thực, SQLi và XSS.
  • So sánh đối chuẩn với Burp Suite Active Scan: Thực hiện cấu hình Active Scan trên cùng mục tiêu và lập bảng so sánh chi tiết về số lượng endpoint, tham số phát hiện và tổng số lỗ hổng tìm thấy. Đánh giá tính chính xác, hiệu năng và khả năng phát hiện lỗi của WebSentry.

Kết quả và đóng góp

Nghiên cứu đạt được các kết quả cụ thể thông qua quá trình phát triển và thực nghiệm:

Tiêu chí đánh giá Kết quả đạt được của đề tài WebSentry
Sản phẩm phần mềm Hoàn thiện công cụ quét lỗ hổng WebSentry viết bằng Python, hoạt động qua kiến trúc API Gateway, hỗ trợ nạp kịch bản linh hoạt bằng YAML.
Khả năng phát hiện lỗi Phát hiện chính xác các lỗ hổng xác thực đầu vào phổ biến gồm Error-based/Time-based SQLi, XSS (Reflected/Stored), OS Command Injection, Path Traversal, File Inclusion và XXE.
Kết quả thực nghiệm trên testphp Hoàn thành quét 19 kịch bản endpoint, phát hiện đầy đủ các lỗ hổng trọng yếu trên các tham số tìm kiếm, hiển thị ảnh, danh mục, giỏ hàng và API AJAX.
Kết quả thực nghiệm trên testasp Thực hiện quét các luồng xử lý xác thực và diễn đàn (/Login, /Register, /Templatize, /showforum, /showthread), phát hiện các điểm yếu chèn mã và SQLi.
Hiệu quả so sánh với Burp Suite Cho kết quả tương đương về khả năng phát hiện các lỗ hổng đầu vào cơ bản trên các endpoint đã được crawl, đồng thời cho phép người dùng tùy biến sâu các testcase mà không phụ thuộc vào bộ quy tắc đóng.

Đóng góp chính của đề tài bao gồm việc hệ thống hóa toàn diện cơ sở lý thuyết về các nhóm lỗ hổng web theo chuẩn OWASP; làm sáng tỏ nguyên lý vận hành của các công cụ quét mã nguồn mở hiện đại; và cung cấp một giải pháp công cụ (WebSentry) có cấu trúc dạng mô-đun mở, giúp các kiểm thử viên an ninh mạng tự động hóa các kịch bản kiểm tra định kỳ, giảm thiểu sai sót do thao tác thủ công.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận chỉ ra một số hạn chế kỹ thuật trong phạm vi thực hiện đề tài:

  • Công cụ chủ yếu tập trung vào nhóm lỗ hổng xác thực đầu vào (Input Validation Flaws), chưa tự động hóa phát hiện toàn diện các lỗ hổng logic nghiệp vụ phức tạp (Business Logic Flaws) vốn đòi hỏi sự hiểu biết sâu sắc về ngữ cảnh từng ứng dụng.
  • Quá trình thu thập điểm cuối (Crawl) vẫn cần sự can thiệp bán tự động thông qua proxy trình duyệt (FoxyProxy) và cấu hình điều khiển qua Postman, chưa tích hợp một bộ Crawler tự động độc lập hoàn chỉnh có khả năng xử lý sâu các ứng dụng Single Page Application (SPA).
  • Chưa mở rộng kiểm thử toàn diện các giao thức xác thực phức tạp đa bước (Multi-Factor Authentication, OAuth2 phân tán).

Hướng nghiên cứu và phát triển tiếp theo được tác giả đề xuất:

  • Mở rộng thư viện kịch bản YAML cho nhiều dạng lỗ hổng nâng cao (SSTI phức tạp, Insecure Deserialization sâu, các kỹ thuật vượt WAF).
  • Xây dựng mô-đun Web Crawler tự động tích hợp trực tiếp vào công cụ, loại bỏ sự phụ thuộc vào cấu hình proxy bên ngoài.
  • Phát triển giao diện người dùng trực quan (Web UI/Dashboard) để trực quan hóa quá trình quét và xuất báo cáo tự động theo chuẩn công nghiệp.
  • Tối ưu hóa cơ chế đa luồng phân tán nhằm tăng tốc độ dò quét trên các hệ thống có quy mô hàng nghìn endpoint.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho các đối tượng:

  • Sinh viên ngành Công nghệ thông tin, An toàn thông tin, Mạng máy tính: Cung cấp tài liệu tổng hợp hệ thống về kiến trúc web, cơ chế HTTP và phân loại chi tiết các lỗ hổng bảo mật phổ biến kèm ví dụ mã nguồn minh họa trong Chương 1.
  • Chuyên viên kiểm thử an ninh mạng (Penetration Testers): Cung cấp tài liệu tham khảo về phương pháp xây dựng kịch bản kiểm thử tự động (testcase) định dạng YAML và cơ chế phân tích phản hồi HTTP trong Chương 3.
  • Kỹ sư phát triển phần mềm an ninh: Tham khảo mô hình thiết kế công cụ quét dựa trên API Gateway, Template Engine và Execution Engine đa luồng bằng Python để tùy biến xây dựng các công cụ nội bộ phục vụ quy trình DevSecOps.

Câu hỏi thường gặp

1. Công cụ WebSentry được phát triển để giải quyết vấn đề kỹ thuật nào?

WebSentry được phát triển nhằm tự động hóa quy trình kiểm thử và phát hiện các lỗ hổng bảo mật liên quan đến xác thực đầu vào (Input Validation) trên ứng dụng web, giúp chuyên viên an ninh mạng tiết kiệm thời gian, tối ưu hóa chi phí so với các phần mềm thương mại đắt đỏ và giảm thiểu rủi ro bỏ sót kịch bản kiểm thử (testcase) so với phương pháp làm thủ công.

2. Kiến trúc của công cụ WebSentry bao gồm những mô-đun chính nào?

Hệ thống WebSentry được xây dựng trên ngôn ngữ Python với mô hình API Gateway và 4 mô-đun lõi:

  • Template Engine: Đọc và phân tích cú pháp tệp cấu hình testcase dạng YAML.
  • Execution Engine: Điều phối và gửi các yêu cầu HTTP mang payload kiểm thử tới máy chủ mục tiêu theo cơ chế đa luồng.
  • Matcher: Định vị và lọc các đối số/tham số (parameters) cần tiêm payload.
  • Asserter: Phân tích dữ liệu phản hồi HTTP (mã lỗi, chuỗi kết quả, thời gian trễ) để xác nhận lỗ hổng.

3. Công cụ WebSentry tập trung phát hiện những nhóm lỗ hổng bảo mật nào?

Phạm vi kỹ thuật của công cụ tập trung vào các lỗ hổng xác thực đầu vào phổ biến gồm: SQL Injection (Error-based, Blind, Union-based), Cross-Site Scripting (XSS), Local/Remote File Inclusion (LFI/RFI), OS Command Injection, Server-Side Template Injection (SSTI), XML External Entity Injection (XXE) và Server-Side Request Forgery (SSRF).

4. Quá trình thực nghiệm của đề tài được triển khai trên các môi trường nào và đối chuẩn với công cụ nào?

Quá trình thực nghiệm được tiến hành trên hai ứng dụng web kiểm thử tiêu chuẩn là testphp.vulnweb.com (môi trường PHP) và testasp.vulnweb.com (môi trường ASP.NET). Kết quả quét của WebSentry được so sánh đối chuẩn trực tiếp với tính năng Active Scan của công cụ thương mại Burp Suite về số lượng điểm cuối, tham số và số lượng lỗ hổng phát hiện.

5. Người dùng cần chuẩn bị các công cụ hỗ trợ nào để vận hành WebSentry theo hướng dẫn trong đồ án?

Theo kịch bản triển khai trong đồ án, người kiểm thử cần chuẩn bị môi trường chạy Python, khởi chạy API Gateway của công cụ, sử dụng Postman để cấu hình/quản lý workspace và nạp tệp JSON điều khiển, đồng thời thiết lập tiện ích FoxyProxy trên trình duyệt web để bắt gói tin và thu thập các endpoint mục tiêu chuyển tiếp về hệ thống.

Kết luận

Khóa luận tốt nghiệp của sinh viên Trần Quốc Siêu và Võ Huỳnh Anh Nhật đã hoàn thành việc nghiên cứu toàn diện cơ sở lý thuyết về lỗ hổng bảo mật web theo chuẩn OWASP và khảo sát các giải pháp quét an ninh mạng hiện hành. Đề tài đã thiết kế, phát triển và thử nghiệm thành công công cụ quét tự động WebSentry sử dụng ngôn ngữ Python với kiến trúc API Gateway, cơ chế kiểm thử linh hoạt qua tệp mẫu YAML và khả năng xử lý đa luồng. Kết quả thực nghiệm trên các nền tảng web kiểm thử thực tế khẳng định tính chính xác và khả năng ứng dụng thực tiễn của công cụ trong việc hỗ trợ các chuyên viên an ninh mạng phát hiện hiệu quả các lỗ hổng xác thực đầu vào.