1. Mục tiêu bài lab

Lab Tuần 3 nhằm giúp sinh viên hiểu mối liên hệ giữa cấu hình sai, lỗ hổng bảo mật và rủi ro an toàn thông tin trong ứng dụng web. Thông qua OWASP Juice Shop, sinh viên có thể thực hành phát hiện lỗi, quan sát request/response và đề xuất biện pháp khắc phục cơ bản.

Nội dung Mục đích
Triển khai ứng dụng web có chủ đích yếu bảo mật Làm quen với môi trường kiểm thử an toàn thông tin.
Phát hiện lỗi theo OWASP Top 10 Nhận diện các rủi ro bảo mật phổ biến trong ứng dụng web.
Cấu hình và đề xuất sửa lỗi Hiểu cách giảm thiểu rủi ro ở tầng ứng dụng và tầng hạ tầng.
Phân tích triển khai trên cloud Đánh giá mức độ nguy hiểm khi website được public trên internet.

2. Kiến thức cơ bản

2.1. HTTP, HTTPS và TLS

HTTP là giao thức truyền tải dữ liệu giữa trình duyệt và máy chủ web. Tuy nhiên, HTTP không mã hóa dữ liệu nên thông tin truyền đi có thể bị nghe lén hoặc chỉnh sửa. HTTPS là phiên bản an toàn hơn của HTTP vì sử dụng TLS để mã hóa dữ liệu trong quá trình truyền tải.

Tóm tắt: HTTP truyền dữ liệu dạng rõ, còn HTTPS sử dụng TLS để mã hóa dữ liệu, giúp bảo vệ tài khoản, mật khẩu, cookie và các thông tin nhạy cảm của người dùng.

2.2. HTTP Security Headers

HTTP Security Headers là các header bảo mật được server gửi về trình duyệt nhằm hướng dẫn trình duyệt bảo vệ website tốt hơn. Các header này có thể giúp giảm nguy cơ XSS, clickjacking, rò rỉ thông tin và tải tài nguyên từ nguồn không đáng tin cậy.

Security Header Vai trò
Strict-Transport-Security Bắt buộc trình duyệt sử dụng HTTPS.
Content-Security-Policy Giới hạn nguồn script, style, image để giảm nguy cơ XSS.
X-Frame-Options Ngăn website bị nhúng vào iframe độc hại.
X-Content-Type-Options Ngăn trình duyệt tự đoán sai loại nội dung.
Referrer-Policy Kiểm soát thông tin referrer được gửi đi.

2.3. OWASP Top 10

OWASP Top 10 là danh sách các nhóm rủi ro bảo mật phổ biến và nguy hiểm nhất đối với ứng dụng web. Danh sách này giúp lập trình viên, quản trị viên và sinh viên nhận diện các lỗi thường gặp để có hướng phòng tránh phù hợp.

2.4. OWASP Juice Shop

OWASP Juice Shop là một ứng dụng web cố tình chứa nhiều lỗ hổng bảo mật. Ứng dụng này thường được dùng trong học tập, giảng dạy và thực hành kiểm thử an toàn thông tin trong môi trường hợp pháp.

3. Các lỗ hổng phát hiện

Trong quá trình kiểm tra OWASP Juice Shop, nhóm tập trung phân tích ba nhóm rủi ro phổ biến trong OWASP Top 10 gồm Injection, Broken Access Control và Security Misconfiguration.

💉

A03: Injection

Lỗi Injection xảy ra khi ứng dụng xử lý dữ liệu đầu vào không an toàn. Nếu bị khai thác, kẻ tấn công có thể truy cập trái phép, lấy dữ liệu hoặc làm sai lệch dữ liệu trong hệ thống.

🔓

A01: Broken Access Control

Lỗi kiểm soát truy cập xảy ra khi người dùng có thể truy cập tài nguyên, dữ liệu hoặc chức năng không thuộc quyền của mình.

⚙️

A05: Security Misconfiguration

