SQL Injection là gì?
SQL Injection là gì? SQLi là kỹ thuật hack website bằng cách lợi dụng những truy vấn và lỗ hổng trong kênh đầu vào của ứng dụng để chèn thêm đoạn SQL khiến câu truy vấn ban đầu bị sai lệch.
Mục đích của việc này là ăn cắp, khai thác hay xáo trộn dữ liệu, thông tin nằm trong phần phụ trợ của trang web- nơi có dữ liệu nhạy cảm, giá trị nhất.
SQLi là kỹ thuật hack website bằng cách lợi dụng những truy vấn và lỗ hổng trong kênh đầu vào của ứng dụng để chèn thêm đoạn SQL khiến câu truy vấn ban đầu bị sai lệch
SQLi cho phép kẻ tấn công web có thể thực hiện thao tác tương tự người quản trị web. Việc này không những khiến ứng dụng bị cản trở mà họ còn chiếm được quyền quản trị vào máy chủ.
Độ nguy hiểm của lỗ hổng SQL Injection là gì?
Đến đây chắc bạn đã biết được SQL Injection là gì rồi phải không. Qua đó hẳn bạn cũng nhận ra phần nào độ nguy hiểm của lỗ hồng này. Nhưng SQLi còn nguy hiểm hơn những gì chúng ta nghĩ bởi các hậu quả nó gây ra khá lớn. Cụ thể:
SQL Injection |
Chi tiết |
✔️Thông tin đăng nhập bị lộ |
SQL Injection được dùng để tìm kiếm thông tin đăng nhập của người dùng. Những kẻ tấn công này có thể mạo danh bạn để sử dụng, thay đổi những quyền hạn sẵn có. Điều này ảnh hưởng nghiêm trọng tới hình ảnh của công ty, doanh nghiệp khi những thông tin khách hàng bị tiết lộ. Các khách hàng đó sẽ không tin tưởng và sử dụng dịch vụ của đơn vị bạn nữa. |
✔️Truy cập cơ sở dữ liệu |
Các hacker còn dùng SQL Injection với mục đích truy cập thông tin lưu trữ ở máy chủ của cơ sở dữ liệu. Tất nhiên, điều này có thể gây ra cho dữ liệu của bộ hệ thống vận hành nhiều vấn đề nghiêm trọng. |
✔️Xóa dữ liệu |
SQL Injection còn được các hacker dùng để xóa những bản ghi cơ sở dữ liệu, thậm chí cả Drop Tables làm phá vỡ các cấu trúc hoặc gây sự thay đổi của cơ sở dữ liệu. |
✔️Dữ liệu thay thế |
Dùng lỗ hổng SQL Injection để thêm hoặc thay đổi tên dữ liệu mới vào CSDL hiện tại gây ảnh hưởng tới kết quả chiết xuất dữ liệu tạo ra những sai lệch. |
✔️Mạng lưới truy cập |
Những kẻ tấn công dùng SQL Injection truy cập máy chủ CSDL và sử dụng quyền hạn quản lý. Sau đó, hacker sẽ thực hiện loạt cuộc tấn công vào mạng lưới sâu hơn. |
Cách hoạt động của lỗ hổng SQLi
Để giúp bạn rõ hơn SQL Injection là gì và tìm cách chặn lỗ hổng này việc hiểu cách thức hoạt động của SQLi là điều vô cùng quan trọng.
Hiểu cách hoạt động của lỗ hổng SQLi là điều vô cùng quan trọng
SQLicó cách hoạt động như sau:
- Bước 1: Tìm kiếm những web cho phép submit dữ liệu ở trình tìm kiếm nào đó.
- Bước 2: Sau đó thử gửi field id bằng hi’ or 1=1– hoặc field tên đăng nhập, password để kiểm tra chỗ yếu của web.
- Bước 3: Qua yêu cầu người dùng được cho phép bởi trang web, hacker sẽ tiến hành gửi lệnh SQL độc tới máy chủ cơ sở dữ liệu.
- Bước 4: Dùng sp_makewebtask để nhận, đồng thời ghi ra file HTML những output của SQL Query.
- Bước 5: Sau đó từ thông báo lỗi của máy chủ SQL tiến hành nhận thông tin quan trọng để xác nhận tên của table.
- Bước 6: Tiếp theo, xác định, khai thác tên các cột trong bảng.
- Bước 7: Khi đã xác định tên của cột và bảng, hacker có thể thu thập thông tin quan trọng từ nó một cách dễ dàng.
- Bước 8: Thêm những ký tự Numeric String và Alphabet để gây thất bại cho việc máy chủ chuyển đổi từ text sang số.
- Bước 9: Dùng những Insert hoặc Statement Update để tạo mới hoặc sửa đổi record của bảng.
Trên đây chính là cách thức hoạt động của lỗ hổng SQLi. Qua đó hẳn bạn đã hiểu rõ khái niệm SQL Injection là gì, hãy đọc tiếp nội dung bên dưới để biết thêm về các dạng, cách tấn công của SQLi và cách ngăn chặn.
Các dạng tấn công SQLi như thế nào?
Có 3 dạng tấn công SQL Injection, đó chính là:
SQL Injection cho phép hacker giả mạo dữ liệu hiện có, danh tính để gây ra những vấn đề như thay đổi cân bằng, vô hiệu hóa giao dịch,…
- Giả mạo: Cho phép hacker giả mạo dữ liệu hiện có, danh tính để gây ra những vấn đề như thay đổi cân bằng, vô hiệu hóa giao dịch, phá hủy dữ liệu, tiết lộ dữ liệu trên hệ thống, thậm chí làm dữ liệu không còn khả dụng để trở thành quản trị của máy chủ.
- Kiểu phổ biến: SQLi rất phổ biến đối với ASP và PHP do tương thích giao diện chức năng cũ. Bởi bản chất giao diện lập trình sẵn, ASP.NET và J2EE sẽ ít có khả năng khai thác SQLi hơn.
- Tính nghiêm trọng: Độ nghiêm trọng của SQL Injection đánh giá qua kỹ năng của hacker.
Ở độ thấp hơn, chúng ta cần bảo mật bằng biện pháp chuyên sâu. Đồng thời để giảm rủi ro ở mức thấp nhất, bạn nên cảnh giác cao độ.
3+ cách tấn công SQL Injection
Chèn SQLi qua đầu vào, cookie, headers HTTP hoặc bằng bậc hai là những cách tấn công của SQL Injection. Cụ thể:
Chèn SQLi qua đầu vào, cookie, headers HTTP hoặc bằng bậc hai là những cách tấn công của SQL Injection
Tấn công SQL Injection |
Chi tiết |
✔️Chèn SQL Injection qua đầu vào |
Thường cuộc tấn công SQL Injection phổ biến với việc chèn ở đầu vào của người dùng. Những web đều chấp nhận đầu vào qua nhiều hình thức. Qua đó, các kẻ tấn công, hacker có thể gắn SQLi với dữ liệu đầu vào để tiến hành truy cập vào CSDL máy chủ. |
✔️Chèn SQL Injection qua cookie |
Cách tiếp cận khác với SQLi chính là sửa đổi cookie thành truy vấn CSDL chứa mã độc. Những phần mềm độc hại này có thể sẽ được triển khai ở thiết bị của người dùng qua việc đổi cookie để đưa SQL Injection vào Back-end. |
✔️Chèn SQL Injection qua headers HTTP |
Headers HTTP có thể là mục tiêu để SQL Injection tấn công. Nếu web nhận đầu vào từ headers HTTP thì headers giả chứa SQLi có thể xâm nhập vào CSDL. |
✔️Chèn SQLi bằng bậc hai |
Cuộc tấn công SQLi bậc hai cung cấp những dữ liệu bị nhiễm độc. Dữ liệu này có thể được coi là lành tính ở một số trường hợp nhất định, nhưng trong trường hợp khác lại chứa mã độc. Chúng ta rất khó nhận thức được cuộc tấn công này. |
Cách chặn SQL Injection
Cách chặn SQL Injection là gì? Dưới đây là một số cách ngăn lỗ hổng bảo mật SQLi bạn có thể tham khảo:
- Bạn không được tin tưởng các input nhập vào. Trước khi dùng các câu lệnh SQL bạn hãy xác thực dữ liệu.
- Chuẩn bị sẵn lệnh gồm tạo truy vấn SQL và xử lý dữ liệu đã gửi tương tự như các tham số.
- Dùng những thủ tục lưu trữ để xem các input và tiến hành trừu tượng hóa lệnh SQL. Cách thực hiện này giúp SQL không bị ảnh hưởng.
- Khi nhận input người dùng, giá trị từ cookie hay tham số từ URL, bạn hãy loại bỏ ký tự extend và meta như NULL, /, CR, LF,… trong string.
- Những thông báo lỗi cần phải chính xác tuyệt đối và tránh tiết lộ vị vị trí lỗi hay chi tiết, thông tin mang tính nhạy cảm, giá trị.
- Trước khi query SQL, người dùng hãy chuyển giá trị numeric thành integer hoặc sử dụng ISNUMERIC để chắc chắn đó là số integer.
- Xoá stored procedure không sử dụng như sp_makewebtask, xp_startmail, xp_cmdshell, xp_sendmail trong database master.
Hy vọng với chia sẻ trên bạn đã có thêm kiến thức mới về lỗ hổng SQLi và hiểu SQL Injection là gì cũng như cách ngăn chặn tấn công của nó. Theo dõi ITNavi để đón đọc nhiều bài viết khác bạn nhé!