2.05 | Insecure Direct Object References
Playing with the Patterns
1️⃣ Xem hồ sơ của người khác
Bạn đã tìm ra cách xem hồ sơ của mình bằng đường dẫn:
WebGoat/IDOR/profile/2342384
Tương tự, để xem hồ sơ của người khác, bạn có thể thay đổi ID trong URL.
Cách thực hiện
- Cách 1: Dùng Developer Tools (F12) → Intercept request và thay đổi ID
- Cách 2: Dùng trình duyệt và nhập URL theo mẫu:
WebGoat/IDOR/profile/{otherUserId} - Cách 3: Sử dụng công cụ như Postman hoặc cURL để gửi yêu cầu GET
Từ việc xem được hồ sơ của mình, kẻ tấn công đổi id để xem, và đổi method để sửa hồ sơ người khác:
2️⃣ Chỉnh sửa hồ sơ người khác
Các ứng dụng RESTful thường thay đổi phương thức HTTP để thực hiện các hành động khác nhau.
Ví dụ:
GET /profile/{id}→ Xem hồ sơPUT /profile/{id}→ Chỉnh sửa hồ sơ
💡 Mục tiêu:
- Chỉnh sửa hồ sơ của Buffalo Bill
- Hạ cấp quyền của người dùng (vì quyền cao hơn thường có ID thấp)
- Thay đổi màu sắc thành
"red"
Cách thực hiện
1️⃣ Intercept request bằng Burp Suite/ZAP và thay đổi ID
2️⃣ Thay đổi phương thức từ GET → PUT
3️⃣ Gửi payload mới
📌 Ví dụ Payload (PUT Request)
{
"id": 123456,
"username": "Buffalo Bill",
"role": "user",
"color": "red"
}
🛑 Lưu ý:
- Nếu ứng dụng không xác thực quyền đúng cách, bạn có thể sửa thông tin của người khác!
- Đây là một lỗ hổng Insecure Direct Object References (IDOR) phổ biến.
🚀 Thử ngay và quan sát kết quả!
Xem chi tiết tại đây.
Bài liên quan
- Đổi id trên URL ra dữ liệu người khác? Chặn IDOR ở một tầng duy nhất — IDOR xảy ra khi API nhận id từ request rồi đọc thẳng bản ghi mà không hỏi xem người gọi có sở hữu bản ghi đó không.