DEV Community

tRavOndAtrACk
tRavOndAtrACk

Posted on

Lab: Exploiting an API endpoint using documentation

Lab: Exploiting an API Endpoint Using Documentation

1. Thông tin lab

  • Tên lab: Exploiting an API endpoint using documentation
  • Mức độ: Apprentice
  • Trạng thái: Solved
  • Mục tiêu: Tìm tài liệu API bị lộ và sử dụng API để xóa người dùng carlos.
  • Tài khoản được cung cấp: wiener:peter

2. Mô tả lỗ hổng

Ứng dụng để lộ tài liệu API thông qua endpoint /api. Từ tài liệu này, người dùng có thể xem được các chức năng API đang hỗ trợ, bao gồm chức năng xóa tài khoản người dùng.

Do API documentation có thể truy cập được và endpoint xóa user hoạt động trực tiếp, attacker có thể lợi dụng để thực hiện hành động trái phép như xóa tài khoản của người dùng khác.


3. Công cụ sử dụng

  • Burp Suite
  • Burp Browser
  • Proxy HTTP history
  • Repeater

4. Các bước thực hiện

Bước 1: Đăng nhập vào ứng dụng

Mở lab bằng Burp Browser và đăng nhập bằng tài khoản được cung cấp:

Username: wiener
Password: peter
Enter fullscreen mode Exit fullscreen mode

Sau khi đăng nhập thành công, tiến hành cập nhật địa chỉ email để tạo request API.


Bước 2: Quan sát request trong HTTP history

Vào:

Proxy > HTTP history
Enter fullscreen mode Exit fullscreen mode

Tìm request được gửi khi cập nhật email:

PATCH /api/user/wiener HTTP/2
Host: <lab-domain>
Enter fullscreen mode Exit fullscreen mode

Request này cho thấy ứng dụng đang sử dụng API để cập nhật thông tin người dùng wiener.

Một cách khác ta dùng Site map để xem.


Bước 3: Gửi request sang Repeater

Nhấp chuột phải vào request:

PATCH /api/user/wiener
Enter fullscreen mode Exit fullscreen mode

Chọn:

Send to Repeater
Enter fullscreen mode Exit fullscreen mode

Mục đích là kiểm tra và chỉnh sửa request API thủ công.


Bước 4: Kiểm tra endpoint API

Trong tab Repeater, gửi lại request ban đầu:

PATCH /api/user/wiener
Enter fullscreen mode Exit fullscreen mode

Kết quả cho thấy API trả về thông tin liên quan đến user wiener.

Sau đó, chỉnh sửa đường dẫn bằng cách xóa /wiener, chỉ còn:

/api/user
Enter fullscreen mode Exit fullscreen mode

Khi gửi request, server trả về lỗi vì thiếu định danh người dùng.

Tiếp tục xóa /user, chỉ còn:

/api
Enter fullscreen mode Exit fullscreen mode

Khi gửi request, server trả về tài liệu API.


Bước 5: Mở tài liệu API trên trình duyệt

Tại response chứa tài liệu API, nhấp chuột phải và chọn:

Show response in browser
Enter fullscreen mode Exit fullscreen mode

Sao chép URL được tạo, sau đó dán vào Burp Browser để mở tài liệu API.

Tại đây, có thể thấy tài liệu API có giao diện tương tác và hiển thị các endpoint được hỗ trợ.


Bước 6: Xóa user Carlos

Trong tài liệu API, tìm chức năng:

DELETE /api/user/{username}
Enter fullscreen mode Exit fullscreen mode

Nhập username cần xóa:

carlos
Enter fullscreen mode Exit fullscreen mode

Sau đó nhấn:

Send request
Enter fullscreen mode Exit fullscreen mode

Request xóa user carlos được thực thi thành công.


5. Kết quả

Người dùng carlos đã bị xóa thành công thông qua endpoint API được phát hiện trong tài liệu API bị lộ.


6. Nguyên nhân

Nguyên nhân chính là do ứng dụng để lộ tài liệu API trên môi trường có thể truy cập được. Ngoài ra, endpoint xóa người dùng có thể được gọi trực tiếp mà không có cơ chế kiểm soát quyền phù hợp.


7. Tác động

Attacker có thể:

  • Khám phá các endpoint API ẩn.
  • Hiểu cách gọi API thông qua tài liệu bị lộ.
  • Thực hiện các hành động trái phép.
  • Xóa tài khoản người dùng khác.
  • Ảnh hưởng đến tính toàn vẹn và sẵn sàng của hệ thống.

8. Khuyến nghị khắc phục

  • Không public API documentation trên môi trường production.
  • Giới hạn quyền truy cập vào tài liệu API.
  • Kiểm tra phân quyền chặt chẽ cho từng endpoint.
  • Không cho phép user thường gọi các API nhạy cảm như xóa tài khoản.
  • Áp dụng xác thực, phân quyền và kiểm tra ownership trước khi xử lý request.

Top comments (0)