1. Trang chủ
  2. » Luận Văn - Báo Cáo

TẤN CÔNG WEB SITE VÀ CÁCH PHÒNG CHỐNG

28 670 0

Đ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

Định dạng
Số trang 28
Dung lượng 407,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào... TÌM KIẾM LỖI - SQL injection phát sinh lỗi khi người lập trình không kiểm soát chặt chẽ

Trang 2

TẤN CÔNG WEB SITE BẰNG SQL INJECTION VÀ CÁCH PHÒNG CHỐNG

Trang 3

I TẤN CÔNG WEBSITE BẰNG SQL INJECTION

SQL injection là m t k thu t cho phép nh ng k t n ộ ỹ ậ ữ ẻ ấcông l i d ng l h ng c a vi c ki m tra d li u đ u ợ ụ ỗ ổ ủ ệ ể ữ ệ ầvào trong các ng d ng web và các thông báo l i c a ứ ụ ỗ ủ

h qu n tr c s d li u tr v đ inject (tiêm vào) và ệ ả ị ơ ở ữ ệ ả ề ể

có th cho phép nh ng k t n công th c hi n các thao ể ữ ẻ ấ ự ệtác, delete, insert, update,… trên c s d li u c a ng ơ ỡ ữ ệ ủ ứ

Trang 4

SQL INJECTION

nhiều công cụ hỗ trợ

đến gây hậu quả nặng nề hơn

Trang 5

II CÁC DẠNG TẤN CÔNG BẰNG SQL INJECTION

 D ng t n công vạ ấ ượt qua ki m tra đăng nh pể ậ

 D ng t n công s d ng câu l nh SELECTạ ấ ử ụ ệ

 D ng t n công s d ng câu l nh INSERTạ ấ ử ụ ệ

Trang 6

DẠNG TẤN CÔNG VƯỢT QUA KIỂM TRA ĐĂNG

username và password này sẽ được gửi đến ứng dụng và xử lý chúng M t ộ câu truy v n SQL s đ ấ ẽ ượ ạ c t o ra và l y các hàng kh p v i thông tin ấ ớ ớ

ng ườ i dùng cung c p Ng ấ ườ i dùng lúc đó s đ ẽ ượ c ch ng th c và ứ ự

chuy n đ n trang yêu c u ể ế ầ

Trang 7

DẠNG TẤN CÔNG VƯỢT QUA KIỂM TRA ĐĂNG NHẬP

 Tuy nhiên, n u không đ ế ượ c ki m tra k s d b ể ỹ ẽ ễ ị

l i SQL injection ỗ Ví d đo n code sau đâu b l i SQL ụ ạ ị ỗ

injection:

string strQry = “SELECT Count(*) FROM Users WHERE

Username=’” + txtUser.Text + “‘ AND Password =’” +

txtPassword.Text + “‘”;

 N u ng ế ườ i dùng đăng nh p bình th ậ ườ ng, ví d username là ụ

‘Jason’ và password là ‘Springfield’ Khi đó ng d ng s th c ứ ụ ẽ ự

hi n câu truy v n: ệ ấ

SELECT Count(*) FROM Users WHERE Username = ‘Jason’

AND Password = ‘Springfield’.

Trang 8

DẠNG TẤN CÔNG VƯỢT QUA KIỂM TRA ĐĂNG

NHẬP

 Tuy nhiên, n u đăng nh p v i username và Password nh sau: ế ậ ớ ư

 Username là “ Thao’ or 1=1” , password là “Springfield” khi đó câu truy vấn sẽ được

thực hiện như sau: SELECT Count(*) FROM Users WHERE Username = ‘Thao’ OR 1 

= 1 — AND Password = ‘Springfield’

Chú ý rằng sau dấu – là comment Nghĩa là câu truy vấn thật sự là: SELECT Count(*) 

FROM Users WHERE Username = ‘Blah’ OR 1 = 1 Như vậy là người tấn công sẽ

vượt qua phần kiểm tra đăng nhập.

Trang 9

DẠNG TẤN CÔNG SỬ DỤNG CÂU LỆNH INSERT

một tài khoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ thống

không kiểm tra tính hợp lệ của thông tin nhập vào.

Trang 10

DẠNG TẤN CÔNG SỬ DỤNG STORE-PROCEDURES

ứng dụng được thực thi với quyền quản trị hệ thống 'sa' Ví dụ,

nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell

‘cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư

mục trên ổđĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.

Trang 11

DẠNG TẤN CÔNG SỬ DỤNG CÂU LỆNH SELECT

 D ng t n công này ph c t p h n Đ th c hi n ạ ấ ứ ạ ơ ể ự ệ

được ki u t n công này, k t n công ph i có kh ể ấ ẻ ấ ả ả

năng hi u và l i d ng các s h trong các thông báo ể ợ ụ ơ ở

Trang 12

III CÁC BƯỚC TẤN CÔNG MỘT WEBSITE BẰNG SQL INJECTION

Trang 13

TÌM KIẾM LỖI

 - SQL injection phát sinh lỗi khi người lập trình không kiểm soát chặt chẽ dữ liệu đầu vào trước khi thực thi câu lệnh SQL để truy vấn dữ liệu Cách đơn giản để phát hiện lỗi SQL injection là thêm kí tự “ ‘” vào URL truy vấn

 VD:1 URL mà người dùng truy vấn bình thường:

Trang 15

Trong trường sử dụng union, cần phải biết được số lượng

column1 trong truy vấn: "Select  column1  from  table1" để mệnh đề "union select column2 from table2 where (dk nao 

do);" thỏa mãn

Trang 21

KHAI THÁC D LIÊU Ữ

Tiếp tục khai thác dữ liệu

      http://localhost:6789/demo/information.php?item=-7 union select 1,2,3,4,5,6,user()

Hàm user() là hàm của MySQL cho biết thông tin về user đang chạy database website

Ở đây user đang schayj database của website là: root@localhost

Trang 22

KHAI THÁC D LI U Ữ Ệ

Khai thác chi tiết hơn dữ liệu cần biết được các table và column cua databse:

 Tiếp tục khai thác dữ liệu

Hàm group_concat() dùng để nối string

Truy vấn ở trên có nghĩa là: Liệt kê tất cả các table của database đang được sử dụng

(dem04ngang0)

Trang 23

 NAME,ID,SODT,NGVL,HSLUONG,LUONGCB,PASSWORD,CHUCVU

http://localhost:6789/demo/information.php?

item=7+union+select+1,2,3,4,5,group_concat(column_name),7 from 

information_schema.columns where table_name=CHAR(110, 14, 97, 110, 118, 105, 101, 110)

Trang 24

KHAI THÁC DỮ LIỆU

 Tiếp tục khai thác dữ liệu:

http://localhost:6789/demo/information.php?item=-7+union+select+1,2,3,4,5,group_concat(NAME,0x2f,PASSWORD),7 from nhanvien

 Sau khi có được thông tin của column ta bắt đầu khai thác thông tin của database:

Truy vân trên có nghĩa là: Liệt kê NAME và PASSWORD của table nhanvien 0x2f là dấu  “/” được đổi ra

mã hex.

Ở đây ta lấy đựơc user là admin pass: 1234

 Có thông tin quản tiến hành login vào hệ thống và kiểm soát hệ thống đó

Trang 25

PHÒNG CH NG SQL INJECTION Ố

 Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lập trình viên phát triển ứng dụng web khi xử lí các dữ liệu nhập vào để xây dựng câu lệnh SQL Tác hại từ lỗi SQL injection tùy thuộc vào môi trường và cách cấu hình hệ thống

 Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu

Trang 26

 Ví dụ, có thể giới hạn chiều dài của chuỗi nhập liệu, hoặc xây dựng hàm

EscapeQuotes để thay thế các dấu nháy đơn bằng 2 dấu nháy đơn.

 Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một giá trịđược tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp

Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay không bằng hàm IsNumeric()

 Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểm

như: ;, , select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía người dùng

để hạn chế các tấn công dạng này.

Trang 27

THIẾT LẬP CẤU HÌNH AN TOÀN CHO HỆ QUẢN TRỊ CSDL

 Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài

khoản người dùng mà ứng dụng web đang sử dụng Các ứng dụng thông

thường nên tránh dùng đến các quyền như dbo hay sa Quyền càng bị hạn chế, thiệt hại càng ít

 Ngoài ra để tránh các nguy cơ từ SQL Injection attack, nên chú ý loại bỏ bất

kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật

có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống.

Trang 28

 C M N TH Y VÀ CÁC B N ĐÃ L NG NGHE!Ả Ơ Ầ Ạ Ắ

Ngày đăng: 05/04/2015, 21:54

TỪ KHÓA LIÊN QUAN

w