Lỗi cấu hình sai bảo mật có thể xuất hiện khi website thiếu security headers, bật debug mode, cấu hình CORS quá rộng hoặc để lộ thông tin hệ thống.

Lỗ hổng Biểu hiện Rủi ro
A03: Injection Dữ liệu nhập vào có thể làm thay đổi logic xử lý của ứng dụng. Đăng nhập trái phép, rò rỉ hoặc thay đổi dữ liệu.
A01: Broken Access Control Người dùng có thể truy cập dữ liệu hoặc chức năng không thuộc quyền. Lộ dữ liệu cá nhân, truy cập trái phép chức năng quản trị.
A05: Security Misconfiguration Thiếu security headers, cấu hình server chưa an toàn. Tăng nguy cơ XSS, clickjacking hoặc rò rỉ thông tin hệ thống.

4. Triển khai OWASP Juice Shop local bằng Docker

Ngoài việc sử dụng phiên bản online, sinh viên cần triển khai OWASP Juice Shop trên máy local bằng Docker để kiểm tra và rà soát lỗi trong môi trường cục bộ.

4.1. Pull image Juice Shop

docker pull bkimminich/juice-shop

4.2. Chạy container

docker run --rm -p 3000:3000 bkimminich/juice-shop

4.3. Truy cập ứng dụng

Sau khi container chạy thành công, mở trình duyệt và truy cập:

http://localhost:3000

4.4. Ý nghĩa câu lệnh Docker

Thành phần Ý nghĩa
docker run Chạy một container từ image đã tải.
--rm Tự động xóa container sau khi dừng.
-p 3000:3000 Ánh xạ port 3000 trên máy thật với port 3000 trong container.
bkimminich/juice-shop Tên image OWASP Juice Shop trên Docker Hub.

5. Giải pháp khắc phục

Các lỗi phát hiện được cần được khắc phục bằng cách kết hợp giữa lập trình an toàn, cấu hình server đúng cách và giám sát hệ thống trong quá trình vận hành.

Ví dụ cấu hình Security Headers cơ bản

Content-Security-Policy: default-src 'self'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
Permissions-Policy: camera=(), microphone=(), geolocation=()

6. Phân tích triển khai ứng dụng trên cloud

6.1. Lỗ hổng được chọn

Khi triển khai ứng dụng web trên nền tảng cloud công cộng, nhóm chọn A01: Broken Access Control là lỗ hổng nguy hiểm nhất. Đây là lỗi xảy ra khi hệ thống không kiểm tra đúng quyền truy cập của người dùng.

Ví dụ: Người dùng A chỉ được xem đơn hàng của mình, nhưng do backend không kiểm tra quyền, người dùng A có thể thay đổi mã đơn hàng trong request để xem đơn hàng của người dùng B.

6.2. Vì sao nguy hiểm hơn trên cloud?

Trong môi trường nội bộ, ứng dụng thường chỉ được truy cập bởi một số người trong phạm vi giới hạn. Tuy nhiên, khi triển khai trên cloud công cộng, website thường được public ra internet. Điều này khiến bất kỳ ai cũng có thể gửi request đến hệ thống. Nếu backend không kiểm tra quyền chặt chẽ, lỗi phân quyền có thể bị khai thác trên phạm vi rộng hơn.

Tiêu chí Môi trường nội bộ Môi trường cloud công cộng
Phạm vi truy cập Thường giới hạn trong mạng nội bộ hoặc máy local. Có thể truy cập từ internet.
Số lượng người truy cập Ít, chủ yếu là người trong nhóm hoặc tổ chức. Lớn hơn, bao gồm cả người dùng bên ngoài.
Khả năng bị dò quét Thấp hơn. Cao hơn do endpoint public.
Phạm vi ảnh hưởng Thường nhỏ hơn. Có thể ảnh hưởng đến toàn bộ dữ liệu và dịch vụ.

6.3. Hậu quả tiềm ẩn

