1. SQL injection vulnerability in WHERE clause allowing retrieval of hidden data.
Ý kiến
0
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
(Lỗ hổng tấn công SQL injection trong mệnh đề WHERE cho phép truy xuất dữ liệu ẩn.)
->> Mục tiêu: là lấy được những dữ liệu ẩn (hiển thị các sản phẩm chưa được phát hành)
Bước 1: Sử dụng công cụ Burp Suite để chặn và sửa đổi yêu cầu HTTP khi bạn chọn một danh mục sản phẩm.
Bước 2: Sửa đổi giá trị của tham số category thành ' OR 1=1--.
Bước 3: Gửi yêu cầu đã sửa đổi đi và kiểm tra kết quả, trang web sẽ hiển thị thêm các sản phẩm chưa được phát hành.
Để hiểu tại sao lệnh ' OR 1=1-- lại hiệu quả, hãy xem xét truy vấn gốc của ứng dụng:
SQL
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Khi bạn chèn payload ' OR 1=1-- vào tham số category, truy vấn SQL sẽ trở thành:
SQL
SELECT * FROM products WHERE category = '' OR 1=1--' AND released = 1
Tại sao nó hoạt động?
Nguyên nhân gốc rễ (Root Cause): Ứng dụng thực hiện nối chuỗi trực tiếp (dynamic SQL concatenation) giá trị từ tham số category vào câu lệnh truy vấn.
Cơ chế tấn công:
Kẻ tấn công sử dụng ký tự ' để đóng (terminate) chuỗi hợp lệ trong câu lệnh SQL.
Tiêm (inject) logic mới OR 1=1 để làm thay đổi điều kiện WHERE, khiến biểu thức luôn trả về giá trị TRUE.
Sử dụng -- (SQL comment) để loại bỏ (comment out) các điều kiện kiểm tra bảo mật phía sau (ví dụ: AND released = 1).
Kết quả: Dữ liệu bị rò rỉ vì truy vấn trả về toàn bộ bản ghi thay vì chỉ các sản phẩm được phát hành.