Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 37

Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

LỜI CẢM ƠN
Đầu tiên, tôi xin chân thành cảm ơn ban giám hiệu, quy thầy cô trường cao
đẳng CNTT hữu nghị Việt Hàn, đặc biệt là thầy cô trong khoa Khoa học máy
tính đã tận tình giảng dạy và truyền đạt cho nhóm những kiến thức quý báu
trong những năm học vừa qua.
Xin chân thành gửi lời cảm ơn đến thầy Lê Tự Thanh giảng viên khoa
Khoa Học Máy Tính đã tận tình hướng dẫn, giúp đỡ nhóm chúng tôi trong quá
trình định hướng, nghiên cứu và hoàn thiện đồ án này.
Kết quả cuối cùng là kết quả của những tháng ngày cố gắng, nỗ lực của
nhóm, sự giúp đỡ của gia đình, nhà trường, bạn bè và đặc biệt là sự hướng dẫn
tận tình của thầy Lê Tự Thanh để tôi có thể hoàn tất một cách tốt so với những
gì đã đặt ra.
Trong quá trình thực hiện đồ án, mặc dù đã có nhiều cố gắng tuy nhiên vẫn
còn có nhiều thiếu sót và hạn chế, kính mong các thầy (cô) và các bạn đóng góp
ý kiến của mình để hệ thống được hoàn thiện hơn.
Cuối cùng, một lần nữa, tôi xin cảm ơn tất cả đã giúp đỡ để có thể hoàn
thành tốt đồ án này. Xin chân thành cảm ơn!

Đà Nẵng, tháng 03 năm 2012


Nhóm 12 thực hiện
Vương Đình Khoa
Phạm Thị Thảo

Nhóm 12 Trang i CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

MỤC LỤC
LỜI CẢM ƠN.......................................................................................................i

MỤC LỤC............................................................................................................ii

DANH MỤC CÁC TỪ VIẾT TẮT.....................................................................v

LỜI MỞ ĐẦU.....................................................................................................vi

PHẦN 1: TỔNG QUAN AN NINH MẠNG......................................................1

1.1 Thực trạng an ninh trên Internet.............................................................1

1.1.1 Thực trạng an ninh Internet thế giới...................................................1

1.1.2 Thực trạng an ninh Internet tại Việt Nam...........................................1

1.2 Các hình thức tấn công mạng hiện nay....................................................3

1.2.1. Quá trình thăm dò tấn công................................................................3

1.2.1.1. Thăm dò (Reconnaissace)..............................................................4

1.2.1.2. Quét hệ thống (Scanning)..............................................................4

1.2.1.3. Chiếm quyền điều khiển (Gainning access).................................4

1.2.1.4. Duy trì điều khiển hệ thống (Maitaining access).........................5

1.2.1.5. Xoá dấu vết (Clearning tracks).....................................................5

1.3. Các biện pháp bảo mật mạng...................................................................5

1.3.1. Mã hoá, nhận dạng, chứng thực người dùng và phần quyền sử
dụng................................................................................................................5

1.3.1.1. Mã hoá..........................................................................................5

1.3.1.2. Các giải thuật mã hoá...................................................................6

1.3.1.3. Chứng thực người dùng.................................................................8

1.3.2. Bảo mật máy trạm..............................................................................10

1.3.3. Bảo mật truyền thông........................................................................11

1.3.4. Các công nghệ và kỹ thuật bảo mật..................................................12

1.3.5. Bảo mật ứng dụng.............................................................................13

Nhóm 12 Trang ii CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

1.3.6. Thống kê tài nguyên..........................................................................15

PHẦN 2: GIỚI THIỆU VỀ KỸ THUẬT SQL INJECTION VÀ MỘT SỐ VÍ


DỤ CÁC KỸ THUẬT CỦA SQL INJECTION..............................................16

2.1 Giới thiệu...................................................................................................16

2.2 Định nghĩa SQL Injection là gì?.............................................................16

2.3 Các dạng tấn công SQL Injection...........................................................17

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

2.3.2 Tấn công sử dụng câu lệnh SELECT................................................19

2.3.3 Tấn công sử dụng câu lệnh INSERT................................................20

PHẦN 3: PHÒNG TRÁNH TẤN CÔNG SQL INJECTION........................22

3.1 Đối với website (dành cho lập trình viên):............................................23

3.2 Đối với web server (dành cho quản trị mạng):.....................................23

3.3 Đối với database server (dành cho quản trị mạng):..............................23

3.4 Hạn chế bị phát hiện lỗi...........................................................................23

3.5 Phòng chống từ bên ngoài.......................................................................24

3.6 Cải thiện dữ liệu nhập vào.......................................................................25

3.7 Một số lời khuyên khác:.........................................................................26

3.8 Một số công cụ quét và kiểm tra lỗi SQL Injection hiệu quả...............26

KẾT LUẬN........................................................................................................28

TÀI LIỆU THAM KHẢO................................................................................29

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN...........................................30

Nhóm 12 Trang iii CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

DANH MỤC HÌNH ẢNH


Hình 1.1 Quá trình thăm dò vào một hệ thống mạng.....................................3
Hình 1.2 Quét trộm đối với cổng không hoạt động.........................................4
Hình 1.3 Đối với cổng hoạt động.......................................................................4
Hình 1.4 Quá trình mã hoá................................................................................5
Hình 1.5 Mô hình giải thuật băm......................................................................6
Hình 1.6 Giải thuật mã hoá đồng bộ/đối xứng.................................................7
Hình 1.7 Giải thuật mã hóa không đồng bộ/không đối xứng.........................8
Hình 1.8 Chứng thực bằng user và password..................................................8
Hình 1.9 Hoạt động của CHAP.........................................................................9
Hình 1.10 Mô hình tổng quát firewall............................................................12
Hình 1.11 Bảo mật bằng VPN..........................................................................13
Hình 1.12 Thống kê tài nguyên bằng Monitoring.........................................15
Hình 2.1 Mô hình tấn công SQL Injection......................................................16
Hình 2.2 Tấn công SQL Injection....................................................................17
Hình 2.3 Tấn công vượt qua kiểm tra đăng nhập..........................................18
Hình 2.4 website bị lỗi sau khi nhúng dấu ‘....................................................19
Hình 2.5 Một đoạn mã ví dụ tấn công bằng câu lệnh Insert.........................21
Hình 3.1 Phòng tránh tấn công SQL...............................................................22

Nhóm 12 Trang iv CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

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


Từ viết tắt. Ý nghĩa.
CERT Computer Emegency Respornse
Team
PIN Personal Identity Number
DNS Domain Name System
NIC Network Interface Card
IIS Internet Information Server
WML Wireless Markup Language.
CMS Content Management System.
SSO Single Sign On.
AOP Aspect Oriented Programming.
GUI Graphical User Interface.
CERT Computer Emegency Respornse Team

Nhóm 12 Trang v CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

