1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo thuyết trình học phần an toàn và bảo mật hệ thống thông tin đề tài tấn công sql injection

36 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tấn Cung SQL Injection
Tác giả Tổn Nhom
Trường học Trường Đại Học Kinh Te
Chuyên ngành An Toan Va Bao Mat He Thong Thong Tin
Thể loại Báo Cáo Thuyết Trình Học Phần
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 36
Dung lượng 2,14 MB

Nội dung

Nhiệm vụ của đề tài - Nghiên cứu các dạng tấn công SQL Injection và các cách thức mà kẻ tấncông sử dụng để khai thác lỗ hổng SQL Injection của hệ thống.. Được thực hiện bằng cách chèn th

Trang 1

TRƯỜNG ĐẠI HỌC KINH TẾ

KHOA THỐNG KÊ – TIN HỌC

–––––––––––––––––––––––––––––––

BÁO CÁO THUYẾT TRÌNH HỌC PHẦN

AN TOÀN VÀ BẢO MẬT HỆ THỐNG THÔNG TIN

ĐỀ TÀI:

TẤN CÔNG SQL INJECTION

Sinh viên thực hiện :

Giảng viên hướng dẫn :

Đà Nẵng, 10/2022

Trang 2

MỤC LỤC

MỤC LỤC ii

DANH MỤC HÌNH ẢNH iv

DANH MỤC BẢNG BIỂU v

DANH MỤC CÁC TỪ VIẾT TẮT vi

LỜI MỞ ĐẦU 1

CHƯƠNG 1 TỔNG QUAN VỀ SQL INJECTION 2

1.1 Giới thiệu về SQL Injection 2

1.2 Ưu điểm và nhược điểm của tấn công SQL Injection 3

CHƯƠNG 2 CÁC HƯỚNG TẤN CÔNG SQL INJECTION 4

2.1 Chèn SQL Injection dựa trên đầu vào 4

2.2 Chèn SQL Injection dựa trên cookies 4

2.3 Chèn SQL Injection dựa trên headers HTTP 5

2.4 Chèn SQL Injection bằng bậc hai 6

CHƯƠNG 3 CÁC DẠNG TẤN CÔNG SQL INJECTION 8

3.1 In-band SQL Injection 8

3.1.1 Error-based SQL Injection 8

3.1.2 Union-based SQL Injection 10

3.2 Inferential SQL Injection 11

3.2.1 Blind-boolean-based SQL Injection 11

3.2.2 Blind-time-based SQL Injection 13

3.3 Out-of-band SQL Injection 14

CHƯƠNG 4 kHAI THÁC LỖ HỔNG SQL INJECTION 16

4.1 Tấn công vượt qua đăng nhập 16

Trang 3

4.2 Tấn công dựa vào câu lệnh SELECT 17

4.3 Tấn công dựa vào câu lệnh INSERT 17

4.4 Tấn công dựa vào Stored-procedures 18

CHƯƠNG 5 KỊCH BẢN VÀ DEMO TẤN CÔNG SQL INJECTION 21

5.1 Vượt qua khâu đăng nhập của hệ thống 21

5.2 Đánh cắp dữ liệu 21

5.3 Chỉnh sửa (Thêm, sửa, xóa) dữ liệu 22

CHƯƠNG 6 CÁCH PHÒNG CHỐNG SQL INJECTION 24

KẾT LUẬN 25

TÀI LIỆU THAM KHẢO 26

PHỤ LỤC 29

Trang 4

DANH MỤC HÌNH ẢNH

Hình 2.1.1 Tham số được truyền qua url 4

Hình 2.4.1 Trang đăng ký Haiderm.com 6

Hình 2.4.2 Trang đổi mật khẩu Haiderm.com 7

Hình 3.1.1 Chèn nội dung bất kỳ để thay đổi tham số 9

Hình 3.1.2 Chèn câu lệnh truy vấn vào url 9

Hình 3.2.1 Nhập giá trị boolean 12

Hình 3.2.2 Nhập giá trị boolean’ or 1=1# 12

