I. Lỗ hổng IDOR là gì ?
IDOR là một loại lỗ hổng kiểm soát truy cập phát sinh khi một ứng dụng sử dụng đầu vào do người dùng cung cấp để truy cập trực tiếp vào các đối tượng. Các lỗ hổng IDOR thường liên quan nhất đến việc leo thang đặc quyền theo chiều ngang, nhưng chúng cũng có thể phát sinh liên quan đến việc leo thang đặc quyền theo chiều dọc. 2 loại hay gặp:
- Lỗ hổng IDOR có tham chiếu trực tiếp đến các đối tượng cơ sở dữ liệu
Ví dụ: Khi thác lỗ hổng IDOR từ việc truy vấn dữ liệu back-end từ user_number theo URL: https://xxx/customer_account?user_number=132355
- Lỗ hổng IDOR có tham chiếu trực tiếp đến các tệp tĩnh
Lỗ hổng IDOR thường phát sinh khi các tài nguyên nhạy cảm nằm trong các tệp tĩnh trên hệ thống tệp phía máy chủ Ví dụ: Trang Web có thể lưu bản ghi tin nhắn trò chuyện vào đĩa bằng cách sử dụng tên tệp tăng dần và cho phép người dùng truy xuất những bản ghi này bằng cách truy cập một URL như sau:
https://insecure-website.com/static/12144.txt
Trong tình huống này, hacker có thể chỉ cần sửa đổi tên tệp để truy xuất bản ghi do người dùng khác tạo và có khả năng lấy được thông tin xác thực của người dùng cũng như dữ liệu nhạy cảm khác.
II. Cách khai thác
Chúng ta có thể sử dụng Burp Suite để khai thác lỗ hổng này bằng việc sử dụng extension Autorize
1. Cài đặt Burp Suite
Cài đặt Burp Suite (obviously): http://portswigger.net/burp/download.html
2. Cài đặt extension Autorize
Autorize là một tiện ích mở rộng nhằm giúp người kiểm tra thâm nhập phát hiện các lỗ hổng ủy quyền, một trong những nhiệm vụ tốn nhiều thời gian hơn trong kiểm tra thâm nhập ứng dụng web. Chỉ cần cung cấp cho tiện ích mở rộng cookie của người dùng có đặc quyền thấp và điều hướng trang web với người dùng có đặc quyền cao là đủ. Tiện ích mở rộng tự động lặp lại mọi yêu cầu với phiên của người dùng có đặc quyền thấp và phát hiện các lỗ hổng ủy quyền. Cũng có thể lặp lại mọi yêu cầu mà không cần bất kỳ cookie nào để phát hiện các lỗ hổng xác thực bên cạnh các lỗ hổng ủy quyền. Plugin hoạt động mà không cần bất kỳ cấu hình nào nhưng cũng có khả năng tùy chỉnh cao, cho phép định cấu hình mức độ chi tiết của các điều kiện thực thi ủy quyền cũng như yêu cầu nào plugin phải kiểm tra và yêu cầu nào không. Có thể lưu trạng thái của plugin và xuất báo cáo kiểm tra ủy quyền ở dạng HTML hoặc CSV.
Trước tiên, chúng ta tải Jython tại: http://www.jython.org/download.html
Sau đó vào BurpSuite và thực hiện theo các bước sau : Extender -> Options -> Python Environment -> Select File -> Select file jython.jar
Tiếp tục install Autorize tại BApp: Nhấn vào tab Extender -> BApp -> Autorize -> Install
Tab Autorize sẽ hiển thị trên thanh chức năng của Tool
Hướng dẫn khai thác lỗ hổng
Bước 1: Login vào website A với 2 account role ADMIN và role STAFF
Bước 2: Capture lại request login của STAFF
Bước 3: Copy giá trịcookies, session hoặc jwt tokens của STAFF
Bước 4: Paste giá trị vừa copy ở bước 3 vào trong Autorize tab
Bước 5: Nhấp vào “Autorize is off”
Bước 6: Sau đó login bằng Account ADMIN có quyền cao nhất của web. Xảy ra hiện tượng mỗi request gửi đi bởi ADMIN, Autorize sẽ tự động gửi request tương tự với cookie của STAFF (cái mà ta copy ở bước 3)
Kết quả là: Tài nguyên của web được quản lý bởi Admin và chức năng mà chỉ thực hiện được với role Admin có thể bị truy cập bởi Staff ==> Web bị dính lỗ hổng IDOR.
Kết quả khi Scanning sẽ hiển thị:
- Bypassed: text có màu đỏ – endpoint có thể bị dính IDOR
- Enforced: text có màu xanh – endpoint được bảo vệ khỏi IDOR
- Is enforced: text có màu vàng – endpoint dường như được bảo vệ (có thể kiểm tra lại)
Tham khảo:
https://portswigger.net/bappstore/f9bbac8c4acf4aefa4d7dc92a991af2f