LỜI MỞ ĐẦU
Cùng với sự phát triển của công nghệ thông tin, công nghệ mạng máy tính
và sự phát triển của mạng internet ngày càng phát triển đa dạng và phong phú.
Các dịch vụ trên mạng đã thâm nhập vào hầu hết các lĩnh vực trong đời sống xã
hội. Các thông tin trên Internet cũng đa dạng về nội dung và hình thức, trong đó
có rất nhiều thông tin cần được bảo mật cao hơn bởi tính kinh tế, tính chính xác
và tính tin cậy của nó.
Bên cạnh đó, các hình thức phá hoại mạng cũng trở nên tinh vi và phức tạp
hơn. Do đó đối với mỗi hệ thống, nhiệm vụ bảo mật được đặt ra cho người quản
trị mạng là hết sức quan trọng và cần thiết.
Những vụ tấn công nhằm vào tất cả các máy tính có mặt trên Internet, các
máy tính của công ty lớn, các trường đại học, các cơ quan nhà nước, các tổ chức
quan sự, nhà băng... Một số vụ tấn công có quy mô khổng lồ (có tới 100.000
máy tính bị tấn công ). Hơn nữa, nhưng con số này chỉ là phần nổi của tảng
băng. Một phần rất lớn các vụ tấn công không được thông báo, vì nhiều lý do,
trong đó có thể kể đến nỗi lo bị mất uy tín, hoặc đơn giản những người quản trị
hệ thông không hay biết những cuộc tấn công đang nhằm vào hệ thông của họ.
Với những công cụ tự động tìm lỗi hổng tuy giúp rất nhiều cho những nhà
lập trình web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ web đang
phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu tố tốc độ...)
nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong
khuổn khổ vài kĩ thuật đã phát hiện, mà linh động và tăng lên tùy vào những sai
sót của nhà quản trị hệ thống cũng như của những người lập trình.
Chính vì vậy, thông qua việc nghiên cứu phương pháp tấn SQL Injection
nhóm chúng tôi mong muốn góp một phần nhỏ vào việc nghiên cứu và tìm hiểu
về các vấn đề an ninh mạng giúp cho việc học tập và nghiên cứu.
Nhóm 12 xin chân thành cảm ơn sự hướng dẫn của ThS. Lê Tự Thanh đã
trực tiếp hướng dẫn đồ án và giúp nhóm có thể hoàn thành đồ án này.
Sau đây là nội dung đồ án:

Nhóm 12 Trang vi CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

PHẦN 1: TỔNG QUAN AN NINH MẠNG


1.1 Thực trạng an ninh trên Internet.
1.1.1 Thực trạng an ninh Internet thế giới.
Hệ thống quy mô lớn như Internet thì một khe hở hay lỗi hệ thống đều có
nguy cơ gây ra thiệt hại lớn.
Theo thống kê của CERT( Computer Emegency Respornse Team) thì các
vụ tấn công tăng gấp 2, thậm chí gấp 3 sau mỗi năm. Cụ thể như sau:
 Năm 1989: Có 200 vụ tấn công, truy nhập trên mạng được báo cáo.
 Năm 1991: 400 vụ được thống kê.
 Năm 1993: 1400 vụ.
 Năm 1994: 2241 vụ.
 Những năm hai nghìn: Con số được thống kê không chính thức là có
hang chục nghìn vụ tấn công và truy nhập Internet mỗi năm.
Số vụ tấn công ngày càng tăng, cùng với đó các phương thức tấn công cũng
biến hóa khôn lường.
1.1.2 Thực trạng an ninh Internet tại Việt Nam
Trong năm 2009, ở nước ta có hơn 1000 (1.037) website bị hacker tấn
công, tăng hơn gấp đôi so với năm 2008 (461 website ) và gấp 3 lần năm 2007
( 342 website ).
Trong 3 tháng đầu năm 2010 đã có hơn 300 website của các cá nhân tổ
chức có tên miền .vn bị hacker nước ngoài thăm dò và tấn công.
Lỗ hổng an ninh của các hệ thống ngày càng được phát hiện nhiều hơn
 Số lượng các điểm yếu an ninh trong năm 2009 là 4300 (năm 2008 là
3500) có tới 30% lỗ hổng có mức độ nguy hiểm cao.
Gần một nửa (49%) số lỗ hổng an ninh vẫn chưa có các bản vá do nhà
cung cấp dịch vụ phát hành.
 Ở nước ta vấn đề lỗ hổng của hệ thống vẫn chưa được quản trị hệ thống
cập nhật các bản vá kịp thời
Mạng Internet là môi trường có vô số các vụ tấn công. Nhìn chung có thể
chia các mối đe dọa an ninh đó thành 4 loại:

Nhóm 12 Trang 1 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Mất dữ liệu tích hợp: dữ liệu bị sửa chữa, thay thế khi truyền trên mạng.
Mất dữ liệu bảo mật: những người không có quyền cũng có thể đọc được
dữ liệu.
Từ chối dịch vụ: dịch vụ bị ngưng trệ bởi sự tấn công của Hacker.
Mất khả năng điều khiển: những người có quyền sử dụng dịch vụ không
thể tương tác được với dịch vụ.
Người sử dụng thường cố gắng tìm ra những lỗ hổng của phần mềm hoặc
là cấu hình lại hệ thống nhằm bảo đảm an toàn thông tin. Trong một số trường
hợp Hacker không muốn cho truy suất hệ thống bằng cách xây dựng một loạt
các thủ tục nhằm mục đích đưa ra thông báo “từ chối dịch vụ”.
Việc tấn công vào mạng sử dụng thông báo từ chối truy cập được thực hiện
bằng cách khiến cho phần mềm dịch vụ bị quá tải bởi phải xử lý quá nhiều yêu
cầu. Khi đó hệ thống sẽ trở nên rất bận và sẽ thiếu thời gian để làm việc khác do
đó buộc phải từ chối truy cập dịch vụ.
Tuy có nhiều cách để xâm nhập vào mạng nhưng một trong những cách dễ
dàng nhất là chặn dòng dữ liệu trao đổi giữa các thành viên trong mạng. Do
thông tin được truyền trong mạng dưới dạng văn bản thuần tuý nên việc rình bắt
thông tin sẽ giúp cho Hacker lấy được mật khẩu của mạng một cách dễ dàng.
Còn kiểu tấn công mạng nữa hay được sử dụng là giả dạng bằng cách giả
vờ là một người sử dụng có thẩm quyền của mạng thông qua việc giả lập địa chỉ
IP. Điều đáng nói ở đây là trong hầu hết các trường hợp, việc bảo đảm độ tin cậy
chỉ dựa trên một phía (qua password, hoặc PIN) mà những thông tin này lại rất
dễ bị sao chép. Do vậy để đảm bảo độ tin cậy, việc thiết lập độ tin cậy phải được
thực hiện từ hai phía bằng việc sử dụng một thẻ thông minh (smart card) kết hợp
với PIN (Personal Identity Number) nhằm tăng mức độ an toàn của mạng.
Một cách khác là tạo ra những phần mềm thông minh để truy xuất đến một
mạng đích nào đó thông qua việc lấy các thông tin thải loại ở trong sọt rác hoặc
trong đĩa mềm bỏ đi của người quản trị mạng. Kiểu này chỉ được áp dụng khi
mà Hacker liên quan khá mật thiết đến người điều hành mạng và do đó cũng rất
dễ truy tìm ra Hacker khi mạng bị tấn công.

