IDOR – một lỗ hổng web thuộc danh mục Broken Access Control được cho là dễ khai thác (nhưng chưa chắc dễ phát hiện ) lần đầu được ghi danh trên OWASP TOP 10 từ năm 2007. Qua hơn mười năm phát triển về công nghệ lẫn nhận thức, hiện nay sự hiện diện của IDOR vẫn chưa hề mất đi, nó càng bí ẩn thuận theo suy nghĩ phức tạp của các developer. Đơn giản không cầu kì nhưng mức độ ảnh hưởng không nhỏ, khẳng định độ nguy hiểm của mình bằng hạng 5 trên TOP 10 OWASP. Trong bài viết này, chúng ta sẽ tìm hiểu cách săn IDOR với sự hỗ trợ của Burpsuite. Trước hết, cùng tóm lược qua về IDOR.
IDOR là gì?
Idor hay Insecure Direct Object Reference thuộc về dạng lỗ hổng Broken Access Control. Theo mô tả của OWASP: “Insecure Direct Object Reference xảy ra khi một ứng dụng web cho phép truy cập trực tiếp tới một đối tượng nhờ vào dữ liệu mà người dùng cung cấp. Hậu quả dẫn tới cho phép attacker có thể bypass phân quyền và truy cập trực tiếp tới các tài nguyên trái thẩm quyền bằng cách sửa đổi tham số – cái được dùng để tham chiếu đến đối tượng. Attacker có thể xem được các thông tin nhạy cảm của các người dùng khác, thực thi các chức năng mà bình thường không được phép, thậm chí có thể dẫn tới chiếm đoạt tài khoản khác.”
Một ví dụ cụ thể :
Giả sử một trang web có chức năng xem chi tiết thông tin người dùng bằng ID của mình, hiện tại sẽ có 2 người dùng A,B. Người dùng A có ID là 1000 và người dùng B có ID là 1002.
Theo logic đúng, người dùng A chỉ có thể xem thông tin chi tiết của mình với ID là 1000 và người dùng B cũng vậy với ID là 1002. Nhưng với một trang web triển khai sai, thì người dùng A có thể xem thông tin của người dùng B chỉ bằng cách thay ID từ 1000 thành 1002.
Hai phần tiếp theo , chúng ta sẽ tìm hiểu cách set up và hoạt động của 2 extension hỗ trợ tìm lỗi IDOR.
Let’s begin the Hacking!
Ta sẽ cài đặt Autorize và Auto Repeater tại BApp store. Cả hai đều có mức rating khá là cao.
Autorize
Autorize là một extension tự động thực thi ủy quyền trên Burp Suite được viết bằng Python bởi Barak Tawily – một chuyên gia an ninh mạng. Autorize hỗ trợ người kiểm thử xâm nhập tự động test các lỗi phân quyền bằng cách gửi các request với cookie mà ta sẽ cung cấp.
Khi cài đặt thành công, trên thanh chức năng sẽ có tab Autorize.
Các bước thực hiện:
Giả sử ta có 2 user: USER A – Admin ; USER B – user thường.
- Ban đầu login với USER B và capture lại request.
- Copy giá trị cookies, session hoặc jwt tokens của USER B và paste vào trong Autorize tab.
- Click vào “Autorize is off” để bật Autorize.
- Cuối cùng ta sẽ truy cập các tài nguyên của trang web với account USER A. Với mỗi request ta gửi đi bởi Admin, Autorize sẽ tự động gửi request tương tự với cookie của USER B (cookie mà ta vừa cung cấp).
Lưu ý: chỉ truy cập các chức năng và tài nguyên mà yêu cầu quyền admin và theo logic đúng không thể được truy cập bởi user thường.
Cuối cùng kiểm tra xem những tài nguyên hoặc chức năng nào của Admin có thể bị truy cập bởi USER B. Nếu điều này xảy ra, website đã dính lỗi IDOR.
Kết quả được phân biệt bằng màu:
- Bypassed: màu đỏ – endpoint có thể bị dính IDOR
- Enforced: màu xanh – endpoint được bảo vệ khỏi IDOR
- Is enforced: màu vàng – endpoint dường như được bảo vệ (có thể kiểm tra lại)
Autorize hiển thị nhiều màu đỏ không có nghĩa tất cả các endpoint đều bị dính lỗi IDOR. Có thể đó là những kết quả false positive, để chắc chắn cần phải kiểm tra lại lần nữa.
Một số cột cần chú ý:
Modified Response: response từ server trả về tương ứng với request gửi đi với cookies đã được thay đổi. Nếu response hiển thị thông tin đầy đủ như Original Response thì endpoint có tồn tại IDOR.
Original Response: response từ server trả về tương ứng với request ban đầu. Được dùng để so sánh với Modified Response.
Unauthenticated Response: response của server trả về tương ứng với request gửi đi mà không có cookie (giả lập một người dùng chưa xác thực).
Tiếp theo, hãy cùng tìm hiểu một extension tương tự nhưng phức tạp hơn .
AutoRepeater
Giao diện của AutoRepeater tương tự Autorize. Cũng giống như Autorize, khi cài đặt thành công ta sẽ có tab AutoRepeater.
Các bước kiểm tra:
- Vào tab AutoRepeater và click vào “active AutoRepeater”.
- Xuất hiện bảng cấu hình như sau:
- Tại đây ta sẽ chọn các loại request muốn thay đổi.
- Điền chuỗi muốn thay đổi vào input Match
- Điền chuỗi thay đổi vào input Replace
- Click OK và bắt đầu duyệt ứng dụng web. Nó sẽ thay đổi tất cả những chuỗi ta muốn thay và hiển thị kết quả như hình dưới
IDOR hiện nay còn tồn tại rất nhiều trên các ứng dụng web và mức ảnh hưởng của nó không hề nhỏ (dựa vào thông tin và chức năng nhạy cảm mà attacker có thể đạt được) nhưng nhiều khi chúng ta có thể bỏ lỡ. Với sự hỗ trợ của 2 extension trên sẽ giúp các pentester tiết kiệm rất nhiều thời gian và tập trung vào những điểm mấu chốt.
Chi tiết hơn về Autorize, AutoRepeater có thể tham khảo tại:
https://github.com/Quitten/Autorize
https://github.com/nccgroup/AutoRepeater