Lỗ Hổng Kiểm Soát Truy Cập: Tưởng không to mà to không tưởng

Lỗ Hổng Kiểm Soát Truy Cập: Tưởng không to mà to không tưởng
Photo by Kaptured by Kasia / Unsplash

Giới thiệu

Vào tháng 9 năm 2017, thế giới chứng kiến một trong những vụ vi phạm dữ liệu lớn nhất lịch sử khi Equifax - một trong ba công ty báo cáo tín dụng lớn nhất Hoa Kỳ - bị tấn công, làm lộ thông tin cá nhân của 147 triệu người. Nguyên nhân gốc rễ? Một lỗ hổng kiểm soát truy cập trong Apache Struts cho phép kẻ tấn công thực thi mã từ xa và truy cập trái phép vào dữ liệu nhạy cảm. Từ góc nhìn của một red teamer (Part time) với khoảng 5-7 năm chọc ngoáy, tôi có thể thấy rằng lỗ hổng kiểm soát truy cập (Access Control Vulnerabilities) vẫn là một trong những điểm yếu phổ biến mà tôi thường thấy. Từ công ty lớn đến bé.

Trong bài viết này, ta sẽ cùng nói về một số cách khai thác lỗ hổng IDOR để từ đó nâng cao nhận thức về bảo mật trong cộng đồng an ninh mạng Việt Nam.

Phần 1: Access Control Vulnerabilities Là Gì?

Định Nghĩa Kiểm Soát Truy Cập

Kiểm soát truy cập (Access Control) là cơ chế bảo mật nền tảng quy định ai có thể truy cập tài nguyên nào và thực hiện hành động gì trong hệ thống. Có ba mô hình chính:

  • RBAC (Role-Based Access Control): Kiểm soát dựa trên vai trò
  • ABAC (Attribute-Based Access Control): Kiểm soát dựa trên thuộc tính
  • MAC/DAC (Mandatory/Discretionary Access Control): Kiểm soát bắt buộc/tùy ý

Lỗ Hổng Kiểm Soát Truy Cập Là Gì?

Lỗ hổng kiểm soát truy cập xảy ra khi hệ thống không thực thi đúng các chính sách bảo mật, cho phép người dùng:

  • Truy cập dữ liệu không được phép
  • Thực hiện chức năng vượt quá quyền hạn
  • Thay đổi dữ liệu của người khác
  • Leo thang đặc quyền (privilege escalation)

Theo OWASP Top 10 2021, Broken Access Control đứng vị trí #1 trong danh sách các rủi ro bảo mật web nghiêm trọng nhất, với tỷ lệ xuất hiện trong 94% ứng dụng được kiểm thử.

Tại Sao Red Team Quan Tâm?

Từ góc độ red team, lỗ hổng kiểm soát truy cập là "mỏ vàng" vì:

  • Dễ phát hiện: Thường chỉ cần thao tác đơn giản với parameters
  • Tác động lớn: Có thể dẫn đến vi phạm dữ liệu quy mô lớn
  • Khó phát hiện tự động: Scanner thường bỏ sót do cần context business logic

Phần 2: Các Lỗ Hổng Kiểm Soát Truy Cập Phổ Biến

1. IDOR - Insecure Direct Object References

Mô tả:
IDOR xảy ra khi ứng dụng cho phép truy cập trực tiếp vào đối tượng dữ liệu (file, database record) thông qua tham chiếu có thể dự đoán được mà không kiểm tra quyền.

Khai thác từ Red Team:

Bước 1: Intercept request với Burp Suite
Bước 2: Xác định parameter chứa ID (ví dụ: /invoice?id=1001)
Bước 3: Thay đổi giá trị ID (1001 → 1002, 1003...)
Bước 4: Quan sát response xem có truy cập được dữ liệu khác không

Một lần khi check mail về hóa đơn được gửi cho tôi. Tôi phát hiện endpoint /api/invoice/invoice_to_pdf.php?id=12328 bạn thấy chứ ? không token check, không session check, không gì cả. Tôi thử đổi id=12328 thành id=12329, và... BÙM! Tôi có ngay hóa đơn của người khác. Đầy đủ thông tin, số điện thoại, địa chỉ, số tiền giao dịch, vân vân và mây mây.


OK vậy thì sao để ngừa nhỉ?
Phòng ngừa:

  • Implement authorization check ở mọi endpoint
  • Sử dụng UUID thay vì ID tuần tự
    VD: /api/invoice/invoice_to_pdf.php?id=12328/api/invoice/invoice_to_pdf.php?id=550e8400-e29b-41d4-a716-446655440000
  • Áp dụng nguyên tắc least privilege
    VD: User chỉ được xem hóa đơn của chính họ, kiểm tra bằng token. /api/invoice/invoice_to_pdf.php?id=12328&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  • Log và monitor các truy cập bất thường

2. Broken Function-Level Access Control

Mô tả:
Lỗi này xảy ra khi ứng dụng không kiểm tra quyền trước khi cho phép thực thi chức năng nhạy cảm, đặc biệt là các chức năng admin.

Khai thác:

Bước 1: Map toàn bộ API endpoints với tool như Postman
Bước 2: Thử gọi admin endpoints với user thường
Bước 3: Fuzz với các HTTP methods khác nhau (GET → POST/PUT/DELETE)
Bước 4: Kiểm tra response headers và error messages

Case study:
Tôi từng phát hiện một hệ thống CRM cho phép user thường gọi /api/admin/export-all-users chỉ bằng cách thay đổi method từ GET sang POST.

Phòng ngừa:

  • Centralized authorization mechanism
  • Whitelist approach cho admin functions
  • Regular security code review
  • Penetration testing định kỳ

3. Path Traversal / Directory Traversal (Hacking 101)