Nhóm 12 Trang 2 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Còn một cách để Hacker xâm nhập vào mạng là sử dụng một tập hợp các
thông tin dễ ghi nhớ. Rất nhiều mạng sử dụng tên miền rất dễ nhớ như:
System01.Domain.Org. Bằng việc truy xuất qua server quản lý hệ tên miền
(DNS: Domain Name System), Hacker có thể thâm nhập vào mạng rất dễ dàng
bằng cách hướng yêu cầu của người sử dụng đến một server khác và lấy trộm
những thông tin cần thiết. Do đó để đảm bảo rằng người sử dụng truy xuất đúng
server cần phải bổ xung cả việc kiểm tra độ tin cậy đối với server. Điều này
được thực hiện bằng cách sử dụng chứng chỉ số trên server.
Để tránh việc gói tin bị thay thế khi truyền trên mạng, bắt buộc gói tin phải
được tích hợp trước khi truyền thông qua việc bổ xung một thông điệp băm.
Việc mã hoá của thông điệp này giúp cho thông điệp bảo đảm được độ chính
xác.
Trong hầu hết các trường hợp những cuộc tấn công vào mạng thành công
không phải do kỹ thuật mà do con người. Thay cho sử dụng kỹ thuật để đột phá
vào mạng, Hacker sẽ thử liên hệ với người nắm giữ thông tin mà họ cần,điều
khiển họ thông qua việc khai thác những thói quen của họ và như thế những
người này sẽ không thông báo về những thông tin bị rò gỉ bởi chính họ cho cấp
có thẩm quyền.
1.2 Các hình thức tấn công mạng hiện nay.
1.2.1. Quá trình thăm dò tấn công

Hình 1.1 Quá trình thăm dò vào một hệ thống mạng

Nhóm 12 Trang 3 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

1.2.1.1. Thăm dò (Reconnaissace)


Thăm dò mục tiêu là một trong những bước qua trọng để biết những thông
tin trên hệ thống mục tiêu. Hacker sử dụng kỹ thuật này để khám phá hệ thống
mục tiêu đang chạy trên hệ điều hành nào, có bao nhiêu dịch vụ đang chạy trên
các dịch vụ đó, cổng dịch vụ nào đang đóng và cổng nào đang mở, gồm hai loại:
 Passive: Thu thập các thông tin chung như vị trí địa lý, điện thoại, email
của các cá nhân, người điều hành trong tổ chức.
 Active: Thu thập các thông tin về địa chỉ IP, domain, DNS,… của hệ
thống
1.2.1.2. Quét hệ thống (Scanning)
Quét thăm dò hệ thống là phương pháp quan trọng mà Attacker thường
dùng để tìm hiểu hệ thống và thu thập các thông tin như địa chỉ IP cụ thể, hệ
điều hành hay các kiến trúc hệ thống mạng. Một vài phương pháp quét thông
dụng như: quét cổng, quét mạng và quét các điểm yếu trên hệ thống.

Hình 1.2 Quét trộm đối với cổng không hoạt động

Hình 1.3 Đối với cổng hoạt động


1.2.1.3. Chiếm quyền điều khiển (Gainning access)
o Mức hệ điều hành/ mức ứng dụng
o Mức mạng
o Từ chối dịch vụ

Nhóm 12 Trang 4 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

1.2.1.4. Duy trì điều khiển hệ thống (Maitaining access)


Upload/download biến đổi thông tin
1.2.1.5. Xoá dấu vết (Clearning tracks)
Sau khi bị tấn công thì hệ thống sẽ lưu lại những vết do attacker để lại.
Attacker cần xoá chúng đi nhằm tránh bị phát hiện.
1.3. Các biện pháp bảo mật mạng
1.3.1. Mã hoá, nhận dạng, chứng thực người dùng và phần quyền sử dụng
1.3.1.1. Mã hoá
Mã hoá là cơ chế chính cho việc bảo mật thông tin. Nó bảo vệ chắc chắn
thông tin trong quá trình truyền dữ liệu, mã hoá có thể bảo vệ thông tin trong
quá trình lưu trữ bằng mã hoá tập tin. Tuy nhiên người sử dụng phải có quyền
truy cập vào tập tin này, hệ thống mã hoá sẽ không phân biệt giữa người sử dụng
hợp pháp và bất hợp pháp nếu cả hai cùng sử dụng một key giống nhau. Do đó
mã hoá chính nó sẽ không cung cấp bảo mật, chúng phải được điều khiển bởi
key mã hoá và toàn bộ hệ thống.

Hình 1.4 Quá trình mã hoá


Mã hoá nhằm đảm bảo các yêu cầu sau:
o Tính bí mật (confidentiality): dữ liệu không bị xem bởi “bên thứ 3”.
o Tính toàn vẹn (Integrity): dữ liệu không bị thay đổi trong quá trình
truyền.

Nhóm 12 Trang 5 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Tính không từ chối (Non-repudiation): là cơ chế người thực hiện hành động
không thể chối bỏ những gì mình đã làm, có thể kiểm chứng được nguồn gốc
hoặc người đưa tin.
1.3.1.2. Các giải thuật mã hoá
 Giải thuật băm (Hashing Encryption)
Là cách thức mã hoá một chiều tiến hành biến đổi văn bản nhận dạng
(cleartext) trở thành hình thái mã hoá mà không bao giờ có thể giải mã. Kết quả
của tiến trình hashing còn được gọi là một hash (xử lý băm), giá trị hash (hash
value), hay thông điệp đã được mã hoá (message digest) và tất nhiên không thể
tái tạo lại dạng ban đầu.
Trong xử lý hàm băm dữ liệu đầu vào có thể khác nhau về độ dài, thế
nhưng độ dài của xử lý Hash lại là cố định. Hashing được sử dụng trong một số
mô hình xác thực password. Một giá trị hash có thể được gắn với một thông điệp
điện tử (electronic message) nhằm hỗ trợ tính tích hợp của dữ liệu hoặc hỗ trợ
xác định trách nhiệm không thể chối từ (non-repudiation).

Hình 1.5 Mô hình giải thuật băm


Một số giải thuật băm
o MD5 (Message Digest 5): giá trị băm 128 bit.
o SHA-1 (Secure Hash Algorithm): giá trị băm 160 bit.
 Giải thuật mã hoá đồng bộ/đối xứng (Symmetric)
Mã hoá đối xứng hay mã hoá chia sẻ khoá (shared-key encryption) là mô
hình mã hoá hai chiều có nghĩa là tiến trình mã hoá và giải mã đều dùng chung
một khoá. Khoá này phải được chuyển giao bí mật giữa hai đối tượng tham gia
giao tiếp. Có thể bẻ khoá bằng tấn công vét cạn (Brute Force).

Nhóm 12 Trang 6 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Hình 1.6 Giải thuật mã hoá đồng bộ/đối xứng