Đối tượng ảnh hưởng Hậu quả
Dữ liệu Lộ thông tin tài khoản, email, số điện thoại, địa chỉ, đơn hàng, dữ liệu quản trị hoặc dữ liệu trong database.
Người dùng Mất quyền riêng tư, bị truy cập tài khoản trái phép, bị thay đổi thông tin hoặc bị lợi dụng dữ liệu cá nhân.
Hệ thống Mất toàn vẹn dữ liệu, bị sửa đổi trái phép, gián đoạn dịch vụ, mất uy tín và có thể ảnh hưởng đến các dịch vụ cloud liên quan.

6.4. Các lớp bảo vệ cloud giúp giảm rủi ro

Cloud có thể hỗ trợ giảm thiểu rủi ro bằng nhiều lớp bảo vệ như IAM, firewall, WAF, API Gateway, logging, monitoring và backup. Tuy nhiên, cloud không thể tự sửa lỗi logic phân quyền trong mã nguồn ứng dụng.

IAM
WAF
Firewall
API Gateway
HTTPS/TLS
Logging
Monitoring
Backup
Lớp bảo vệ Vai trò
IAM Quản lý danh tính và phân quyền truy cập tài nguyên cloud.
Firewall / Security Group Giới hạn port, IP và luồng truy cập vào hệ thống.
WAF Chặn một số request độc hại hoặc hành vi tấn công phổ biến.
API Gateway Kiểm soát, xác thực, giới hạn tốc độ và ghi log request API.
Logging & Monitoring Ghi nhận và cảnh báo các hành vi truy cập bất thường.
Backup Hỗ trợ khôi phục dữ liệu khi có sự cố.

6.5. Đánh giá vai trò thực tế của cloud

Cloud đóng vai trò quan trọng trong việc giảm rủi ro bảo mật nhờ cung cấp nhiều công cụ bảo vệ sẵn có. Tuy nhiên, cloud không thể thay thế việc lập trình an toàn. Đối với lỗi Broken Access Control, nguyên nhân chính nằm ở logic xử lý quyền truy cập trong backend. Vì vậy, hệ thống cần kết hợp cả bảo mật ở tầng ứng dụng và bảo mật ở tầng cloud.

Kết luận: Cloud giúp tăng cường phòng thủ bằng nhiều lớp bảo vệ, nhưng backend vẫn phải kiểm tra quyền truy cập chặt chẽ, xác minh vai trò người dùng và kiểm tra quyền sở hữu dữ liệu trước khi trả kết quả.

7. Hình ảnh minh chứng

Phần này dùng để chèn các ảnh chụp màn hình trong quá trình thực hành. Có thể chụp từ OWASP Juice Shop, Developer Tools, Docker terminal và kết quả kiểm tra security headers.

Hình 1: Trang OWASP Juice Shop

Chèn ảnh trang chủ Juice Shop online hoặc localhost.

Hình 2: Form đăng nhập

Chèn ảnh giao diện Login của Juice Shop.

Hình 3: Developer Tools - Network

Chèn ảnh request/response khi kiểm tra lỗi.

Hình 4: Docker chạy Juice Shop local

Chèn ảnh terminal sau khi chạy docker run thành công.

8. Kết luận

Qua Lab Tuần 3, nhóm đã tìm hiểu các khái niệm cơ bản về HTTP, HTTPS, TLS, HTTP Security Headers và OWASP Top 10. Nhóm cũng thực hành kiểm tra một số lỗ hổng bảo mật trên OWASP Juice Shop như Injection, Broken Access Control và Security Misconfiguration.

Khi triển khai ứng dụng web trên cloud công cộng, các lỗ hổng bảo mật có thể trở nên nguy hiểm hơn do hệ thống được public ra internet và có phạm vi ảnh hưởng lớn hơn. Vì vậy, cần áp dụng nhiều lớp bảo vệ như kiểm tra quyền ở backend, sử dụng HTTPS, IAM, firewall, WAF, logging, monitoring và backup.

Bảo mật ứng dụng web cần được thực hiện theo hướng phòng thủ nhiều lớp: an toàn trong mã nguồn, cấu hình hệ thống đúng cách và sử dụng hiệu quả các dịch vụ bảo mật của cloud.