Mô tả:
Cho phép kẻ tấn công truy cập files và directories ngoài thư mục root được phép, thường thông qua manipulation của file path parameters.

Khai thác từ Red Team:

URL gốc: /download?file=report.pdf
Payload: /download?file=../../../etc/passwd
Hoặc: /download?file=....//....//....//etc/passwd (bypass filter)

Tools red team sử dụng:

  • Burp Intruder với wordlist path traversal
  • ffuf cho fuzzing automated
  • Custom Python scripts cho bypass WAF

Phòng ngừa:

  • Input validation với whitelist
  • Chroot jail cho file operations
  • Không cho user control absolute paths
  • Áp dụng principle of least privilege cho file system

4. Privilege Escalation

Mô tả:
Kẻ tấn công có thể nâng cấp từ low-privilege user lên high-privilege user (horizontal hoặc vertical escalation).

Kịch bản Red Team:

# Ví dụ exploit script đơn giản
def privilege_escalation_test():
    # Bước 1: Login với user thường
    normal_session = login("user1", "password123")

    # Bước 2: Capture admin request
    admin_request = intercept_admin_action()

    # Bước 3: Replay với normal session token
    response = replay_with_session(admin_request, normal_session)

    # Bước 4: Check if escalation successful
    if response.status_code == 200:
        print("[!] Privilege Escalation Detected!")

Phòng ngừa:

  • Implement proper session management
  • Role validation ở mỗi request
  • Separation of duties
  • Regular privilege audits

5. JWT/Session Manipulation

Mô tả:
Manipulation của JSON Web Tokens hoặc session cookies để bypass authentication/authorization.

Red Team Techniques:

  • JWT algorithm confusion (RS256 → HS256)
  • JWT secret brute-force với jwt_tool
  • Session fixation attacks
  • Cookie poisoning

Ví dụ với jwt_tool:

# Scan for vulnerabilities
python3 jwt_tool.py <JWT_TOKEN> -A

# Try algorithm confusion
python3 jwt_tool.py <JWT_TOKEN> -X a

Phòng ngừa:

  • Strong JWT secret keys
  • Validate algorithm strictly
  • Implement token expiration
  • Secure cookie flags (HttpOnly, Secure, SameSite)

6. CORS Misconfiguration

Mô tả:
Cross-Origin Resource Sharing (CORS) cấu hình sai cho phép unauthorized domains truy cập sensitive data.

Red Team Test:

// Proof of Concept
fetch("https://vulnerable-api.com/user/data", {
  credentials: "include",
  method: "GET",
})
  .then((response) => response.json())
  .then((data) => {
    // Exfiltrate sensitive data
    console.log("Stolen data:", data);
  });

Phòng ngừa:

  • Whitelist trusted origins specifically
  • Không dùng wildcard (*) cho sensitive endpoints
  • Validate Origin header server-side
  • Regular CORS configuration audits

7. Forced Browsing

Mô tả:
Truy cập trực tiếp vào URLs không được liệt kê hoặc ẩn, thường là admin panels hoặc backup files.

Red Team Approach:

# Sử dụng gobuster cho directory enumeration
gobuster dir -u https://target.com -w /wordlists/common.txt

# Common endpoints to test:
/admin, /backup, /test, /api/v1/internal
/.git, /.env, /config.php.bak

Phòng ngừa:

  • Proper access control cho mọi endpoints
  • Remove unnecessary files từ production
  • Implement strong authentication
  • Security through design, không phải obscurity

Công Cụ

Trong quá trình kiểm thử, red team sử dụng các công cụ sau:

  1. Burp Suite Professional: Comprehensive web testing platform
  2. OWASP ZAP: Free alternative cho automated scanning
  3. Postman/Insomnia: API testing và documentation
  4. Custom Scripts: Python/Go cho specific exploits
  5. AuthMatrix: Burp extension cho authorization testing

Tuân Thủ Pháp Luật Việt Nam

Theo Luật An ninh mạng 2018 của Việt Nam, việc kiểm thử bảo mật phải:

  • Có sự cho phép bằng văn bản từ chủ sở hữu hệ thống
  • Tuân thủ quy định về bảo vệ dữ liệu cá nhân
  • Báo cáo kết quả cho cơ quan chức năng khi phát hiện lỗ hổng nghiêm trọng

Kết Luận

Lỗ hổng kiểm soát truy cập tiếp tục là mối đe dọa hàng đầu trong an ninh mạng. Từ kinh nghiệm red team, tôi khuyến nghị các tổ chức Việt Nam nên:

  1. Thực hiện penetration testing định kỳ với đội ngũ chuyên nghiệp
  2. Áp dụng Defense in Depth - nhiều lớp bảo mật
  3. Training nhận thức bảo mật cho developers
  4. Implement Zero Trust Architecture dần dần

Hãy nhớ rằng, mục tiêu không phải phá hoại mà là giúp blue team xây dựng hệ thống an toàn hơn. Trong bối cảnh chuyển đổi số tại Việt Nam, việc hiểu và phòng ngừa các lỗ hổng này không chỉ là yêu cầu kỹ thuật mà còn là trách nhiệm xã hội để bảo vệ dữ liệu của hàng triệu người dùng.

Tài Liệu Tham Khảo

  1. OWASP Top 10 2021 - Open Web Application Security Project
  2. NIST SP 800-53 - Security and Privacy Controls
  3. CWE-639 - Authorization Bypass Through User-Controlled Key
  4. Luật An ninh mạng 2018 - Quốc hội Việt Nam
  5. Web Application Hacker's Handbook - Dafydd Stuttard & Marcus Pinto
  6. PTES - Penetration Testing Execution Standard
  7. MITRE ATT&CK Framework - Adversarial Tactics and Techniques