Hình 3.2.3 Nhập giá trị boolean’ or 1=2# 13

Hình 3.2.4 Nhập giá trị ‘ or 1=1 and sleep(1)# 14

Hình 4.1.1 Đoạn mã trang HTML 16

Hình 4.1.2 Đoạn mã trang ASP 16

Trang 5

DANH MỤC BẢNG BIỂU

Trang 6

DANH MỤC CÁC TỪ VIẾT TẮT SQLi : SQL Injection

Trang 7

LỜI MỞ ĐẦU

1 Mục tiêu nghiên cứu của đề tài

- Đề tài này nghiên cứu SQL Injection trong tấn công các ứng dụng web,phần mềm máy tính và cách thức để chống lại cuộc tấn công SQLInjection

2 Nhiệm vụ của đề tài

- Nghiên cứu các dạng tấn công SQL Injection và các cách thức mà kẻ tấncông sử dụng để khai thác lỗ hổng SQL Injection của hệ thống

- Nghiên cứu cách thức để các hệ thống chống lại các cuộc tấn công SQLInjection

3 Phương pháp nghiên cứu

- Thu thập tài liệu, thông tin từ các trang blog, website, video youtube trênInternet

4 Đối tượng và phạm vi nghiên cứu

- Nghiên cứu về dạng tấn công SQL Injection đối với các ứng dụng web vàphần mềm máy tính

5 Kết cấu của đề tài

Đề tài được tổ chức gồm phần mở đầu, 6 chương nội dung và phần kếtluận

- Mở đầu

- Chương 1: Tổng quan về SQL Injection

- Chương 2: Các hướng tấn công SQL Injection

- Chương 3: Các dạng tấn công SQL Injection

- Chương 4: Khai thác lỗ hổng SQL Injection

- Chương 5: Kịch bản và demo tấn công SQL Injection

- Chương 6: Cách phòng chống SQL Injection

Trang 8

- Kết luận

Trang 9

-CHƯƠNG 1 TỔNG QUAN VỀ SQL INJECTION

1.1 Giới thiệu về SQL Injection

SQL Injection (SQLi) là một kỹ thuật lợi dụng những lỗ hổng về câu truyvấn của các ứng dụng Được thực hiện bằng cách chèn thêm một đoạn SQL đểlàm sai lệch đi câu truy vấn ban đầu, từ đó có thể khai thác dữ liệu từ database.SQL Injection có thể cho phép những kẻ tấn công thực hiện các thao tác như mộtngười quản trị web, trên cơ sở dữ liệu của ứng dụng

Ví dụ: Ở trong Form đăng nhập thì người sử dụng nhập dữ liệu ở trongtrường tìm kiếm và người dùng sẽ nhập các văn bản tìm kiếm Khi đó, các biểumẫu lưu dữ liệu và người dùng nhập dữ liệu cần phải lưu chúng lại Toàn bộ các

dữ liệu đã được chỉ định này đều sẽ được đi vào cơ sở dữ liệu

Thay cho việc nhập đúng dữ liệu, kẻ tấn công sẽ lợi dụng lỗ hổng để cóthể Insert rồi thực thi những câu lệnh SQL bất hợp pháp để có thể lấy dữ liệu nàycủa người sử dụng Khi đó, SQL Injection sẽ thực hiện với ngôn ngữ lập trìnhSQL và chúng được dùng với mục đích quản lý dữ liệu đã được lưu trữ trongtoàn bộ các cơ sở dữ liệu [ CITATION Top \l 18441 ]

Cách hoạt động của SQL Injection: Các cuộc tấn công SQL Injection chủyếu được thực hiện tại các ô nhận input của hệ thống, nới chứa các tham số (câulệnh WHERE trong SQL) để làm điều kiện cho hệ thống truy vấn kết quả Khicác ô input này có lỗ hổng, kẻ tấn công chèn vào đây các câu lệnh SQL để đánhlừa hệ thống trả về các kết quả mà họ muốn (thông báo lỗi hay kết quả của câulệnh SQL được chèn vào)

