0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng dẫn Kiểm thử API: Phần 1 - Nền tảng và Các Kỹ Thuật Cơ Bản

Đăng vào 3 tuần trước

• 3 phút đọc

Chủ đề:

web security

I. Giới thiệu về API và Kiểm thử API

API (Application Programming Interfaces) là giao diện lập trình ứng dụng, cho phép các ứng dụng hoặc dịch vụ khác nhau giao tiếp và tương tác với nhau mà không cần hiểu rõ cấu trúc nội bộ của nhau. Có thể hình dung API như một người phục vụ trong nhà hàng, nơi bạn gọi món (gửi yêu cầu) và người phục vụ sẽ chuyển yêu cầu tới bếp (hệ thống nội bộ), rồi mang món ăn (kết quả) trở lại cho bạn.

Ví dụ về API trong thực tế

  • Khi bạn sử dụng ứng dụng thời tiết, nó gọi API từ dịch vụ thời tiết để lấy thông tin như nhiệt độ và điều kiện thời tiết từ máy chủ của dịch vụ đó.
  • Khi bạn đăng nhập vào một trang web thông qua tài khoản Google, trang web sử dụng API của Google để xác thực thông tin mà không cần xây dựng hệ thống xác thực riêng.

Kiểm thử API là quy trình kiểm tra khả năng bảo mật và độ tin cậy của API, từ đó phát hiện các lỗ hổng an ninh.

II. Quá trình Thu thập Thông tin về API (API Reconnaissance)

1. Lý thuyết Cơ bản về API Recon

API reconnaissance là bước đầu trong kiểm thử API. Mục tiêu của giai đoạn này là thu thập thông tin về các đặc điểm của API, bao gồm cấu trúc, cách thức hoạt động và các endpoints có sẵn.

Những thông tin quan trọng cần thu thập:

  • Thông tin công khai về API
  • Tài liệu hướng dẫn sử dụng API (API documentation)
  • Thông tin xác thực hoặc mã thông báo có thể bị lộ
  • Thông tin về phiên bản API
  • Mục đích kinh doanh để hiểu rõ chức năng mong đợi

2. Một số Cách Tìm kiếm Dorking

API thường bắt đầu với đường dẫn như /api/v1, /api/v2... và sử dụng định dạng dữ liệu JSON. Việc xác thực thường thực hiện qua header Authorization và có thể sử dụng công cụ tài liệu RESTful như Swagger.

Ví dụ về Google Dorking:

Copy
inurl:"/api/v1" site:microsoft.com
intitle:json site:ebay.com

Ví dụ về Github Dorking:

Copy
Authorization: Bearer
filename:swagger.json

Ví dụ về Shodan Dorking:

Copy
content-type: application/json

3. Phân Tích Lab Demo

Trong lab “Exploiting an API endpoint using documentation”, mục tiêu là tìm các endpoints API bị lộ thông qua tài liệu. Bằng cách thực hiện tấn công brute force với một danh sách từ khóa API, bạn có thể xác định được API document tại /api/openapi.json.

Dựa trên tài liệu API, chúng ta phát hiện endpoint /user/[username: String] với phương thức DELETE có thể sử dụng để xóa người dùng. Dưới đây là cách xây dựng gói gồm:

Copy
DELETE /api/user/carlos HTTP/2
Host: 0a4f00270351b3d380e0585a004a001f.web-security-academy.net
Cookie: session=YghfxI4Jgt6v29s9DEOlUUPp7SeGBBkN
Content-Type: application/json
Content-Length: 2

{}

Khi thực hiện yêu cầu này, nếu nếu xác thực thành công, server sẽ xóa người dùng carlos. Bạn có thể luyện tập tại lab “Finding and exploiting an unused API endpoint”.

III. Các Tham số Ẩn trong API

Tham số ẩn (hidden parameters) là những tham số không được người dùng biết tới nhưng vẫn có thể ảnh hưởng đến hành vi của server. Chúng thường xuất hiện khi cấu trúc mã không chặt chẽ hoặc trong quá trình kiểm thử.

Ví dụ, khi cập nhật thông tin người dùng với các tham số nameemail, bạn có thể gửi thêm tham số isAdmin mà không được phép:

Copy
{
    "name": "wiener",
    "email": "wiener@viblo.com",
    "isAdmin": true,
}

Để dẫn đến lỗ hổng mass assignment. Qua đó, attacker có thể nâng cấp quyền hạn lên admin chỉ bằng việc thêm tham số ẩn vào yêu cầu. Việc phát hiện các tham số ẩn có thể thực hiện qua phân tích responses từ server hoặc brute force với danh sách các tham số khả dĩ.

Bạn có thể tham khảo lab “Exploiting a mass assignment vulnerability” để rèn luyện khả năng kiểm thử API của mình.

IV. Tài liệu tham khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào