Rate this post

Direct Object Reference có thể xảy ra khi nhà phát triển để lộ tham chiếu đến đối tượng triển khai nội bộ, chẳng hạn như tệp, thư mục hoặc khóa cơ sở dữ liệu mà không có bất kỳ cơ chế xác thực nào cho phép kẻ tấn công thao túng các tham chiếu này để truy cập dữ liệu trái phép.

Khái niệm Insecure Direct Object Reference

Insecure Direct Object Reference (IDOR) là một lỗ hổng bảo mật phổ biến trong các ứng dụng web. Nó xảy ra khi một ứng dụng không kiểm tra và xác thực chính xác quyền truy cập của người dùng đối với các đối tượng (object) trong hệ thống.

Trong một ứng dụng web bình thường, khi người dùng thao tác với các đối tượng như tài khoản ngân hàng, hồ sơ người dùng, hoặc các tài liệu riêng tư, ứng dụng phải áp dụng các biện pháp bảo mật để đảm bảo chỉ có người dùng được phép truy cập vào đối tượng đó. Tuy nhiên, trong trường hợp IDOR, ứng dụng không kiểm tra quyền truy cập hoặc sử dụng một cách không chính xác các tham số truyền vào từ phía người dùng để truy cập các đối tượng.

Kẻ tấn công có thể tận dụng lỗ hổng IDOR để truy cập, thay đổi hoặc xóa các đối tượng mà họ không được phép truy cập. Điều này có thể dẫn đến việc tiết lộ thông tin nhạy cảm, xâm nhập vào tài khoản của người dùng khác, hoặc thậm chí ảnh hưởng đến tính toàn vẹn của dữ liệu.

Để khắc phục IDOR, các ứng dụng cần thực hiện kiểm tra và xác thực chính xác quyền truy cập của người dùng đối với các đối tượng. Điều này bao gồm sử dụng kiểm tra quyền hợp lệ trên cả phía máy chủ và phía người dùng, sử dụng mã định danh (identifier) không dễ đoán, và kiểm soát truy cập vào các đối tượng dựa trên vai trò và quyền hạn của người dùng.

Xem thêm Direct Traffic là gì ?

Tìm và khắc phục lỗ hổng IDOR là một yếu tố quan trọng trong việc đảm bảo an toàn và bảo mật cho các ứng dụng web.

Hãy cho chúng tôi hiểu Tác nhân đe dọa, Vectơ tấn công, Điểm yếu về bảo mật, Tác động kỹ thuật và Tác động kinh doanh của lỗ hổng này với sự trợ giúp của sơ đồ đơn giản.

Ví dụ về Insecure Direct Object Reference

Ứng dụng sử dụng dữ liệu chưa được xác minh trong lệnh gọi SQL đang truy cập thông tin tài khoản.

String query1 = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(query1, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );

Kẻ tấn công sửa đổi tham số truy vấn trong trình duyệt của họ để trỏ đến Quản trị viên.

http://webapp.com/app/accountInfo?acct=admin

Xem thêm Refs(tham chiếu) trong React

Các biện pháp phòng ngừa Insecure Direct Object Reference

Để phòng ngừa lỗ hổng Insecure Direct Object Reference (IDOR), bạn có thể thực hiện các biện pháp bảo mật sau đây:

  1. Xác thực và kiểm tra quyền truy cập: Hãy đảm bảo rằng ứng dụng kiểm tra và xác thực chính xác quyền truy cập của người dùng đối với các đối tượng. Sử dụng các cơ chế xác thực như phiên đăng nhập, token xác thực hoặc hệ thống phân quyền để đảm bảo chỉ người dùng có quyền truy cập được phép vào các đối tượng.
  2. Sử dụng mã định danh không dễ đoán: Đảm bảo rằng các mã định danh cho các đối tượng không dễ đoán hoặc đoán được một cách dễ dàng. Sử dụng các giải thuật mã hóa mạnh để tạo ra mã định danh ngẫu nhiên và khó đoán, ngăn chặn việc đoán đúng mã định danh của đối tượng.
  3. Kiểm soát truy cập dựa trên vai trò và quyền hạn: Xác định và áp dụng các vai trò và quyền hạn cho người dùng trong hệ thống. Đảm bảo rằng quyền truy cập vào các đối tượng chỉ được cấp cho người dùng có quyền hạn tương ứng. Hạn chế quyền truy cập của người dùng để ngăn chặn việc truy cập trái phép vào các đối tượng.
  4. Sử dụng các tham số không xác định được từ người dùng: Tránh sử dụng các thông tin không xác định được từ người dùng như số thứ tự tuần tự, số tham chiếu duy nhất hoặc các thông tin dễ đoán khác để truy cập đối tượng. Sử dụng các phương pháp khác như mã hóa, mã định danh tạm thời hoặc giải pháp tương tự để đảm bảo tính bảo mật của các tham số.
  5. Kiểm tra và phân tích mã nguồn: Thực hiện kiểm tra mã nguồn để xác định xem có tồn tại lỗ hổng IDOR nào hay không. Qua đó, tìm ra các vị trí chưa xử lý các kiểm tra quyền truy cập và xác thực, và tiến hành sửa chữa, cải thiện mã nguồn để khắc phục lỗ hổng.
  6. Sử dụng công cụ kiểm tra tự động: Sử dụng các công cụ kiểm tra tự động để phát hiện và báo cáo các lỗ hổng IDOR trong ứng dụng của bạn. Các công cụ như Burp Suite, OWASP ZAP, hoặc các dịch vụ kiểm thử bảo mật có thể giúp bạn tìm ra các lỗ hổng và khắc phục chúng.

