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
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
Tìm request được gửi khi cập nhật email:
PATCH /api/user/wiener HTTP/2
Host: <lab-domain>
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
Chọn:
Send to Repeater
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
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
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
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
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}
Nhập username cần xóa:
carlos
Sau đó nhấn:
Send request
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)