Sự nguy hiểm của SQL Injection:

 Hack tài khoản cá nhân

 Ăn cắp hoặc sao chép dữ liệu của trang web hoặc hệ thống

 Thay đổi dữ liệu nhạy cảm của hệ thống

 Xóa dữ liệu nhạy cảm và quan trọng của hệ thống

 Người dùng có thể đăng nhập vào ứng dụng với tư cách người dùng khác, ngay cả với tư cách quản trị viên

Trang 10

 Người dùng có thể xem thông tin cá nhân thuộc về những người dùng khác, ví dụ chi tiết hồ sơ của người dùng khác, chi tiết giao dịch của họ,…

 Người dùng có thể sửa đổi cấu trúc của cơ sở dữ liệu, thậm chí xóa các bảng trong cơ sở dữ liệu ứng dụng

 Người dùng có thể kiểm soát máy chủ cơ sở dữ liệu và thực thi lệnh theo ý muốn [ CITATION Top \l 18441 ]

1.2 Ưu điểm và nhược điểm của tấn công SQL Injection

 Cách thức tấn công đơn giản, chủ yếu là sử dụng câu lệnh SQL

 Lỗ hổng SQL Injection dễ bị phát hiện

 Với những hệ thống có lỗ hổng, không an toàn thì cuộc tấn công SQLi

có tỷ lệ thành công tương đối cao (lỗ hổng dễ bị khai thác)

 Khi kẻ tấn công đã vượt qua được khâu đăng nhập, đã lấy được dữliệu trong hệ thống thì kẻ tấn công có khả năng chiếm quyền kiểm soáttoàn bộ hệ thống

b) Nhược điểm

 Hệ thống phải có lỗ hổng mới tấn công được

 SQL Injection là là kỹ thuật tấn công đã xuất hiện trong một thời giandài nên các phần mềm và ứng dụng web hiện tại đã được các lập trìnhviên chú ý và xây dựng các hệ thống chống lại dạng tấn công này

 Hoạt động của kẻ tấn công có thể được trình duyệt lưu lại và có thểvẫn hiển thị với nhà cung cấp dịch vụ mạng internet

Trang 11

CHƯƠNG 2 CÁC HƯỚNG TẤN CÔNG SQL INJECTION 1.1 Chèn SQL Injection dựa trên đầu vào

Một cuộc tấn công SQL Injection thường phổ biến với việc sử dụng cácđầu vào của người dùng Các ứng dụng web đều chấp nhận các đầu vào thôngqua nhiều hình thức khác nhau Thông qua đó, những kẻ tấn công có thể gắn SQLInjection với các dữ liệu đầu vào và truy cập vào cơ sở dữ liệu máy chủ.[ CITATION PAV21 \l 18441 ]

User input điển hình thường đến từ các form nhập liệu, form search haylink… Những dữ liệu này được web browser gửi đến server thông qua phươngthức HTTP GET hay POST và trở thành các tham số cho ứng dụng web truy cậptới cơ sở dữ liệu

Một trường hợp phổ biến trong kỹ thuật tấn công SQL Injection là khingười dùng request một tài liệu mà các tham số của nó được truyền qua url ( nhưHình 2.1 1, tham số id được truyền qua url theo phương thức HTTP GET) Khinhận được request, ứng dụng web tìm trong cơ sở dữ liệu và trả về cho ngườidùng bài viết có id=31 [ CITATION Kyr22 \l 18441 ]

Hình 2.1.1 Tham số được truyền qua url

1.3 Chèn SQL Injection dựa trên cookies

Một cách tiếp cận khác với SQL Injection là sửa đổi cookie thành các truyvấn cơ sở dữ liệu chứa mã độc Các phần mềm độc hại có thể được triển khai trênthiết bị người dùng thông qua thay đổi của cookie, nhằm mục đích đưa SQLInjection vào các dữ liệu Back-end [ CITATION PAV21 \l 18441 ]

Trang 12

Cookies là những tệp tin lưu trữ thông tin trạng thái của người dùng khitruy cập các ứng dụng web Những thông tin này do người lập trình quyết định,được tạo ra ở server và lưu trữ tại client Khi người dùng truy cập lại ứng dụngweb, cookies được browser gửi lên server giúp phục hồi lại những trạng thái củangười dùng trong lần truy cập trước đó.

Do được lưu trữ ở client nên người dùng có thể chỉnh sửa tùy ý, vì vậynếu ứng dụng web sử dụng những thông tin lưu trong cookies để xây dựng cáctruy vấn tới cơ sở dữ liệu thì hacker hoàn toàn có thể chèn vào cookies nhữngscript sql để thực hiện một cuộc tấn công SQL Injection [ CITATION Kyr221 \l

18441 ]

1.4 Chèn SQL Injection dựa trên headers HTTP

Các biến của máy chủ như headers HTTP cũng có thể là mục tiêu tấn côngcủa SQL Injection Nếu một ứng dụng web chấp nhận đầu vào từ các headersHTTP, các headers giả có chứa SQL Injection có thể xâm nhập vào cơ sở dữ liệu

Lỗ hổng chèn headers HTTP là một thuật ngữ bảo mật ứng dụng web đềcập đến tình huống khi kẻ tấn công đánh lừa ứng dụng web để chèn thêm tiêu đềHTTP vào các phản hồi HTTP hợp pháp Chèn tiêu đề HTTP là một kỹ thuật cóthể được sử dụng để tạo điều kiện cho các cuộc tấn công độc hại như tạo kịch bảntrang web chéo , nhiễm độc bộ nhớ cache web , v.v Do đó, những điều này cóthể dẫn đến tiết lộ thông tin, sử dụng ứng dụng của bạn trong các cuộc tấn cônglừa đảo và các hậu quả nghiêm trọng khác

Lỗ hổng chèn tiêu đề HTTP là kết quả của việc điều chỉnh quá mức đầuvào của người dùng Nếu nhà phát triển ứng dụng web sử dụng dữ liệu bên ngoàitrực tiếp trong các phản hồi HTTP, thì thường có thể thực hiện một cuộc tấn côngđưa vào tiêu đề HTTP

Ví dụ: Hãy tưởng tượng rằng doanh nghiệp của bạn đã chuyển sang mộtmiền mới và để thuận tiện, bạn muốn dấu trang của người dùng vẫn hoạt động.Tên miền ban đầu là example.com nhưng bây giờ trang web của bạn đã có tại

example.info Nếu người dùng thông thường của bạn truy cập vào một URL lỗi

Trang 13

thời, chẳng hạn như http://www.example.com/page1 , bạn muốn máy chủ web tự

động chuyển hướng người dùng đến URL mới tương ứng như sau:

http://www.example.info/page1 Để đạt được mục tiêu trên, bạn có thể xây dựng

một ứng dụng web đơn giản tại example.com lấy đường dẫn từ yêu cầu HTTP và

gắn nó vào http://www.example.info/ [ CITATION Nidecki \l 18441 ]

1.5 Chèn SQL Injection bằng bậc hai

Một cuộc tấn SQL Injection bậc hai cung cấp các dữ liệu bị nhiễm độc, màđây là các dữ liệu có thể được xem là lành tình trong một trường hợp nhất định,nhưng chứa các mã độc trong trường hợp khác Bạn khó có thể nhận thức đượccác cuộc tấn công theo cách thức này [ CITATION PAV21 \l 18441 ]

Là một lỗ hổng bảo mật ứng dụng, nó xảy ra khi các giá trị do người dùnggửi được lưu trữ trong cơ sở dữ liệu và sau đó nó được sử dụng bởi một số chứcnăng khác trong ứng dụng mà không cần thoát hoặc lọc dữ liệu

Ví dụ: Tấn công trang web Haiderm.com như dưới đây Hacker đã biếtusername của tài khoản admin trang web là haider, nhưng chưa biết mật khẩu,hacker sẽ tiến hành các bước sau để có thể đăng nhập bằng tài khoản admin củatrang web:

 Đăng ký một tài khoản mới có username: haider’ và mật khẩu là abc (Hình 2.4 2).

