Broken Object Level Authorization (IDOR)
GET · /api/practice/level5/accounts/:id · Chuyên sâu
Mô tả bài tập
BOLA/IDOR (Broken/Insecure Object-Level Authorization) là lỗi đứng đầu OWASP API Security Top 10: server có xác thực (biết bạn là ai) nhưng KHÔNG kiểm tra bạn có quyền truy cập đúng tài nguyên đang xin hay không. GET /accounts/me trả về tài khoản của chính bạn (tự động tạo nếu chưa có), kèm 'id' của tài khoản đó. GET /accounts/:id lẽ ra chỉ nên cho phép xem tài khoản của chính mình, nhưng hãy thử đổi :id thành 1, 2, hoặc số khác - bạn sẽ thấy được cả email, số dư (balance), và ghi chú riêng tư (secretNote) của những tài khoản không thuộc về bạn.
Mục tiêu học được
- Hiểu BOLA/IDOR là gì và vì sao nó nguy hiểm hơn nhiều so với lỗi 'quên validate input' thông thường
- Luyện thói quen luôn thử đổi ID/UUID trên URL sang giá trị của người khác khi test bất kỳ API nào có :id
- Phân biệt BOLA (sai ở cấp 1 object cụ thể) với 401/403 (sai ở cấp xác thực/permission tổng quát)
💡 Bài này hoàn thành khi bạn đã gọi cả với id của chính mình VÀ id của một tài khoản khác.
Lệnh curl
# 1. Xem tài khoản của chính bạn để biết id của mình
curl -s "http://testing-api.systemhub.uk/api/practice/level5/accounts/me" -H "X-Practice-Token: YOUR_TOKEN"
# 2. Thử đổi sang id của người khác (1 hoặc 2 luôn có sẵn để thử)
curl -s "http://testing-api.systemhub.uk/api/practice/level5/accounts/1" -H "X-Practice-Token: YOUR_TOKEN"
curl -s "http://testing-api.systemhub.uk/api/practice/level5/accounts/2" -H "X-Practice-Token: YOUR_TOKEN"
Các bước làm trên Postman
- GET http://testing-api.systemhub.uk/api/practice/level5/accounts/me, ghi nhớ id của tài khoản bạn
- GET http://testing-api.systemhub.uk/api/practice/level5/accounts/<id của bạn>, kiểm tra đúng là dữ liệu của bạn
- GET http://testing-api.systemhub.uk/api/practice/level5/accounts/1 (hoặc /2), quan sát: server vẫn trả 200 kèm đầy đủ email/balance/secretNote dù đây không phải tài khoản của bạn
- Đọc field '_warning' trong response - đó là xác nhận bạn đã khai thác thành công lỗi BOLA/IDOR
Đăng nhập để lệnh curl ở trên tự động điền sẵn Practice Token thật của bạn.
🧪 Thử nghiệm trực tiếp
Gọi API ngay tại đây. Nếu bạn đã đăng nhập, tiến độ sẽ được ghi nhận tự động khi gọi đúng như kỳ vọng của bài.
Kết quả
Status: