SQL Injection
Đôi nét về SQL Injection (SQLi)?
SQLi là một lỗ hổng trên web mà attacker sẽ có thể tạo ra những query đến database của website đó. Lỗ hổng này sẽ làm những dữ liệu mà khó có thể xem được một cách bình thường trở nên bị leak.
Lỗ hổng này khá rộng. Nó có thể ảnh hưởng trực tiếp đến user data và cả web database nếu attack muốn (có thể thêm, xóa, sửa,...)
Nếu attacker có thể khai thác được SQLi thì có thể dẫn đến nhiều hệ lụy khôn lường. Ví dụ như dữ liệu bị lộ (tài khoản người dùng, thông tin cá nhân,...). Điều này trở nên hết sức phức tạp vì sẽ liên quan đến nhiều khía cạnh bảo mật trên môi trường Internet.
Các tác động của SQLi
Để dễ hình dung hơn, SQLi có thể khiến:
- Làm lộ những dữ liệu mật
- Phá vỡ logic thực thi của web app
- Lộ những database khác (trong vùng khác vùng mà bị SQLi)
- Lộ cấu trúc của web app
- Và còn nhiều vấn đề khác mà attacker có thể sử dụng để khai thác web app của bạn
Labs - Danh sách các bài thực hành
1. Basic Attacks
- Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
- Lab: SQL injection vulnerability allowing login bypass
2. UNION Attacks
Các kỹ thuật SQLi UNION attack
- Lab: SQL injection UNION attack, determining the number of columns
- Lab: SQL injection UNION attack, finding a column containing text
- Lab: SQL injection UNION attack, retrieving data from other tables
- Lab: SQL injection UNION attack, retrieving multiple values in a single column
3. Examining Database
Kỹ thuật kiểm tra và liệt kê database
- Lab: SQL injection attack, querying the database type and version on Oracle
- Lab: SQL injection attack, querying the database type and version on MySQL and Microsoft
- Lab: SQL injection attack, listing the database contents on non-Oracle databases
- Lab: SQL injection attack, listing the database contents on Oracle
4. Blind SQL Injection
Kỹ thuật Blind SQLi - Tấn công "mù"
- Lab: Blind SQL injection with conditional responses
- Lab: Blind SQL injection with conditional errors
- Lab: Blind SQL injection with time delays
- Lab: Blind SQL injection with time delays and information retrieval
Một số cách để nhận dạng lỗ hổng SQLi
- Thử với ký tự
'để kiểm tra syntax error - Thử thay đổi cấu trúc syntax để xem phản hồi
- Thử bằng toán tử boolean (
OR 1=1,AND 1=2) - Trigger time delay để xác nhận blind SQLi
- Sử dụng UNION SELECT để trích xuất dữ liệu