Hình 2.4.2 Trang đăng ký Haiderm.com

 Đăng nhập trang web bằng tài khoản vừa tạo và thực hiện chứcnăng Đổi mật khẩu của trang web (Hình 2.4 3)

Trang 14

Hình 2.4.3 Trang đổi mật khẩu Haiderm.com

 Tiến hành đổi mật khẩu từ abc thành 123

 Trang web sẽ thực hiện câu lệnh sau:

UPDATE users

SET password = ‘123’

WHERE username = ‘haider’ and password = ‘abc’

 Sau dấu là comment nên câu lệnh được chương trình thực hiện sẽnhư sau:

UPDATE users

SET password = ‘123’

WHERE username = ‘haider’

 Như vậy mật khẩu của tài khoản admin (username: haider) đã đượcđổi thành 123 => Hacker đã có thông tin tài khoản admin của web.[ CITATION Hai18 \l 18441 ]

Trang 15

CHƯƠNG 3 CÁC DẠNG TẤN CÔNG SQL INJECTION 1.6 In-band SQL Injection

In-band SQL Injection là dạng tấn công phổ biến nhất và cũng dễ để khaithác lỗ hổng SQL Injection nhất, hình thức SQL Injection này giúp hacker có thể

tổ chức tấn công và thu thập kết quả trực tiếp trên cùng một kênh liên lạc.In-Band SQLi có 2 loại : Error-based SQLi và Union-based SQLi.[ CITATION Bui20 \l 18441 ]

1.6.1 Error-based SQL Injection

a) Tổng quan

Error-based SQL Injection là một kỹ thuật In-band injection cho phép kẻ tấn công khai thác kết quả lỗi từ cơ sở dữ liệu để thao tác trên dữ liệu của nó Thực hiện kỹ thuật này khiến cho cơ sở dữ liệu trả về một thông báo lỗi có chứa thông tin về cấu trúc của nó

Error-based SQL Injection yêu cầu sử dụng một lỗ hổng để buộc trích xuất

dữ liệu Lỗ hổng cho phép code để xuất ra lỗi SQL từ máy chủ thay vì dữ liệuđược yêu cầu như thông thường [ CITATION Oli22 \l 18441 ]

Trang 16

Hình 3.1.4 Chèn nội dung bất kỳ để thay đổi tham số

 Hệ thống trả về lỗi như sau (Hình 3.1 4):

o Error: You have an error in your SQL syntax; check the manualthat corresponds to your MySQL server version for the rightsyntax to use near ''bi_loi_ATvBM'' at line 1 Warning:mysql_fetch_array() expects parameter 1 to be resource,boolean given in /hj/var/www/listproducts.php on line 74

 Từ thông báo trên kẻ tấn công có thể biết được các thông tin sau:

o Cơ sở dữ liệu hệ thống đang sử dụng là MySQL

o Cú pháp gây ra lỗi: 'bi_loi_ATvBM'

o Nơi xảy ra lỗi cú pháp trong truy vấn: sau tham số (cat = 1)

 Thêm cú pháp: or (select * from abc) (Hình 3.1 5)

Hình 3.1.5 Chèn câu lệnh truy vấn vào url

 Hệ thống trả về lỗi (Error: Reference source not found):

Trang 17

o Error: Table 'acuart.abc' doesn't exist Warning:

mysql_fetch_array() expects parameter 1 to be resource,boolean given in /hj/var/www/listproducts.php on line 74

 Từ thông báo trên ta biết được: Hệ thống này có một cơ sở dữ liệu làacuart và acuart có chứa thông tin về các sản phẩm

1.6.2 Union-based SQL Injection

Union-based SQL Injection là một kỹ thuật chèn SQL trong băng tần sửdụng toán tử UNION để kết hợp các kết quả của hai hoặc nhiều câu lệnhSELECT thành một kết quả duy nhất, sau đó được trả về như một phần của phảnhồi HTTP

