Bối cảnh và vấn đề nghiên cứu
Sự bùng nổ của mạng máy tính và Internet đã tạo điều kiện thuận lợi cho thương mại điện tử phát triển mạnh mẽ trên phạm vi toàn cầu cũng như tại Việt Nam. Tuy nhiên, sự gia tăng nhanh chóng của các hệ thống ứng dụng web thương mại điện tử, tài chính và ngân hàng trong giai đoạn 5 năm gần đây kéo theo nhiều nguy cơ nghiêm trọng về an toàn thông tin. Trong số các hình thức tấn công mạng, SQL Injection (SQLi) là một kỹ thuật phổ biến, thường nhắm vào các hệ thống cơ sở dữ liệu có cấu trúc.
Bản chất của lỗ hổng SQL Injection xuất phát từ việc mã nguồn ứng dụng web xử lý không an toàn các tham số đầu vào do người dùng cung cấp. Khi các dữ liệu chưa qua kiểm duyệt được ghép trực tiếp vào câu lệnh SQL và chuyển tới máy chủ cơ sở dữ liệu, kẻ tấn công có thể can thiệp vào quá trình phân tích cú pháp, từ đó thực thi các câu lệnh bất hợp pháp với quyền hạn tương đương quản trị viên. Do chu kỳ bảo trì và khắc phục mã nguồn trong thực tế thường kéo dài, lỗ hổng SQL Injection chậm được xử lý triệt để và liên tục đứng trong nhóm rủi ro bảo mật hàng đầu.
Đề tài "Nghiên cứu kỹ thuật SQL Injection trong tấn công lỗ hổng bảo mật website và phương pháp phòng chống" được sinh viên Nguyễn Thành Đạt (lớp ĐH9C6, Khoa Công nghệ Thông tin, Trường Đại học Tài nguyên và Môi trường Hà Nội) thực hiện dưới sự hướng dẫn của TS. Vũ Văn Hiệu trong khuôn khổ kỳ thực tập tốt nghiệp tại Viện Công nghệ thông tin thuộc Viện Hàn lâm Khoa học và Công nghệ Việt Nam (thời điểm hoàn thành: tháng 03/2023).
Nhiệm vụ và mục tiêu nghiên cứu của báo cáo bao gồm:
- Mục tiêu chung: Tìm hiểu toàn diện về kỹ thuật tấn công website bằng phương thức SQL Injection.
- Mục tiêu cụ thể: Nghiên cứu lý thuyết, phân tích cơ chế và thực hiện thành công một cuộc tấn công thử nghiệm SQL Injection.
- Nội dung nghiên cứu:
- Tìm hiểu cơ sở lý thuyết về SQL Injection và các phương thức tấn công phổ biến.
- Nghiên cứu công cụ và tiến hành thực nghiệm khai thác lỗ hổng website.
- Áp dụng các tiêu chuẩn bảo mật OWASP để phân loại rủi ro và đề xuất các giải pháp phòng chống.
Đối tượng nghiên cứu là kỹ thuật tấn công SQL Injection và các phương thức phòng chống trên ứng dụng web; phạm vi thực nghiệm được giới hạn trên môi trường website cho phép kiểm thử an ninh mạng theo tiêu chuẩn quốc tế.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và khái niệm nền tảng
- Ngôn ngữ SQL và Hệ quản trị cơ sở dữ liệu (RDBMS): SQL (Structured Query Language) là ngôn ngữ chuẩn ANSI/ISO dùng để định nghĩa, thao tác và điều khiển dữ liệu trên các RDBMS (như MySQL, Oracle, MS SQL Server, PostgreSQL, SQLite...). Lịch sử ngôn ngữ bắt đầu từ công trình SEQUEL của Raymond Boyce và Donald Chamberlin tại IBM (thập niên 1970) dựa trên mô hình dữ liệu quan hệ của Edgar Frank Todd, sau đó được phát hành thương mại bởi Relational Software (tiền thân của Oracle) vào năm 1979. Các nhóm lệnh SQL chính bao gồm:
- DML (Data Manipulation Language):
SELECT, INSERT, UPDATE, DELETE, MERGE, TRUNCATE.
- DDL (Data Definition Language): Các lệnh định nghĩa cấu trúc cơ sở dữ liệu, bảng, chỉ mục và thuộc tính.
- DCL (Data Control Language):
GRANT, REVOKE dùng để quản lý đặc quyền người dùng.
- Mô hình Client - Server và cơ chế truyền dữ liệu Web: Ứng dụng web hoạt động trên mô hình Client - Server thông qua giao thức HTTP/HTTPS. Dữ liệu từ máy trạm (trình duyệt) gửi về máy chủ thông qua hai phương thức chính:
- Phương thức GET: Tham số được đính kèm trực tiếp trên URL sau dấu chấm hỏi (
?), được phân tách bởi ký tự & và xử lý tại máy chủ (ví dụ mảng $_GET[] trong PHP).
- Phương thức POST: Dữ liệu được đóng gói trong phần thân (body) của yêu cầu HTTP từ các biểu mẫu HTML và xử lý tại máy chủ (ví dụ mảng
$_POST[] trong PHP). Lỗ hổng phát sinh khi các tham số từ GET/POST không được làm sạch trước khi đưa vào câu truy vấn.
- Tiêu chuẩn bảo mật OWASP: Dự án OWASP (Open Web Application Security Project) cung cấp các chuẩn đánh giá an toàn thông tin ứng dụng web. Danh sách OWASP Top 10 phản ánh các rủi ro bảo mật nghiêm trọng nhất:
| Mã rủi ro |
Tên rủi ro bảo mật (theo công bố của OWASP) |
| A1 |
Injection (Lỗi nhúng mã - bao gồm SQL, OS, XXE, LDAP) |
| A2 |
Broken Authentication and Session Management (Lỗi xác thực và quản lý phiên) |
| A3 |
Cross-site Scripting - XSS (Kịch bản chéo trang) |
| A4 |
Broken Access Control (Lỗi kiểm soát truy cập) |
| A5 |
Security Misconfiguration (Sai sót cấu hình an ninh) |
| A6 |
Sensitive Data Exposure (Lộ dữ liệu nhạy cảm) |
| A7 |
Insufficient Attack Protection (Thiếu hụt cơ chế bảo vệ tấn công - liên quan WAF, RASP, IAST) |
| A8 |
Cross-Site Request Forgery - CSRF (Giả mạo yêu cầu chéo trang) |
| A9 |
Using Components with Known Vulnerabilities (Sử dụng thành phần có lỗ hổng đã biết) |
| A10 |
Underprotected APIs (Giao diện lập trình ứng dụng chưa được bảo vệ đầy đủ) |
- Số liệu thống kê và các sự cố điển hình: Báo cáo điều tra vi phạm dữ liệu của Verizon Business (2011) chỉ ra các cuộc tấn công SQL Injection chiếm gần 25% tổng số hồ sơ dữ liệu bị xâm nhập. Các sự cố thực tế được tác giả dẫn chứng bao gồm: vụ tấn công của nhóm LulzSec vào Sony Corporation (lấy cắp gần 80 triệu tài khoản PlayStation và Qriocity), vụ hacker "rEmOtEr" deface website của Microsoft UK, vụ rò rỉ hơn 450.000 tài khoản dạng plaintext từ Yahoo! Voices qua kỹ thuật Union-based SQLi, và sự cố năm 2022 khiến 1 triệu trang web ASP bị bot tự động chèn mã độc vào thẻ
<script>.
Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: Thu thập và hệ thống hóa tài liệu về kiến trúc ứng dụng web, cú pháp SQL, cơ chế phát sinh lỗi bảo mật và các tiêu chuẩn kiểm thử của tổ chức OWASP.
- Phương pháp tổng hợp và phân loại: Hệ thống hóa các kỹ thuật tấn công, các biến thể Blind SQLi, cũng như dấu hiệu nhận diện hệ quản trị cơ sở dữ liệu.
- Phương pháp thực nghiệm: Thực hiện kiểm thử thâm nhập an toàn, trích xuất cấu trúc và dữ liệu trên website thực nghiệm chuyên dụng được cấp phép quốc tế (
testphp.vulnweb.com) bằng công cụ tự động hóa.
Nội dung chính theo từng chương
Chương 1: Tổng quan về SQL Injection
Chương 1 trình bày hệ thống khái niệm nền tảng về ngôn ngữ truy vấn SQL, cấu trúc cơ sở dữ liệu quan hệ và cơ chế vận hành của ứng dụng web động trên nền mô hình Client - Server. Tác giả phân tích cách thức dữ liệu đầu vào của người dùng qua các phương thức HTTP GET và POST được chuyển tiếp tới tầng cơ sở dữ liệu (DBMS).
Khi ứng dụng thiếu cơ chế kiểm duyệt dữ liệu đầu vào, lỗ hổng SQL Injection xuất hiện, cho phép kẻ tấn công chèn các đoạn mã SQL bất hợp pháp. Chương này đi sâu phân tích 4 nhóm nguy cơ chính do SQL Injection gây ra:
- Tiết lộ và rò rỉ thông tin nhạy cảm: Làm thất thoát thông tin người dùng, tài khoản tài chính, số thẻ tín dụng.
- Xâm phạm tính toàn vẹn dữ liệu: Cho phép sửa đổi, thêm mới hoặc xóa bỏ bản ghi trong cơ sở dữ liệu thông qua các lệnh DML.
- Chiếm quyền điều khiển máy chủ dữ liệu: Nâng cao đặc quyền quản trị hệ thống cơ sở dữ liệu.
- Truy cập sâu vào mạng nội bộ: Sử dụng máy chủ cơ sở dữ liệu bị chiếm quyền làm bàn đạp xâm nhập các hệ thống khác, tạo cửa sau (backdoor) và sửa đổi tệp nhật ký (log) để xóa dấu vết.
Chương 1 cũng giới thiệu cấu trúc tổ chức OWASP và phân tích chi tiết danh sách OWASP Top 10 để khẳng định Injection (A1) luôn là mối đe dọa thường trực đối với các ứng dụng trực tuyến.
Chương 2: Các hình thức tấn công SQL Injection
Chương 2 tập trung phân loại các dạng lỗi mã nguồn dẫn đến lỗ hổng và mô tả chi tiết các kỹ thuật khai thác thực tế:
- Các dạng lỗi lập trình phổ biến:
- Không kiểm tra ký tự kết thúc truy vấn: Sử dụng phép nối chuỗi trực tiếp mà không lọc ký tự nháy đơn (
') hoặc dấu chấm phẩy (;), khiến câu truy vấn bị bẻ cong logic (ví dụ chuỗi ' OR 't'='t hoặc chèn lệnh ngắt ; DROP TABLE users;).
- Xử lý sai kiểu dữ liệu: Khi trường dữ liệu là số nguyên (integer) nhưng không có hàm kiểm tra kiểu số, cho phép truyền chuỗi ký tự chứa lệnh phá hoại (ví dụ
id = 1; DROP TABLE users).
- Lỗi bên trong phần mềm DBMS: Điển hình như các sơ hở trong hàm xử lý ký tự đặc biệt/Unicode (như hàm
mysql_real_escape_string() của MySQL) khi xử lý bộ ký tự không thông thường.
- Kỹ thuật Blind SQL Injection (SQL Injection mù): Áp dụng khi ứng dụng không trả về kết quả truy vấn hay thông báo lỗi trực tiếp trên giao diện. Được chia làm hai nhánh:
- Content-based (Dựa trên nội dung): Thử nghiệm các biểu thức điều kiện logic
AND 1=1 (kết quả True, nội dung hiển thị bình thường) và AND 1=2 (kết quả False, trang web trả về rỗng hoặc mất nội dung) để suy đoán dữ liệu.
- Time-based (Dựa trên độ trễ thời gian): Sử dụng các hàm trì hoãn của DBMS như
sleep(10) để ép máy chủ phản hồi chậm; nếu thời gian phản hồi vượt quá 10 giây, sự tồn tại của lỗ hổng được xác nhận.
- Các hình thức tấn công ứng dụng web cụ thể:
- Vượt quyền đăng nhập (Authentication Bypass): Chèn chuỗi
'' OR ''='' vào biểu mẫu xác thực người dùng để vượt qua bước kiểm tra mật khẩu.
- Tấn công bằng câu lệnh SELECT / UNION: Kết hợp kết quả của câu truy vấn gốc với một câu truy vấn độc hại thông qua từ khóa
UNION SELECT.
- Tấn công bằng câu lệnh INSERT: Chèn các truy vấn con (sub-query) vào các trường dữ liệu của biểu mẫu đăng ký hoặc cập nhật hồ sơ (ví dụ
' + (SELECT TOP 1 FieldName FROM TableName) + ').
- Tấn công thông qua Stored Procedures: Lợi dụng các thủ tục lưu trữ được thực thi với quyền hạn quản trị hệ thống (
sa), kết hợp lệnh dừng máy chủ shutdown hoặc thực thi lệnh hệ điều hành thông qua thủ tục mở rộng xp_cmdshell.
Chương này cũng tóm tắt quy trình phát hiện lỗ hổng theo kỹ thuật kiểm thử của OWASP, bao gồm việc khảo sát biểu mẫu xác thực, công cụ tìm kiếm, trang thương mại điện tử, HTTP headers và cookies.
Chương 3: Thử nghiệm tấn công SQL Injection và giải pháp phòng chống dựa trên tiêu chuẩn OWASP
Chương 3 trình bày các công cụ hỗ trợ khai thác, thực hiện kịch bản tấn công thực nghiệm trên môi trường thử nghiệm và đề xuất các giải pháp kỹ thuật phòng chống:
- Công cụ khai thác tự động:
- Sqlmap: Hỗ trợ đa dạng hệ quản trị cơ sở dữ liệu (MySQL, Oracle, PostgreSQL, MS SQL Server, MS Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, Informix, HSQLDB, H2); hỗ trợ 6 kỹ thuật tấn công (Boolean-based blind, Time-based blind, Error-based, UNION query-based, Stacked queries, Out-of-band); tích hợp tính năng nhận dạng và bẻ khóa mã băm (hash cracking), trích xuất toàn bộ dữ liệu bảng/cột và thực thi lệnh hệ thống.
- The Mole: Công cụ khai thác tự động chạy trên môi trường Python 3 với giao diện dòng lệnh (CLI), hỗ trợ vượt qua các quy tắc phát hiện của hệ thống IPS/IDS.
- Kỹ thuật kiểm thử và nhận diện dấu vết DBMS (Database Fingerprinting): Tác giả tổng hợp phương pháp phân biệt hệ quản trị cơ sở dữ liệu mục tiêu dựa trên thông báo lỗi cú pháp và hàm nối chuỗi đặc thù:
| Hệ quản trị cơ sở dữ liệu (DBMS) |
Dấu hiệu thông báo lỗi đặc trưng |
Cú pháp nối chuỗi / Hàm lấy phiên bản |
| MySQL |
You have an error in your SQL syntax... near '\'' |
Chuỗi: 'test' + 'ing' Phiên bản: version() |
| MS SQL Server |
Microsoft SQL Native Client error '80040e14' |
Chuỗi: 'test' 'ing' Phiên bản: @@version |
| Oracle |
ORA-00933: SQL command not properly ended
ORA-292257: host SCOTT unknown |
Chuỗi: 'test'||'ing' Hàm: UTL_INADDR.GET_HOST_NAME, UTL_HTTP |
| PostgreSQL |
Query failed: ERROR: syntax error at or near... |
Chuỗi: 'test'||'ing' |
- Các kỹ thuật khai thác chuyên sâu:
- Kỹ thuật UNION: Sử dụng mệnh đề
ORDER BY <số_cột>-- để xác định số lượng cột của câu truy vấn gốc; dùng UNION SELECT 1, null, null-- để kiểm tra kiểu dữ liệu của từng cột.
- Kỹ thuật Error-based: Sử dụng các hàm hệ thống (như
UTL_INADDR.GET_HOST_NAME trên Oracle) để ép hệ thống phát sinh lỗi chứa thông tin nhạy cảm.
- Kỹ thuật Out-of-band: Sử dụng các hàm thực hiện kết nối mạng ngoài băng tần (như
UTL_HTTP trên Oracle kết hợp công cụ Netcat lắng nghe cổng 80) để trích xuất dữ liệu khi ứng dụng bị mù hoàn toàn.
- Kỹ thuật Time-delay: Sử dụng điều kiện kết hợp lệnh dừng (ví dụ
AND IF(version() like '5%', sleep(10), 'false')) để kiểm tra phiên bản máy chủ cơ sở dữ liệu.
Thử nghiệm thực tế và quy trình khai thác
Quy trình thực nghiệm tấn công được tiến hành bằng công cụ Sqlmap trên mục tiêu website kiểm thử lỗ hổng trực tuyến: http://testphp.vulnweb.com/listproducts.php?cat=1. Quá trình thực nghiệm diễn ra theo 5 bước tuần tự:
# Bước 1: Quét kiểm tra sự tồn tại của lỗ hổng và nhận diện môi trường
sqlmap.py -u "http://testphp.vulnweb.com/listproducts.php?cat=1"
Kết quả Bước 1: Sqlmap phát hiện tham số cat có thể bị inject thông qua các mệnh đề WHERE, HAVING. Hệ quản trị cơ sở dữ liệu mục tiêu được xác định là MySQL 5.
# Bước 2: Liệt kê danh sách các cơ sở dữ liệu trên máy chủ
sqlmap.py -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs
Kết quả Bước 2: Phát hiện 2 cơ sở dữ liệu, trong đó cơ sở dữ liệu mục tiêu của ứng dụng web là acuart.
# Bước 3: Liệt kê danh sách các bảng thuộc cơ sở dữ liệu acuart
sqlmap.py -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
Kết quả Bước 3: Trích xuất thành công danh sách tất cả các bảng dữ liệu bên trong database acuart (bao gồm bảng users, products, artists,...).
# Bước 4: Liệt kê danh sách các cột thuộc bảng dữ liệu users
sqlmap.py -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users --columns
Kết quả Bước 4: Xác định được cấu trúc các trường thông tin trong bảng users, bao gồm các cột quan trọng: email, name, pass, uname, address, phone.
# Bước 5: Trích xuất (dump) toàn bộ dữ liệu từ các cột trong bảng users
sqlmap.py -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C email,name,pass,uname --dump
Kết quả Bước 5: Toàn bộ dữ liệu tài khoản người dùng (tên đăng nhập, mật khẩu, họ tên, email) được tải về và hiển thị đầy đủ trên màn hình dòng lệnh.
Kết quả và đóng góp
Kết quả đạt được
- Về mặt thực nghiệm: Đã thực hiện hoàn chỉnh kịch bản khai thác 5 bước bằng Sqlmap trên website mục tiêu, chứng minh tính khả thi của việc xâm nhập cơ sở dữ liệu từ một tham số URL không được kiểm duyệt an toàn. Toàn bộ cấu trúc cơ sở dữ liệu
acuart và thông tin tài khoản người dùng từ bảng users đã bị trích xuất.
- Về mặt lý thuyết và kỹ thuật:
- Hệ thống hóa đầy đủ các hình thức tấn công SQL Injection từ mức độ cơ bản (vượt quyền đăng nhập, chèn lệnh SELECT/INSERT) đến nâng cao (Blind SQLi dạng Content-based, Time-based, Error-based, Out-of-band và Stored Procedure).
- Xây dựng bảng đối chiếu các đặc trưng lỗi và hàm chức năng để nhận diện chính xác 4 hệ quản trị cơ sở dữ liệu phổ biến (MySQL, MS SQL Server, Oracle, PostgreSQL).
Giải pháp phòng chống đề xuất
Dựa trên các tiêu chuẩn bảo mật của OWASP, báo cáo tổng hợp các khuyến nghị kỹ thuật nhằm ngăn chặn lỗ hổng SQL Injection trong quá trình phát triển phần mềm:
- Thực hiện kiểm tra, làm sạch (sanitization) và lọc chặt chẽ tất cả các dữ liệu đầu vào nhận từ máy khách (bao gồm tham số GET, POST, HTTP Headers và Cookies).
- Kiểm tra chặt chẽ kiểu dữ liệu của biến số, không cho phép đưa chuỗi ký tự tự do vào các mệnh đề số.
- Hạn chế nối chuỗi trực tiếp khi xây dựng câu truy vấn SQL; sử dụng cơ chế tham số hóa (Parameterized Queries / Prepared Statements) hoặc Stored Procedures được viết đúng chuẩn an toàn.
- Cấu hình phân quyền tối thiểu cho tài khoản cơ sở dữ liệu kết nối từ ứng dụng, vô hiệu hóa các thủ tục hệ thống nguy hiểm (như
xp_cmdshell trên SQL Server) khi không cần thiết.
- Triển khai các giải pháp bảo vệ ứng dụng bổ trợ như tường lửa ứng dụng web (WAF - Web Application Firewall), RASP (Runtime Application Self-Protection) hoặc công cụ phân tích kiểm thử bảo mật IAST.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế: Nghiên cứu thực nghiệm chủ yếu tập trung vào kịch bản tấn công thông qua công cụ khai thác tự động (Sqlmap) trên môi trường website thử nghiệm lỗ hổng chuyên dụng. Báo cáo chưa đi sâu vào việc xây dựng module mã nguồn cụ thể để tự động vá lỗi hoặc thực nghiệm kiểm thử trên các kiến trúc phân tán phức tạp.
- Hướng mở rộng: Mở rộng nghiên cứu các kỹ thuật vượt qua cơ chế lọc của WAF (SQL Injection signature Evasion Techniques), đánh giá sâu hơn các công nghệ giám sát an ninh runtime (RASP, IAST) và tích hợp các công cụ quét mã tĩnh (SAST) vào quy trình phát triển phần mềm an toàn (DevSecOps).
Giá trị tham khảo
Báo cáo thực tập tốt nghiệp là tài liệu tham khảo phù hợp cho:
- Sinh viên chuyên ngành Công nghệ thông tin, An toàn thông tin hoặc Kỹ thuật phần mềm đang nghiên cứu về an ninh ứng dụng web.
- Lập trình viên web và quản trị viên hệ thống cần hiểu rõ cơ chế lỗi cú pháp SQL và các kỹ thuật tấn công thực tế để chủ động phòng ngừa, rà soát mã nguồn.
- Tài liệu cung cấp giá trị tham khảo cao ở mục phân tích các biến thể Blind SQL Injection, bảng nhận diện dấu vết các hệ quản trị cơ sở dữ liệu và quy trình 5 bước khai thác thực tế bằng công cụ Sqlmap.
Câu hỏi thường gặp
1. Báo cáo thực tập tốt nghiệp này được thực hiện tại đơn vị nào và do ai hướng dẫn?
Báo cáo do sinh viên Nguyễn Thành Đạt (lớp ĐH9C6, Khoa Công nghệ Thông tin, Trường Đại học Tài nguyên và Môi trường Hà Nội) thực hiện dưới sự hướng dẫn khoa học của TS. Vũ Văn Hiệu. Địa điểm thực tập tốt nghiệp là Viện Công nghệ thông tin trực thuộc Viện Hàn lâm Khoa học và Công nghệ Việt Nam (hoàn thành vào tháng 03/2023).
2. Hai phương thức chính để thực hiện kỹ thuật Blind SQL Injection được trình bày trong báo cáo là gì?
Báo cáo phân loại Blind SQL Injection thành hai phương thức chính:
- Dựa vào nội dung phản hồi (Content-based): Sử dụng các biểu thức điều kiện logic (như
AND 1=1 và AND 1=2) để so sánh sự thay đổi về nội dung, cấu trúc HTML hoặc từ khóa trả về của trang web nhằm suy đoán dữ liệu.
- Dựa vào độ trễ thời gian (Time-based): Sử dụng các hàm trì hoãn của cơ sở dữ liệu (ví dụ hàm
sleep(10) trên MySQL) để ép máy chủ phản hồi chậm nếu biểu thức điều kiện đúng, từ đó xác định sự tồn tại của lỗ hổng.
3. Quy trình thực nghiệm tấn công bằng công cụ Sqlmap trên website thử nghiệm gồm những bước nào?
Quy trình thực nghiệm gồm 5 bước tuần tự:
- Bước 1: Quét URL mục tiêu (
http://testphp.vulnweb.com/listproducts.php?cat=1) để phát hiện lỗ hổng và nhận diện DBMS (MySQL 5).
- Bước 2: Dùng cờ lệnh
--dbs để tìm các cơ sở dữ liệu trên máy chủ (phát hiện database acuart).
- Bước 3: Dùng cờ lệnh
-D acuart --tables để liệt kê danh sách các bảng dữ liệu.
- Bước 4: Dùng cờ lệnh
-D acuart -T users --columns để liệt kê danh sách các cột trong bảng users.
- Bước 5: Dùng cờ lệnh
-D acuart -T users -C email,name,pass,uname --dump để trích xuất toàn bộ dữ liệu tài khoản người dùng.
4. Báo cáo phân biệt các hệ quản trị cơ sở dữ liệu (MySQL, MS SQL Server, Oracle, PostgreSQL) bằng những dấu hiệu nào?
Báo cáo chỉ ra phương pháp nhận diện thông qua:
- Thông báo lỗi cú pháp: Lỗi
Unclosed quotation mark (MS SQL Server), ORA-00933 hoặc ORA-292257 (Oracle), syntax error at line... (MySQL).
- Cú pháp nối chuỗi: MySQL dùng phép cộng chuỗi
'test' + 'ing', MS SQL Server dùng 'test' 'ing', trong khi Oracle và PostgreSQL sử dụng hai dấu gạch đứng 'test'||'ing'.
- Hàm lấy phiên bản: MySQL dùng
version(), MS SQL Server dùng @@version.
Kết luận
Báo cáo thực tập tốt nghiệp của tác giả Nguyễn Thành Đạt đã tổng hợp một cách có hệ thống nền tảng lý thuyết về kỹ thuật SQL Injection và các rủi ro bảo mật theo chuẩn OWASP Top 10. Thông qua quy trình thực nghiệm 5 bước cụ thể với công cụ Sqlmap trên môi trường kiểm thử tiêu chuẩn, báo cáo minh chứng rõ ràng mức độ nguy hiểm của việc rò rỉ toàn bộ cơ sở dữ liệu từ lỗ hổng kiểm duyệt tham số đầu vào. Các giải pháp phòng chống được đề xuất cung cấp tài liệu tham khảo có giá trị kỹ thuật thực tiễn cho sinh viên công nghệ thông tin và người phát triển ứng dụng web trong việc xây dựng các hệ thống thông tin an toàn.