Cách thức mã hoá như sau:
o Hai bên chia sẻ chung 1 khoá (được giữ bí mật).
o Trước khi bắt đầu liên lạc hai bên phải trao đổi khoá bí mật cho nhau.
o Mỗi phía của thành phần liên lạc yêu cầu một khoá chia sẻ duy nhất,
khoá này không chia sẻ với các liên lạc khác.
Bảng dưới đây cho thấy chi tiết các phương pháp mã hóa đối xứng thông dụng.
Các loại mã hóa Đặc tính
Data Encryption Standard - Sử dụng một khối 64 bit hoặc một
(DES) khóa 56 bit.
- Có thể dễ dàng bị bẻ khóa.
Triple DES (3DES) - Áp dụng DES 3 lần.
- Sử dụng một khóa 168bit.
- Bị thay thế bởi AES.
Advanced Encryption Standard - Sử dụng Rhine doll có khả năng đề
(AES) kháng với tất cả tấn công đã biết.
- Dùng một khóa và khóa chiều dài có
thể thay đổi (128-192 hoặc 256 bit).
Giải thuật mã hóa không đồng bộ/không đối xứng (Asymmetric)
Mã hóa bất đối xứng, hay mã hóa khóa công khai(public-key encryption),
là mô hình mã hóa 2 chiều sử dụng một cặp khóa là khóa riêng (private key) và
khóa công (public keys). Thông thường, một thông điệp được mã hóa với
private key, và chắc chắn rằng key này là của người gửi thông điệp (message
sender). Nó sẽ được giải mã với public key, bất cứ người nhận nào cũng có thể
truy cập nếu họ có key này. Chú ý, chỉ có public key trong cùng một cặp khóa
mới có thể giải mã dữ liệu đã mã hóa với private key tương ứng. Và private key
thì không bao giờ được chia sẻ với bất kỳ ai và do đó nó giữ được tính bảo mật,
với dạng mã hóa này được ứng dụng trong chữ ký điện tử.

Nhóm 12 Trang 7 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Hình 1.7 Giải thuật mã hóa không đồng bộ/không đối xứng
Các giải thuật
o RSA (Ron Rivest, Adi Shamir, and Leonard Adleman).
o DSA (Digital Signature Standard).
o Diffie-Hellman (W.Diffie and Dr.M.E.Hellman).
1.3.1.3. Chứng thực người dùng
Là quá trình thiết lập tính hợp lệ của người dùng trước khi truy cập thông
tin trong hệ thống. Các loại chứng thực như:
 Username/password: Là loại chứng thực phổ biến nhất và yếu nhất của
chứng thực, username/password được giữ nguyên dạng chuyển đến Server.

Hình 1.8 Chứng thực bằng user và password


- Tuy nhiên phương pháp này xuất hiện những vấn đề như dễ bị đánh cắp
trong quá trình đến server.
- Giải pháp
o Đặt mật khẩu dài tối thiểu là tám kí tự, bao gồm chữ cái, số, biểu tượng.
o Thay đổi password: 01 tháng/lần.
 Không nên đặt cùng password ở nhiều nơi.
 Xem xét việc cung cấp password cho ai.
CHAP (Challenge Hanshake Authentication Protocol): Dùng để mã hóa
mật khẩu khi đăng nhập, dùng phương pháp chứng thực thử thách/hồi đáp. Định

Nhóm 12 Trang 8 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

kỳ kiểm tra lại các định danh của kết nối sử dụng cơ chế bắt tay 3 bước và thông
tin bí mật được mã hóa sử dụng MD5. Hoạt động của CHAP như sau:

Hình 1.9 Hoạt động của CHAP


Kerberos
Kerberos là một giao thức mật mã dùng để xác thực trong các mạng máy
tính hoạt động trên những đường truyền không an toàn. Giao thức Kerberos có
khả năng chống lại việc nghe lén hay gửi lại các gói tin cũ và đảm bảo tính toàn
vẹn của dữ liệu. Mục tiêu khi thiết kế giao thức này là nhằm vào mô hình máy
chủ-máy khách (client-server) và đảm bảo nhận thực cho cả hai chiều.
Kerberos hoạt động sử dụng một bên thứ ba tham gia vào quá trình nhận
thực gọi là key distribution center – KDC (KDC bao gồm hai chức năng: "máy
chủ xác thực" (authentication server - AS) và "máy chủ cung cấp vé" (ticket
granting server - TGS). "Vé" trong hệ thống Kerberos chính là các chứng thực
chứng minh nhận dạng của người sử dụng.). Mỗi người sử dụng trong hệ thống
chia sẻ một khóa chung với máy chủ Kerberos. Việc sở hữu thông tin về khóa
chính là bằng chứng để chứng minh nhận dạng của một người sử dụng. Trong
mỗi giao dịch giữa hai người sử dụng trong hệ thống, máy chủ Kerberos sẽ tạo
ra một khóa phiên dùng cho phiên giao dịch đó.
Chứng chỉ (Certificates)
Một Server (Certificates Authority - CA) tạo ra các certificates.
Có thể là vật lý: smartcard
Có thể là logic: chữ ký điện tử

Nhóm 12 Trang 9 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Sử dụng public/private key (bất cứ dữ liệu nào được mã hóa bằng public
key chỉ có thể giải mã bằng private key). Sử dụng “công ty thứ 3” để chứng
thực. Được sử dụng phổ biến trong chứng thực web, smart cards, chữ ký điện tử
cho email và mã hóa email.
- Nhược điểm
 Triển khai PKI (Public Key Infrastructure) kéo dài và tốn kém.
 Smart cards làm tăng giá triển khai và bảo trì.
 Dịch vụ CA tốn kém.
 Sinh trắc học
Có thể dùng các phương pháp sau: mống mắt/võng mạc, vân tay, giọng nói.
Ưu điểm của phương pháp này rất chính xác, thời gian chứng thực nhanh, tuy
nhiên giá thành cao cho phần cứng và phần mềm, việc nhận diện có thể bị sai
lệch.
Kết hợp nhiều phương pháp (Multi-factor)
Sử dụng nhiều hơn một phương pháp chứng thực như: mật khẩu/ PIN, smart
card, sinh trắc học, phương pháp này nhằm tạo sự bảo vệ theo chiều sâu với
nhiều tầng bảo vệ khác nhau.
Ưu điểm: làm giảm sự phụ thuộc vào password, hệ thống chứng thực
mạnh hơn và cung cấp khả năng cho Public Key Infrastructure (PKI).
Nhược điểm: tăng chi phí triển khai, tăng chi phí duy trì, chi phí nâng
cấp
1.3.2. Bảo mật máy trạm
Sự kiểm tra đều đặn mức bảo mật được cung cấp bởi các máy chủ phụ
thuộc chủ yếu vào sự quản lý. Mọi máy chủ ở trong một công ty nên được kiểm
tra từ Internet để phát hiện lỗ hổng bảo mật. Thêm nữa, việc kiểm tra từ bên
trong và quá trình thẩm định máy chủ về căn bản là cần thiết để giảm thiểu tính
rủi ro của hệ thống, như khi firewall bị lỗi hay một máy chủ, hệ thống nào đó bị
trục trặc.
Hầu hết các hệ điều hành đều chạy trong tình trạng thấp hơn với mức bảo
mật tối thiểu và có rất nhiều lỗ hổng bảo mật. Trước khi một máy chủ khi đưa

Nhóm 12 Trang 10 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

vào sản xuất, sẽ có một quá trình kiểm tra theo một số bước nhất định. Toàn bộ
các bản sửa lỗi phải được cài đặt trên máy chủ, và bất cứ dịch vụ không cần thiết
nào phải được loại bỏ. Điều này làm tránh độ rủi ro xuống mức thấp nhất cho hệ
thống.
Việc tiếp theo là kiểm tra các log file từ các máy chủ và các ứng dụng.
Chúng sẽ cung cấp cho ta một số thông tin tốt nhất về hệ thống, các tấn công
bảo mật. Trong rất nhiều trường hợp, đó chính là một trong những cách để xác
nhận quy mô của một tấn công vào máy chủ.
1.3.3. Bảo mật truyền thông
Tiêu biểu như bảo mật trên FTP, SSH..
 Bảo mật truyền thông FTP
FTP là giao thức lớp ứng dụng trong bộ giao thức TCP/IP cho phép truyền
dữ liệu chủ yếu qua port 20 và nhận dữ liệu tại port 21, dữ liệu được truyền dưới
dạng clear-text, tuy nhiên nguy cơ bị nghe lén trong quá trình truyền file hay lấy
mật khẩu trong quá trình chứng thực là rất cao, thêm vào đó user mặc định
Anonymous không an toàn tạo điều kiện cho việc tấn công tràn bộ đệm.
Biện pháp đặt ra là sử dụng giao thức S/FTP (S/FTP = FTP + SSL/TSL) có
tính bảo mật vì những lí do sau:
o Sử dụng chứng thực RSA/DSA .
o Sử dụng cổng TCP 990 cho điều khiển, cổng TCP 989 cho dữ liệu.
o Tắt chức năng Anonymous nếu không sử dụng.
o Sử dụng IDS để phát hiện tấn công tràn bộ đệm.
o Sử dụng IPSec để mã hóa dữ liệu.
 Bảo mật truyền thông SSH
SSH là dạng mã hóa an toàn thay thế cho telnet, rlogin..hoạt động theo mô
hình client/server và sử dụng kỹ thuật mã hóa public key để cung cấp phiên mã
hóa, nó chỉ cung cấp khả năng chuyển tiếp port bất kỳ qua một kết nối đã được
mã hóa. Với telnet hay rlogin quá trình truyền username và password dưới dạng
cleartext nên rất dễ bị nghe lén, bằng cách bắt đầu một phiên mã hóa.

Nhóm 12 Trang 11 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Khi máy client muốn kết nối phiên an toàn với một host, client phải bắt đầu
kết nối bằng cách thiết lập yêu cầu tới một phiên SSH. Một khi server nhận
dược yêu cầu từ client, hai bên thực hiện cơ chế three-way handshake trong đó
bao gồm việc xác minh các giao thức, khóa phiên sẽ được thay đổi giữa client và
server, khi khóa phiên đã trao đổi và xác minh đối với bộ nhớ cache của host
key, client lúc này có thể bắt đầu một phiên an toàn
1.3.4. Các công nghệ và kỹ thuật bảo mật
 Bảo mật bằng firewall
Là một hàng rào giữa hai mạng máy tính, nó bảo vệ mạng này tránh khỏi
sự xâm nhập từ mạng kia, đối với những doang nghiệp cỡ vừa là lớn thì việc sử
dụng firewall là rất cần thiết, chức năng chính là kiểm soát luồng thông tin giữa
mạng cần bảo vệ và Internet thông qua các chính sách truy cập đã được thiết lập.
Firewall có thể là phần cứng, phần mềm hoặc cả hai. Tất cả đều có chung
một thuộc tính là cho phép xử lý dựa trên địa chỉ nguồn, bên cạnh đó nó còn có
các tính năng như dự phòng trong trường hợp xảy ra lỗi hệ thống.

Hình 1.10 Mô hình tổng quát firewall


Do đó việc lựa chọn firewall thích hợp cho một hệ thống không phải là dễ dàng.
Các firewall đều phụ thuộc trên một môi trường, cấu hình mạng, ứng dụng cụ

Nhóm 12 Trang 12 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

thể. Khi xem xét lựa chọn một firewall cần tập trung tìm hiểu tập các chức năng
của firewall như tính năng lọc địa chỉ, gói tin..
Bảo mật bằng VPN (Virtual Private Network)
VPN là một mạng riêng ảo được kết nối thông qua mạng công cộng cung
cấp cơ chế bảo mật trong một môi trường mạng không an toàn. Đặc điểm của
VPN là dữ liệu trong quá trình truyền được mã hóa, người sử dụng đầu xa được
chứng thực, VPN sử dụng đa giao thức như IPSec, SSL nhằm tăng thêm tính bảo
mật của hệ thống, bên cạnh đó tiết kiệm được chi phí trong việc triển khai.

Hình 1.11 Bảo mật bằng VPN


 Bảo mật bằng IDS (Phát hiện tấn công)
IDS (Intrusion Detection System) là hệ thống phát hiện xâm nhập, hệ thống
bảo mật bổ sung cho firewall với công nghệ cao tương đương với hệ thống
chuông báo động được cấu hình để giám sát các điểm truy cập có thể theo dõi,
phát hiện sự xâm nhập của các attacker. Có khả năng phát hiện ra các đoạn mã
độc hại hoạt động trong hệ thống mạng và có khả năng vượt qua được firewall.
Có hai dạng chính đó là network based và host based
1.3.5. Bảo mật ứng dụng
 Hệ thống thư điện tử
Thư điện tử hay email là một hệ thống chuyển nhận thư từ qua các mạng
máy tính, là một phương tiện thông tin rất nhanh. Một mẫu thông tin (thư từ) có
thể được gửi đi ở dạng mã hoá hay dạng thông thường và được chuyển qua các
mạng máy tính đặc biệt là mạng Internet. Nó có thể chuyển mẫu thông tin từ
một máy nguồn tới một hay rất nhiều máy nhận trong cùng lúc.
Ngày nay, email chẳng những có thể truyền gửi được chữ, nó còn có thể
truyền được các dạng thông tin khác như hình ảnh, âm thanh, phim, và đặc biệt
Nhóm 12 Trang 13 CCMM03A
Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

các phần mềm thư điện tử kiểu mới còn có thể hiển thị các email dạng sống
động tương thích với kiểu tệp HTML.
o Gửi: giao* thức SMTP (TCP 25)
- Nhận: giao thức POP3/IMAP (TCP 110/143)
Lợi ích của thư điện tử như tốc độ di chuyển cao, chi phí rẻ và tiện lợi. Tuy
nhiên có những vấn đề về bảo mật, spam mail, sự lây lan của virus, trojan..
 Bảo vệ hệ thống email
 Sử dụng S/MIME nếu có thể
 Cấu hình Mail Server tốt, không bị open relay
 Ngăn chặn Spam trên Mail Server
 Cảnh giác với email lạ
 Bảo mật ứng dụng Web