Trong Union-based SQLi, kẻ tấn công sử dụng toán tử UNION để kết hợpmột câu lệnh SQL lành tính với một câu lệnh độc hại Câu lệnh độc hại phải sửdụng các cột và kiểu dữ liệu giống như câu lệnh gốc Cơ sở dữ liệu bị tấn công sẽ

xử lý câu lệnh kết hợp và thực thi mã độc

Có hai điều kiện để truy vấn UNION hoạt động:

 Mỗi truy vấn độc lập phải trả về số cột bằng nhau

 Mỗi cột phải chứa các kiểu dữ liệu tương thích với từng truy vấn

Ví dụ: Dùng kỹ thuật ‘Union Select’ để xác định số lượng cột trong bảng:

 Kẻ tấn công gửi một chuỗi các giá trị null sau câu lệnh “unionselect” Ví dụ, ’ UNION SELECT NULL tiếp theo là ‘UNIONSELECT NULL, NULL , Khi cơ sở dữ liệu xác định rằng sốcột câu truy vấn trước ‘union select’ và số giá trị null là khôngkhớp, nó sẽ trả về thông báo lỗi (hoặc không trả về bất kỳ kết quảnào) Ngược lại, nếu số cột truy vấn trước khớp với số giá trị nullthì hệ thống trả về kết quả như bình thường

 Số giá trị null hợp lệ chính là số cột của bảng mà hệ thống đangthực hiện truy vấn [ CITATION Oli221 \l 18441 ]

Trang 18

1.7 Inferential SQL Injection

Không giống như In-band SQLi, Inferential SQL Injection tốn nhiều thờigian hơn cho việc tấn công do không có bất kì dữ liệu nào được thực sự trả vềthông qua web application và hacker thì không thể theo dõi kết quả trực tiếp nhưkiểu tấn công In-band

Thay vào đó, kẻ tấn công sẽ cố gắng xây dựng lại cấu trúc cơ sở dữ liệubằng việc gửi đi các payloads, dựa vào kết quả phản hồi của web application vàkết quả hành vi của database server

Inferential SQL Injection có 2 dạng: boolean-based SQLi và time-based SQLi [ CITATION Bui201 \l 18441 ]

Blind-1.7.1 Blind-boolean-based SQL Injection

a) Tổng quan

Đây là kiểu tấn công mà hacker có chèn toán tử boolean vào trong câu truy vấn, hacker dựa vào việc gửi các truy vấn tới cơ sở dữ liệu bắt buộc ứng dụngtrả về các kết quả khác nhau phụ thuộc vào câu truy vấn là True hay False.Tuỳ thuộc kết quả trả về của câu truy vấn mà HTTP reponse có thể thay đổi, hoặc giữ nguyên

Kiểu tấn công này thường chậm (đặc biệt với cơ sở dữ liệu có kích thước lớn)

do người tấn công cần phải liệt kê từng dữ liệu, hoặc mò từng kí tự.[ CITATION Tra20 \l 18441 ]

Ngày đăng: 13/07/2024, 10:31

HÌNH ẢNH LIÊN QUAN

Hình  2.I.I  Tham  số  được  truyền  qua  u[Ì................-  s5:  +  1  E1  EE  1E  E12212122121111  11211  xe - báo cáo thuyết trình học phần an toàn và bảo mật hệ thống thông tin đề tài tấn công sql injection
nh 2.I.I Tham số được truyền qua u[Ì................- s5: + 1 E1 EE 1E E12212122121111 11211 xe (Trang 4)
Hình  2.4.3  Trang  đổi  mật  khâu  Haiderm.com - báo cáo thuyết trình học phần an toàn và bảo mật hệ thống thông tin đề tài tấn công sql injection
nh 2.4.3 Trang đổi mật khâu Haiderm.com (Trang 14)
Hình  3.1.5  Chèn  câu  lệnh  truy  van  vao  url - báo cáo thuyết trình học phần an toàn và bảo mật hệ thống thông tin đề tài tấn công sql injection
nh 3.1.5 Chèn câu lệnh truy van vao url (Trang 16)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w