Nhớ rằng, việc phòng ngừa IDOR là một quá trình liên tục và cần được thực hiện kỹ lưỡng trong quá trình phát triển và bảo mật ứng dụng web của bạn.

Xem thêm Object number JavaScript

Công cụ và phương pháp kiểm tra bảo mật hiệu quả

Để kiểm tra bảo mật một ứng dụng, có nhiều công cụ và phương pháp hiệu quả bạn có thể sử dụng. Dưới đây là một số công cụ và phương pháp phổ biến:

  1. Burp Suite: Burp Suite là một công cụ mạnh mẽ cho kiểm tra bảo mật ứng dụng web. Nó cung cấp các tính năng như proxy, spidering, scanning, và phân tích tấn công để phát hiện các lỗ hổng bảo mật như SQL injection, XSS, IDOR, và nhiều hơn nữa.
  2. OWASP ZAP: OWASP ZAP (Zed Attack Proxy) là một công cụ kiểm tra bảo mật ứng dụng web mã nguồn mở. Nó cung cấp các tính năng như scanning tự động, kiểm tra các lỗ hổng OWASP Top 10, và tương tác với ứng dụng để phát hiện lỗ hổng bảo mật.
  3. Nmap: Nmap là một công cụ quét mạng mạnh mẽ để phát hiện các máy chủ và dịch vụ đang chạy trong mạng. Nó có thể được sử dụng để xác định các lỗ hổng bảo mật trong cấu hình mạng và các dịch vụ đang chạy.
  4. Metasploit: Metasploit là một framework kiểm tra thâm nhập mạnh mẽ. Nó cung cấp một loạt các công cụ và kỹ thuật tấn công để kiểm tra các lỗ hổng bảo mật trong hệ thống và ứng dụng. Metasploit cũng cung cấp các module kiểm tra tự động và khai thác các lỗ hổng đã biết.
  5. Kiểm tra thủ công: Kiểm tra bảo mật cũng có thể được thực hiện bằng cách kiểm tra thủ công bằng cách sử dụng các phương pháp và kỹ thuật kiểm tra bảo mật, như kiểm tra input validation, kiểm tra xác thực, kiểm tra phân quyền, và kiểm tra các vấn đề bảo mật khác. Điều này đòi hỏi kiến thức chuyên môn vững và kỹ năng phân tích bảo mật.
  6. Sử dụng các dịch vụ kiểm tra bảo mật: Có nhiều công ty và tổ chức cung cấp dịch vụ kiểm tra bảo mật chuyên nghiệp. Bằng cách thuê các chuyên gia bảo mật hoặc sử dụng các dịch vụ kiểm tra bảo mật, bạn có thể nhận được một đánh giá toàn diện về lỗ hổng bảo mật của ứng dụng và nhận được các khuyến nghị cụ thể về khắc phục.

Khi thực hiện kiểm tra bảo mật, hãy nhớ tuân thủ các quy tắc đạo đức và tuân thủ các quy định pháp luật liên quan đến việc kiểm tra bảo mật.

Kiểm tra bảo mật

Bước 1 – Đăng nhập vào Webgoat và điều hướng đến Phần lỗi kiểm soát truy cập. Mục đích là để truy xuất tomcat-users.xml bằng cách điều hướng đến đường dẫn nơi nó nằm. Dưới đây là ảnh chụp nhanh của kịch bản.

Bước 2 – Đường dẫn của tệp được hiển thị trong trường ‘thư mục hiện tại là’ – C: \ Users \ userName $ \. Extract \ webapps \ WebGoat \ lesson_plans \ en và chúng tôi cũng biết rằng tệp tomcat-users.xml là được giữ trong C: \ xampp \ tomcat \ conf

Bước 3 – Chúng ta cần duyệt qua toàn bộ thư mục hiện tại và điều hướng từ C: \ Drive. Chúng tôi có thể thực hiện tương tự bằng cách chặn lưu lượng truy cập bằng Burp Suite.

Bước 4 – Nếu thành công, nó sẽ hiển thị tomcat-users.xml với thông báo “Xin chúc mừng. Bạn đã hoàn thành bài học này thành công.”

Cơ chế phòng ngừa

Các nhà phát triển có thể sử dụng các tài nguyên / điểm sau làm hướng dẫn để ngăn chặn tham chiếu đối tượng trực tiếp không an toàn trong chính giai đoạn phát triển.

  • Các nhà phát triển chỉ nên sử dụng một người dùng hoặc phiên cho các tham chiếu đối tượng gián tiếp.
  • Bạn cũng nên kiểm tra quyền truy cập trước khi sử dụng tham chiếu đối tượng trực tiếp từ một nguồn không đáng tin cậy.

Xem thêm Browser Object Model

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now