o Web traffic: Sử dụng giao thức bảo mật SSL/TSL để mã hóa thông tin
giữa Client và Server, hoạt động tầng Transport, sử dụng mã hóa không đối
xứng và MD5, sử dụng Public Key để chứng thực và mã hóa giao dịch giữa
Client và Server và TSL bảo mật tốt hơn.
Vấn đề đặt ra là trong quá trình chứng thực cả Client và Server đều phải
cần triển khai PKI, ảnh hưởng đến Performance, việc triển khai tiềm tàng một số
vấn đề: phương thức triển khai, cấu hình hệ thống, lựa chọn phần mềm.
o Web Client: Trong mô hình client/server, máy client là một máy trạm mà
chỉ được sử dụng bởi 1 người dùng với để muốn thể hiện tính độc lập cho nó.
Các điểm yếu của Client như JavaScript, ActiveX, Cookies, Applets.
o Web Server: Server cung cấp và điều khiển các tiến trình truy cập vào
tài nguyên của hệ thống. Vai trò của server như là một nhà cung cấp dịch vụ cho
các clients yêu cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền file,
hệ thống... Các lỗi thường xảy ra trong WEB Server: lỗi tràn bộ đệm, CGI/
Server Script và HTTP, HTTPS

1.3.6. Thống kê tài nguyên

Nhóm 12 Trang 14 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Hình 1.12 Thống kê tài nguyên bằng Monitoring


Là khả năng kiểm soát (kiểm kê) hệ thống mạng, bao gồm:
 Logging: Ghi lại các hoạt động phục vụ cho việc thống kê các sự kiện
trên mạng. Ví dụ muốn kiểm soát xem những ai đã truy cập file server, trong
thời điểm nào, làm gì (Event Viewer).
 Scanning: Quét hệ thống để kiểm soát những dịch vụ gì đang chạy trên
mạng, phân tích các nguy cơ của hệ thống mạng. Ví dụ Task manager.
 Monitoring: Phân tích logfile để kiểm tra các tài nguyên mạng được sử
dụng như thế nào. Ví dụ các syslog server.

Nhóm 12 Trang 15 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

PHẦN 2: GIỚI THIỆU VỀ KỸ THUẬT SQL INJECTION VÀ


MỘT SỐ VÍ DỤ CÁC KỸ THUẬT CỦA SQL INJECTION.
2.1 Giới thiệu
- Khi các bạn triển khai các ứng dụng Website trên mạng Internet, theo bạn
việc bảo mật website cần phải có là gì ? Chắc hẳn bạn sẽ nghĩ rằng việc đảm bảo
an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tấn công từ các tin tặc chỉ
đơn thuần là việc bạn tập trung vào những việc chọn các hệ điều hành,thiết bị
phần cứng , hệ quản trị cơ sở dữ liệu, các công cụ hỗ trợ ứng dụng webstie cho
bạn ….. không những bạn mà có rất nhiều người vẫn nghĩ như thế , mà quên mất
rằng bản thân của ứng dụng cũng tiềm ẩn 1 lỗ hỏng bảo mật vì không có phần
mềm nào là tuyệt đối cả..

Hình 2.1 Mô hình tấn công SQL Injection.


- Tại Việt Nam, các quản trị website hay gọi là Webmaster – họ rất lơ là
trong việc quét virus webserver , cập nhập những bản vá lỗi cho phần mềm của
hệ thống hay các ứng dụng , đó cũng chính là lý do vì sao vừa qua có rất nhiều
website Việt Nam bị tấn công hầu hết đều là lỗi SQL Injection.
2.2 Định nghĩa SQL Injection là gì?
- Bạn có thể đơn giản là như thế này: SQL Injection là 1 kỹ thuật cho phép
những kẻ tấn công lợi dụng vào lổ hỏng trong việc kiểm tra các dữ liệu trong các

Nhóm 12 Trang 16 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

ứng dụng website và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm
vào" (inject) và thi hành các câu lệnh SQL bất hợp pháp (do người viết phần
mềm ứng dụng họ không lường trước ). Hậu quả của nó rất tai hại vì nó cho
phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … trực
tiếp trên ứng dụng như là 1 người quản trị, do có toàn quyền trên cơ sở dữ liệu
của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy.
- Lỗi này thường xảy ra trên các ứng dụng website có dữ liệu được quản lí
bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2,
Sysbase.
2.3 Các dạng tấn công SQL Injection.
PCó bốn dạng thông thường bao gồm:
 Vượt qua kiểm tra lúc đăng nhập (Aauthorization bypass)
 Sử dụng câu lệnh SELECT
 Sử dụng câu lệnh INSERT
Sử dụng các stored-procedures

Hình 2.2 Tấn công SQL Injection.


2.3.1 Dạng tấn công vượt qua kiểm tra đăng nhập.
- Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng
nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng
dụng web.
Nhóm 12 Trang 17 CCMM03A
Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

- Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng
nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực
hiện tiếp.

Hình 2.3 Tấn công vượt qua kiểm tra đăng nhập
- Thoạt nhìn, đoạn mã trong trang execlogin.asp dường như không chứa bất
cứ một lỗ hổng về an toàn nào. Người dùng không thể đăng nhập mà không có
tên đăng nhập và mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an
toàn và là tiền đề cho một lỗi SQL injection. Đặc biệt, chỗ sơ hở nằm ở chỗ dữ
liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL.
Chính điều này cho phép những kẻ tấn công có thể điều khiển câu truy vấn sẽ
được thực hiện.

Nhóm 12 Trang 18 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

- Ví dụ: Nếu hacker nhập vào chuỗi ' OR 1=1 Câu truy vấn sẽ là:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR 1=1 and
USR_PASSWORD= ‘' OR 1=1
1.Kiểm tra USR_NAME =‘’ đúng hay sai ?--> Sai
2.Kiêm tra 1=1 đúng hay sau --> Đúng
3. Kiểm tra USR_PASSWORD =‘’ đúng hay sai ?--> Sai
4.Kiêm tra 1=1 đúng hay sau --> Đúng
P (1) or (2) -> Đúng , (3) or (4) -> Đúng
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và
đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người
dùng đăng nhập hợp lệ.
- Tương tự như vậy, hacker có thể lợi dụng và làm những điều tồi tệ hơn
trên chính website của bạn …
2.3.2 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 lỗi từ
hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công.
- Xét một ví dụ rất thường gặp trong các website về tin tức. Thông thường,
sẽ có một trang nhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin
có ID này. Ví dụ:
http://www.mysite.com/shownews.asp?ID=123
Lúc này Hacker sẽ thêm dấu nháy đơn ‘ sau link, nếu có lỗi thì site sẽ báo
như thế này:

Nhóm 12 Trang 19 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Hình 2.4 website bị lỗi sau khi nhúng dấu ‘


Khi đó hacker sẽ lợi dụng lỗi của site sẽ khai thác và lấy thông tin như :
table, columns …, hoặc hiệu chỉnh, xóa dữ liệu bằng các câu lệnh SQL .
Tấn công kiểu select này tuy phức tạp nhưng thường được hacker sử
dụng, hacker thường khai thác lỗi này để lấy cắp tài khoản chùa hoặc chiếm
quyền Admin của một website nào đó.
Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL
để nhập vào trường tên tác giả bằng chuỗi giá trị:
‘ UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '='
(*)
Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực
hiện thêm lệnh tiếp theo sau từ khóa UNION nữa.
Tất nhiên các ví dụ nói trên, dường như không có gì nguy hiểm, nhưng
hãy thử tưởng tượng kẻ tấn công có thể xóa toàn bộ cơ sở dữ liệu bằng cách
chèn vào các đoạn lệnh nguy hiểm như lệnh DROP
TABLE. Ví dụ như: ' DROP TABLE T_AUTHORS --
2.3.3 Tấn công sử dụng câu lệnh INSERT
- Thông thường các ứng dụng web cho phép người dùng đăng kí 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.
- Một câu lệnh INSERT có thể có cú pháp dạng:
INSERT INTO TableName

Nhóm 12 Trang 20 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

VALUES('Value One', 'Value Two', 'Value Three').


- Nếu hacker nhập vào tại: Value One chuỗi:
‘ + SELECT TOP 1 FieldName FROM TableName + ’
- Lúc này câu truy vấn sẽ là:
INSERT INTO TableName
VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc',
'def')
- Lúc thực hiện lệnh xem thông tin, xem như bạn đã yêu cầu thực hiện thêm
một lệnh nữa đó là:
SELECT TOP 1 FieldName FROM TableName
Vậy tất cả những dữ liệu nằm trên website của bạn, hacker đều có thể lấy cắp
được.

<%
strSQL = "INSERT INTO TableName VALUES(' " &
strValueOne & " ', ' " _
& strValueTwo & " ', ' " &
strValueThree & " ') "

Set objRS = Server.CreateObject("ADODB.Recordset")


objRS.Open strSQL, "DSN=..."

Set objRS = Nothing
%>

Hình 2.5 Một đoạn mã ví dụ tấn công bằng câu lệnh Insert.
2.3.4 Dạng tấn công Stored – Procedures
- Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứ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: '.

Nhóm 12 Trang 21 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

- 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.

Nhóm 12 Trang 22 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

PHẦN 3: PHÒNG TRÁNH TẤN CÔNG SQL INJECTION.


Lỗi SQL Injection là khá nguy hiểm vì thế việc phòng tránh là rất cần thiết.
Lọc bỏ các ký tự và từ khóa nguy hiểm như: -- , select , where , drop,
shutdown …
Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là
bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng
Request (Request, Request.QueryString),
Request.Form, Request.Cookies, and Request.ServerVariables).
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.
- 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.

Hình 3.1 Phòng tránh tấn công SQL.

Nhóm 12 Trang 23 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

3.1 Đối với website (dành cho lập trình viên):


Cần kiểm tra tính đúng đắn của tất cả dữ liệu đầu vào. Dữ liệu đầu vào
không chỉ là các tham số, mà bao gồm cả cookie, user agent, referer …
Việc kiểm tra tính đúng đắn của dữ liệu có thể dựa trên các phương pháp
sau:
- Kiểm tra dựa vào kiểu dữ liệu (số, ngày tháng …)
- Kiểm tra, giới hạn độ dài đầu vào
- -Loại bỏ các ký tự đặc biệt như: ‘ % ” ? # @ & …
- -Loại bỏ các từ đặc biệt: select, drop, delete, information_schemal, insert,
union, xp_ …
3.2 Đối với web server (dành cho quản trị mạng):
Hầu hết các máy chủ web (web server) hiện nay đều có các module hỗ trợ
việc phòng chống SQL Injection, ví dụ:
Apache có modsecurity, IIS có URLScan. Bạn chỉ cần bật tính năng này và
cấu hình cho phù hợp. Nếu website của bạn là dạng trang tin tức thì rất phù hợp
để triển khai. Trong một số trường hợp khác, các module này có thể chặn nhầm,
dẫn tới website hoạt động không chính xác.
3.3 Đối với database server (dành cho quản trị mạng):
Bạn cần thực hiện việc cấu hình phân quyền chặt chẽ đối với các tài khoản.
Khi đó, dù tồn tại lỗi SQL Injection, thiệt hại cũng sẽ được hạn chế. Ngoài ra,
bạn cần loại bỏ các bảng, thành phần và tài khoản không cần thiết trong hệ
thống.
3.4 Hạn chế bị phát hiện lỗi.
Attacker dựa vào những lỗi trong lập trình ứng dụng để tấn công và cụ thể
attacker dựa vào các dấu hiệu để phát hiện ứng dụng bị lỗi. Vậy việc làm cho
các dấu hiệu đó bị che đi, trở nên khó hiểu hơn, hoặc biến mất…được hầu hết
các chuyên gia bảo mật sử dụng. Lưu ý là kĩ thuật này chỉ dùng để dấu lỗi, còn
lỗi trên ứng dụng vẫn còn đó, chỉ là để chống lại sự phát hiện quá dễ dàng lỗi để
kẻ xấu khai thác.

Nhóm 12 Trang 24 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Nhưng những attacker khôn khéo vẫn có thể nhìn thấu được kiểu phòng
chống như thế này. Nó có thể tránh được những tấn công đơn giản như là thêm
dấu ‘(dấu nháy) vào cuối đường dẫn. Vì phương pháp tìm kiếm ứng dụng bị lỗi
của những tấn công như thế dựa vào những dấu hiệu trả về của ứng dụng hoặc
trực tiếp từ database. Ta có thể chỉ đưa ra những thông báo chung chung hoặc
định hướng trở lại trang ban đầu(redirect). Trong trường hợp này, công việc tìm
kiếm lỗi và xác định mục tiêu trở nên cực khó đối với attacker.
Tuy nhiên attacker luôn tạo ra những công nghệ tìm kiếm lỗi tinh vi hơn,
tốt hơn, để gián tiếp xác định dấu hiệu trả về. Tấn công kiểu này còn được gọi là
“Blind SQL Injection”
3.5 Phòng chống từ bên ngoài.
Giải pháp này sẽ dùng tường lửa đặc biệt để bảo vệ bạn khỏi những ứng
dụng dùng việc truy cập database với mục đích xấu. Chúng ta cần lưu ý rằng
attacker tương tác với ứng dụng web thông qua một trình duyệt với kết nối từ
xa. Sau đó, ứng dụng gởi yêu cầu đến database. Như vậy chúng ta có thể ngăn
chặn các tấn công giữa attacker với ứng dụng, giữa ứng dụng với database và
ngay cả trên chính bản thân database đó.
Một số phương pháp phòng chống có thể thực hiện như:

Nhóm 12 Trang 25 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Những bộ lọc, bộ quét và những điểu khiển truy cập cơ sở dữ liệu sẽ làm
cho ứng dụng web khó bị tấn công hơn.
3.6 Cải thiện dữ liệu nhập vào.
Cách phòng chống thực sự để chống lại SQL Injection là kiểm tra và làm
đúng các câu truy vấn. Như chúng ta đã đề cập, lỗi này là do ứng dụng không
kiểm tra dữ liệu nhập vào của người dùng. Do đó người dùng có thể thay đổi,
chỉnh sửa, tham số hoặc thêm cả một thực thể truy vấn vào câu lệnh. Vì thế mỗi
dữ liệu nhập của người dùng cần được theo dõi và có những ràng buộc nhất
định.
Thứ nhất, ứng dụng cần phân loại các kiểu dữ liệu nhập vào. Ví dụ, nếu
ứng dụng yêu cầu dữ liệu nhập vào là kiểu số thì khi ứng dụng nhận dữ liệu
nhập vào không nên chấp nhận các kiểu khác ngoại trừ kiểu số. Một số hàm
kiểm tra trong PHP:
is_numeric($str) : kiểm tra $str có phải kiểu số hay không
is_int($str) :kiểm tra kiểu interger
is_float($str) :kiểm tra kiểu số thực

Thứ 2, nếu dữ liệu nhập vào không rõ kiểu gì thì ít nhất cũng phải xác định
những kiểu không được phép có thể được gọi. Trong trường hợp này chúng ta sẽ
phải lọc các dấu nháy, lệnh, các kí tự đặc biệt. Một vài việc lọc dữ liệu có thể
thực hiện trên toàn bộ ứng dụng( như không bao giờ lưu dữ liệu có dấu ‘ vào cơ
sở dữ liệu) và trên một vài kiểu dữ liệu nhập vào( như không có dấu “,” trong
địa chỉ mail).VD:
magic_quotes_gpc
GPC=GET,POST,COOKIE) Hàm sẽ kiểm
tra các dữ liệu thuộc 3 loại trên và khi phát
hiện có các dấu ‘ (single-quote), ” (double
quote),

\ (backslash) thì sẽ tự động thêm vào dấu \


(backslash) ngay trước nó:

<?php

echo get_magic_quotes_gpc(); // 1

Nhóm 12 Trang 26 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

Trong khi viết một cơ sở dữ liệu hướng ứng dụng, hay khi triển khai một
ứng dụng mã nguồn mở cần chú ý đến các vấn đề như thế và thiết kế để xác
minh đúng đầu vào. Biện pháp này sẽ giúp bảo vệ bạn từ các tấn công SQL
Injection không trở thành mồi ngon cho các attacker.
Hiểu biết về cách phòng chống này là rất quan trọng nếu bạn đang triển
khai một ứng dụng thương mại. Chỉ cần nhớ rằng các nhà phát triển có khả năng
vướng lỗi khi lập trình và bạn sẽ phải thực hiện các bước để sửa các lỗi đó. Và
cần làm điều này ngay cả khi chưa có những lỗ hổng được công khai cho ứng
dụng đó
3.7 Một số lời khuyên khác:
- Bạn cần tắt tất cả các thông báo lỗi không cần thiết của web server.
Hacker có thể lợi dụng chính các thông báo lỗi này để khai thác thông tin của hệ
thống, phục vụ cho một cuộc tấn công SQL Injection.
- Bạn cần bật các chế độ ghi log đầy đủ để phục vụ việc điều tra phát hiện
cuộc tấn công và giải quyết sự cố.
- Bạn cần thường xuyên theo dõi và cập nhật phiên bản cho platform của
website (hệ điều hành, web server, database server…).
3.8 Một số công cụ quét và kiểm tra lỗi SQL Injection hiệu quả.
Acunetix Web Vulnerability Scanner:Một phiên bản thương mại của chương
trình tìm kiếm các lỗ hổng bảo mật trên các ứng dụng Web. Acunetix WVS tự
động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL
Injection, hay Cross-Site Scripting, tìm kiếm những chính sách đối với mật khẩu
đăng nhập cũng như các phương thức xác thực vào Web Site. Với giao diện đồ
họa thân thiện, những Report đầy đủ cho phép bạn kiểm tra những vấn đề trên
máy chủ và ứng dụng Web. Để tìm hiểu rỏ hơn các bạn có thể truy cập vào
http://www.acunetix.com/vulnerability-scanner/ để tải về.
N-Stealth: Là một phiên bản thương mại, ứng dụng cho việc tìm kiếm các
lỗ hổng bảo mật trên máy chủ Web. Phần mềm tự động update thường xuyên
hơn các phần mềm miễn phí như Whisker/libwhisker hay Nikto, nhưng nhiều lỗi
mới trên Web cũng không phát hiện kịp thời và nhanh chóng. Phần mềm bao

Nhóm 12 Trang 27 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

gồm hơn 30.000 lỗ hổng có thể Scan và khai thác trực tiếp, cùng với hàng tá
những cập nhật hàng ngày. Dễ dàng triển khai kết hợp với những Scan lỗ hổng
bảo mật như: SQL Injection, Nessus, ISS Internet Scanner, Retina, SAINT và
Sara, bao gồm các tính năng khác. N-sealth là phiên bản chỉ dành riêng cho
Windows và không thể download Source .
Trang chủ: http://www.nstalker.com/products/fre…d-free-edition

Nhóm 12 Trang 28 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

KẾT LUẬN
An ninh mạng và những phương pháp tấn công trên Internet đang phát triển
rất nhanh chóng, ngày càng hoạt động phức tạp và quy mô , làm tổn hại và tạo ra
một cái nhìn “không tích cực” cho các ứng dụng mạnh mẽ của Internet , gây tổn
thất nghiêm trọng đối với các ứng dụng và hoạt động Internet.
Đối với SQL Injection, là phương pháp tấn công phổ biến nhất hiện nay,
được các Hackers sử dụng khá nhiều để tấn công các trang website.
Đồ án đã nêu được các hình thức tấn công phổ biến của SQL Injection. Đưa
ra các vấn đề thực tế và phương pháp phòng chống được hiệu quả. Tuy nhiên,
qua thời gian nghiên cứu đề tài kết hợp với các kiến thức đã học ở nhà trường đã
giúp em tìm hiểu các khía cạnh của vấn đề. Song do thời gian và trình độ có hạn
nên chắc chắn khóa luận của em không tránh khỏi những thiếu sót.
Em rất mong nhận được sự quan tâm đóng góp ý kiến và chỉ bảo của thày
cô.
Em xin chân thành cảm ơn các thầy!

Nhóm 12 Trang 29 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

TÀI LIỆU THAM KHẢO


Tài liệu Internet.
[1] Danh sách các website bị lỗi SQL injection: http://www.security.com.vn/
[2] SQL Injection FAQ: http://www.sqlsecurity.com/DesktopDefault.aspx?
tabindex=2&tabid=3
[3]Advanced SQL Injection :
http://www.nextgenss.com/papers/advanced_sql_injection.pdf
[4]Preventing SQL Injection:
http://www.owasp.org/asac/input_validation/sql.shtml
[5] SQL Injection Attacks - Are You Safe? http://www.sitepoint.com/article/794
Tài liệu tiếng Việt.
[6] Bộ dịch slide CEH của lớp MM03A.

Nhóm 12 Trang 30 CCMM03A


Đồ án môn học an ninh mạng Tìm hiểu về an ninh mạng và kỹ thuật SQL Injection

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN


.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Đà Nẵng, ngày ….tháng….năm 20….
GVHD

Nhóm 12 Trang 31 CCMM03A

You might also like