Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • API Testing: Mảnh ghép khiến nhiều hệ thống “toang” trong im lặng

    1. API Testing là gì?

    Click image for larger version

Name:	image.png
Views:	16
Size:	47.8 KB
ID:	438685
    API (Application Programming Interface) cho phép các hệ thống và ứng dụng giao tiếp, trao đổi dữ liệu với nhau. Trong các website hiện đại, gần như mọi chức năng đều hoạt động thông qua API.

    Vì vậy, API testing rất quan trọng. Nếu API tồn tại lỗ hổng, kẻ tấn công có thể ảnh hưởng trực tiếp đến:
    • Confidentiality – rò rỉ dữ liệu
    • Integrity – thay đổi dữ liệu trái phép
    • Availability – gây gián đoạn dịch vụ

    Nhiều lỗ hổng web quen thuộc như SQL Injection hay Broken Access Control cũng có thể xuất hiện trong API.
    2. API Recon – Thu thập thông tin ban đầu


    Bước đầu tiên khi kiểm thử API là xác định attack surface, tức là tìm càng nhiều thông tin về API càng tốt. Xác định API endpoint


    Endpoint là nơi API nhận request. Ví dụ:

    GET /api/books HTTP/1.1
    Host: example.com

    Endpoint ở đây là:

    /api/books

    Endpoint khác có thể là:

    /api/books/mystery

    Sau khi xác định endpoint, cần tìm hiểu:
    • Các tham số đầu vào (bắt buộc và tùy chọn)
    • Phương thức HTTP hỗ trợ (GET, POST, PUT, DELETE…)
    • Cơ chế xác thực
    • Giới hạn tần suất (rate limit)

    3. Tìm API Documentation


    Nhiều API có tài liệu hướng dẫn cho developer, thường ở dạng:
    • Human-readable: hướng dẫn đọc được bởi con người
    • Machine-readable: JSON, XML, OpenAPI

    Một số đường dẫn phổ biến để tìm documentation:
    • /api
    • /swagger/index.html
    • /openapi.json

    Nếu thấy endpoint như:
    /api/swagger/v1/users/123

    Hãy thử:
    • /api/swagger/v1
    • /api/swagger
    • /api

    Công cụ thường dùng:
    • Burp Suite
    • Postman
    • SoapUI

    4. Xác định API Endpoint bằng cách phân tích ứng dụng


    Ngay cả khi có documentation, vẫn nên tự phân tích:
    • Dùng Burp để crawl
    • Xem file JavaScript
    • Tìm các URL chứa /api/

    Nhiều endpoint không được hiển thị trực tiếp trên giao diện nhưng vẫn tồn tại.
    5. Tương tác với API


    Sau khi tìm được endpoint, hãy:
    • Gửi request bằng Burp Repeater
    • Quan sát response và lỗi trả về
    • Thay đổi method và dữ liệu gửi

    Lỗi từ server đôi khi tiết lộ:
    • Cấu trúc dữ liệu
    • Tham số hợp lệ
    • Logic xử lý

    6. Kiểm tra HTTP Methods


    Mỗi endpoint có thể hỗ trợ nhiều method:

    GET /api/tasks → lấy danh sách
    POST /api/tasks → tạo mới
    DELETE /api/tasks/1 → xóa

    Hãy thử nhiều method khác nhau vì:
    • Có thể phát hiện chức năng ẩn
    • Có thể bypass kiểm soát

    7. Kiểm tra Content-Type


    API thường xử lý dữ liệu theo định dạng cụ thể:
    • JSON
    • XML
    • Form data

    Thay đổi Content-Type có thể:
    • Gây lỗi tiết lộ thông tin
    • Bypass filter
    • Khai thác injection

    8. Tìm Hidden Endpoints


    Có thể brute force endpoint bằng:
    • Wordlist
    • Burp Intruder

    Ví dụ:
    PUT /api/user/update

    Có thể thử:
    • /delete
    • /add
    • /reset

    9. Tìm Hidden Parameters


    Một số tham số tồn tại nhưng không được document.

    Công cụ hỗ trợ:
    • Burp Intruder
    • Param Miner
    • Content Discovery

    10. Mass Assignment Vulnerability


    Mass assignment xảy ra khi framework tự động bind dữ liệu request vào object.

    Ví dụ:

    PATCH request:
    {
    "username": "user1",
    "email": "user1@mail.com"
    }

    GET response:
    {
    "id": 123,
    "username": "user1",
    "email": "user1@mail.com",
    "isAdmin": false
    }

    Tham số isAdmin có thể là hidden parameter.

    Nếu server không kiểm tra chặt chẽ, attacker có thể gửi:

    {
    "username": "user1",
    "email": "user1@mail.com",
    "isAdmin": true
    }

    Kết quả: người dùng có thể được cấp quyền admin trái phép.
    11. Kết luận


    API testing là một phần cực kỳ quan trọng trong pentest web hiện đại vì:
    • Website hiện nay phụ thuộc rất nhiều vào API
    • Nhiều endpoint không được hiển thị trên giao diện
    • Lỗi logic và lỗi kiểm soát truy cập xuất hiện rất thường xuyên

    Một quy trình cơ bản:
    1. Recon – tìm endpoint và documentation
    2. Phân tích request/response
    3. Thử method và content-type
    4. Tìm endpoint và parameter ẩn
    5. Kiểm tra mass assignment
Working...
X