5
MỤC LỤC
LỜI CAM ĐOAN ............................................................................................................1
LỜI CẢM ƠN..................................................................................................................4
DANH MỤC BẢNG BIỂU .............................................................................................6
DANH MỤC HÌ NH VẼ ..................................................................................................7
CHƢƠNG 1 GIỚI THIỆU ............................................................................................11
1.1. Tính cấp thiết của đề tài.......................................................................................11
1.2. Mục tiêu đề tài .....................................................................................................11
1.3. Bố cục luận văn ...................................................................................................12
1.4. Tổng quan về vấn đề bảo mật trên nền Web .......................................................12
1.5. Một số nguyên nhân phổ biến cho ƣ́ng dụng Web mất tí nh an toàn ...................13
1.6. Thống kê các loại tấn công ..................................................................................13
CHƢƠNG 2 MỘT SỐ NGUY CƠ AN NINH THƢỜNG GẶP...................................15
2.1. Tấn công DoS ......................................................................................................15
2.1.1. Giới thiệu về DoS............................................................................................15
2.1.2. Mục đích và các dạng tấn công DoS ...............................................................15
2.1.3. Tấn công DDoS ...............................................................................................18
2.2. Cross-Site Scripting (XSS) ..................................................................................20
2.2.1. Tổng quan về XSS ..........................................................................................20
2.2.2. Ảnh hƣởng do XSS gây ra ..............................................................................21
2.2.3. Phân loại ..........................................................................................................21
2.2.4. Cách phát hiện ra sâu XSS ..............................................................................24
2.2.5. Các phƣơng pháp ngăn chặn lỗ hổng bảo mật XSS ........................................24
2.3. Tổng quan SQL Injection ....................................................................................25
2.3.1. Định nghĩa .......................................................................................................25
2.3.2. Các kỹ thuật tấn công SQL Injection ..............................................................25
2.3.3. Những ảnh hƣởng gây ra của SQL Injection ..................................................28
2.3.4. Các phƣơng pháp phòng chống SQL Injection phổ biến ................................29
CHƢƠNG 3 MỘT SỐ CÔNG CỤ PHÁT HIỆN NGUY CƠ AN NINH .....................30
3.1. Netsparker ............................................................................................................30
3.2. Websecurify .........................................................................................................31
3.3. Acunetix ...............................................................................................................34
6
3.4. WebScarab ...........................................................................................................42
3.5. Havij .....................................................................................................................43
3.6. Burp Suite ............................................................................................................45
3.7. Wapiti ...................................................................................................................47
3.8. Exploit-Me ...........................................................................................................48
3.9. W3af .....................................................................................................................49
3.10. Công cụ tấn công DoS .......................................................................................51
CHƢƠNG 4 THỰC NGHIỆM VÀ PHÂN TÍCH KẾT QUẢ ......................................54
4.1. Acunetix ..............................................................................................................54
4.1.1. Thực nghiệm ...................................................................................................54
4.1.2. Phân tích thực nghiệm .....................................................................................54
4.2. BurpSuite .............................................................................................................55
4.2.1. Thực nghiệm ...................................................................................................55
4.2.2. Phân tích thực nghiệm .....................................................................................57
4.3. Netsparker............................................................................................................58
4.3.1. Thực nghiệm ...................................................................................................58
4.3.2. Phân tích thực nghiệm .....................................................................................58
4.4. Skipfish ................................................................................................................59
4.4.1. Thực nghiệm ...................................................................................................59
4.4.2. Phân tích thực nghiệm .....................................................................................61
4.5. W3af ....................................................................................................................62
4.5.1. Thực nghiệm ...................................................................................................62
4.5.2. Phân tích thực nghiệm .....................................................................................62
4.6. Websecurify .........................................................................................................64
4.6.1. Thực nghiệm ...................................................................................................64
4.6.2. Phân tích thực nghiệm .....................................................................................65
4.7. Tổng hợp đánh giá ...............................................................................................65
CHƢƠNG 5 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ...............................................69
TÀI LIỆU THAM KHẢO .............................................................................................70
7
DANH MỤC BẢNG BIỂU
Bảng 2.1: Các mẫu đầu vào ...........................................................................................26
Bảng 4.1: Danh sách các lỗ hổng trên các công cụ .......................................................66
DANH MỤC HÌNH VẼ
Hình 1.1: Thống kê các loại tấn công ............................................................................14
Hình 2.1: Tấn công SYN ...............................................................................................16
Hình 2.2: Tấn công Smurf .............................................................................................17
Hình 2.3: Phân loại tấn công DDOS .............................................................................18
Hình 2.4: Tấn công TCP SYN .......................................................................................20
Hình 2.5: Mô hình tấn công XSS ..................................................................................22
Hình 2.6: Mô hì nh tấn công Reflected XSS ..................................................................23
Hình 2.7: DOM-base XSS .............................................................................................24
Hình 3.1: Thực nghiệm công cụ Netsparket ..................................................................30
Hình 3.2: Thực nghiệm công cụ Websecurify trên ứng dụng .......................................33
Hình 3.3: Kết quả khi chạy công cụ Websecurify .........................................................34
Hình 3.4: Cách thức làm việc của Acunetix ..................................................................35
Hình 3.5: Thống kê các công cụ năm 2012 của Benchmark .........................................36
Hình 3.6: Ví dụ về Acunetix..........................................................................................40
Hình 3.7: Kết quả chạy Acunetix ..................................................................................40
Hình 3.8: Phân tí ch chi tiết kết quả ...............................................................................41
Hình 3.9: Thƣ̣c nghiệm khi lỗi xảy ra ...........................................................................41
Hình 3.10: Ví dụ khi chạy WebScarab ..........................................................................43
Hình 3.11: Thƣ̣c nghiệm công cụ Havij ........................................................................44
Hình 3.12: Vị trí thay thế giá trị tấn công .....................................................................46
Hình 3.13: Các giá trị thay thế trong thẻ Positions .......................................................46
Hình 3.14: Kết quả sau khi tấn công .............................................................................47
Hình 3.15: Ví dụ về công cụ XSS-ME ..........................................................................49
Hình 3.16: Mối quan hệ các Plugin trong công cụ W3af ..............................................51
Hình 3.17: Tấn công DOS .............................................................................................52
Hình 4.1: Kết quả chạy công cụ Acunetix .....................................................................54
8
Hình 4.2: Khởi động BurpSuite.....................................................................................56
Hình 4.3: Cấu hì nh Proxy ..............................................................................................56
Hình 4.4: Chạy ứng dụng cho BurpSuite ......................................................................57
Hình 4.5: Kết quả quét trên phần mềm Trƣờng Nhà .....................................................57
Hình 4.6: Thƣ̣c nghiệm công cụ Netsparker .................................................................58
Hình 4.8: Chi tiết về thông tin cảnh báo của công cụ Skipfish .....................................61
Hình 4.7: Kết quả chạy công cụ Skipfish .....................................................................61
Hình 4.9: Công cụ W3af bật các plugin ........................................................................62
Hình 4.10: Thông tin các lỗ hổng và các lỗi trên công cụ W3af ...................................63
Hình 4.11: Kết quả các lỗ hổng đƣợc tì m thấy bởi W3af .............................................64
Hình 4.12: Kết quả chạy công cụ Websecurify .............................................................65
9
DANH MỤC CÁC CHỮ VIẾT TẮT
Từ viết tắt Từ đƣợc viết đầy đủ
Ý nghĩa
API
Application Programming Interface
Giao diện lập trình ứng dụng
AJAX
Asynchronous JavaScript and XML
JavaScript và XML không đồng bộ
CSS
Cascading Style Sheets
Tập tin định kiểu theo tầng
CPU
Central Processing Unit
Đơn vị xử lý thông tin
XSS
Cross-Site Scripting
Kỹ thuật tấn công kịch bản liên trang
DoS
Denial Of Service
Tƣ̀ chối dị ch vụ
DDoS
Distributed Denial of Service
Dạng tấn công từ chối dịch vụ phân
tán
DOM
Document Object Model
Là định dạng có cấu trúc đƣợc sử
dụng để đại diện tài liệu trong trình
duyệt.
HTML
HyperText Markup Language
Ngôn ngữ đánh dấu văn bản
PHP
Hypertext Preprocessor
Ngôn ngữ lập trình kịch bản
HTTP
Hypertext Transfer Protocol
Giao thức truyền tải siêu văn bản
LAN
Local Area Network
Mạng máy tính cục bộ
OWASP
Open Web Application Security Dƣ̣ án bảo mật các ƣ́ng dụng Web
Project
mở
SQL
Structured Query Language
Ngôn ngữ truy vấn có tính cấu trúc
ASP
Transmission Control Protocol
Giao thức điều khiển truyền vận
URI
Uniform Resource Identifier
Chuỗi định danh tài nguyên trên
mạng
URL
Uniform Resource Locator
Định vị tài nguyên về mặt địa chỉ
WAN
Wide Area Network
Mạng truyền dữ liệu diện rộng
10
11
CHƢƠNG 1 GIỚI THIỆU
Nội dung của chương 1 trình bày về tính cấp thiết, mục tiêu, bố cục của đề tài và tìm
hiểu chung những vấn đề về bảo mật anh ninh trên nền Web, đưa ra một vài nguyên
nhân gây ra mất an toàn an ninh trên các ứng dụng Web và các lỗ hổng thường thấy
nhiều nhất hiện nay.
1.1. Tính cấp thiết của đề tài
Với sƣ̣ phát triển rất nhanh của các ƣ́ng dụng trên nền Web, việc bảo mật an ninh
an toàn cho các trang Web là một lĩnh vực đặc biệt quan vì nó đƣ ợc truy cập mọi lúc
mọi nơi và bất kỳ ai. Tuy vậy không phải bất kỳ nhà phát triển phần mềm Web nào
cũng chú tâm đến việc bảo mật anh ninh , vì vậy nhiều ứng dụng Web vẫn tồn tại với
các nguy cơ an ninh/an toàn/bảo mật (security vularability) và gây ra nhiều thiệt hại
khi bị tấn công. Tuy nhiên việc tì m kiếm và phát hiện ra các nguy cơ an ninh thủ công
khá khó khăn trong khi đó có nhiều nguy cơ an ninh có thể phát hiện đƣợc bằng các
công cụ tƣ̣ động.
Bên cạnh đó, các loại nguy cơ an ninh không ít, và cũng có rất nhiều công cụ tự
động phát hiện nguy cơ bảo mật nên ngƣời phát triển phần mềm khi muốn kiểm tra
mức độ an ninh an toàn của trang web của mình cũng gặp phải nhiều khó khăn. Chính
vì vậy đề tài này nghiên cƣ́u m ột số kiểu tấn công đang ph ổ biến và các công cụ tƣ̣
động phát hiện nguy cơ an ninh an toàn đ ồng thời thử nghiệm chúng vào phần mềm
“Trƣờng Nhà” ở trang web . Ứng dụng “Trƣờng Nhà” là một
trang Web quản lý trƣờng học phổ thông và hiện đang đƣợc xây dựng bởi một đội phát
triển phần mềm. Chính vì vậy, đề tài sẽ đi thử nghiệm vào ứng dụng này để đƣa ra lỗ
hổng và một vài khuyến cáo cho đội phát triển phần mềm và từ đó kiểm tra đƣợc tính
đúng đắn của kết quả cũng nhƣ các khuyến cáo của luận văn đƣa ra.
Qua việc nghiên cứu và thử nghiệm này, đề tài đƣa ra các nguy cơ bảo mật và công
cụ để phát hiện/kiểm tra cho phần mềm Trƣờng Nhà. Từ đó để tài cũng tổng quát hóa
và đƣa ra các khuyến cáo cho các nhóm phát triển phần mềm nói chung và đặc biệt khi
sử dụng các công nghệ tƣơng tự nhƣ của Trƣờng Nhà (sử dụng khung ứng dụng
Django) về các nguy cơ bảo mật và các công cụ kiểm tra để các đơn vị phát triển phần
mềm có thể tham khảo, áp dụng vào các ƣ́ng dụng Web . Đề tài hy vọng sẽ giúp ngƣời
phát triển phần mềm có thêm hiểu biết về an ninh an toàn cũng nhƣ các công cụ nên sử
dụng để tăng cƣờng anh ninh, bảo mật cho hệ thống Web của mình.
1.2. Mục tiêu đề tài
Mục tiêu của đề tài là trình bày đƣợc tổng quan và cập nhật về các nguy cơ bảo
mật, các cách thức tấn công và các cách phát hi ện lỗ hổng bả o mật trên các hệ thống
12
Web và đi sâu vào một vài loại xâu trên nền Web nổi tiếng và nguy hiểm hiện nay. Từ
đó luận văn khảo sát một số công cụ phần mềm nhằm phát hiện các nguy cơ bảo mật
để giúp ngƣời lập trình có thể ngăn chặn sự tấn công của chúng, giảm thiểu khả năng
các ứng dụng web bị ảnh hƣởng bởi những lỗ hổng đó. Cuối cùng luận văn đi sâu vào
phát hiện lỗ hổng cho ứng dụng hệ thống quản lý trƣờng học :
dƣ̣a trên các công cụ đó.
1.3. Bố cục luận văn
Luận văn bao gồm các chƣơng sau:
Chƣơng 1: Tổng quan an toàn bảo mật trên nền Web: Chƣơng này giới thiệu về
vấn đề bảo mật, vai trò quan trọng của bảo mật trên nền web và các nguy cơ gây ra
bởi việc thiếu an toàn bảo mật cho ƣ́ng dụng web.
Chƣơng 2: Tấn công an toàn thông tin trong ứng dụng Web: Chƣơng này mô
tả về một vài kỹ thuật tấn công an toàn Web phổ biến (DoS/DDoS, XSS, SQL
injection), ví dụ và cách thức tấn công của chúng.
Chƣơng 3: Giới thiệu một vài công cụ tìm kiếm lỗ hổng bảo mật: Chƣơng này
giới thiệu một vài công cụ hỗ trợ trong việc tìm kiếm lỗ hổng trên nền Web. Bên
cạnh đó, chƣơng này cũng nêu lên cách thƣ́c làm việc và các lỗ hổng mà các ƣ́ng
dụng này có thể phát hiện ra, đƣa ra đƣợc nhận xét về các công cụ.
Chƣơng 4: Thực nghiệm và phân tích kết quả: Thực nghiệm chạy một số công
cụ ở chƣơng 3 vào việc tìm các lỗ hổng cho ứng dụng Web là
và phân tích cách thức phƣơng pháp chạy để tìm ra lỗi. Chƣơng 4 cũng đƣa ra đƣợc
một vài khuyến cáo cho các nhà phát triển phần mềm.
Chƣơng 5: Kết luận và hƣớng phát triển: Chƣơng này đi trình bày nhƣ̃ng kết
quả đạt đƣợc của luận văn và hƣớng phát triển trong tƣơng lai.
1.4. Tổng quan về vấn đề bảo mật trên nền Web
Ngày nay, với sự phát triển mạnh mẽ của công nghệ thông tin và đặc biệt là sự ra
đời hàng loạt của các trang Web đã mang l ại cho con ngƣời rất nhiều tiện ích cho các
doanh nghiệp. Các hoạt động giao dịch trực tuyến nhƣ thƣơng mại điện tử hay thanh
toán trực tuyến ngày càng phổ biến và đƣợc thƣ̣c hiện thông qua các ƣ́ng dụng Web. Ở
bất kỳ đâu, khi một máy tính có nối mạng internet, con ngƣời có thể thực hiện các giao
dịch của mình một cách thuận tiện và nhanh chóng . Mọi thông tin của ngƣời dùng sẽ
đƣợc lƣu trên Web . Nếu nhƣ thông tin đó b ị sửa đổi với ý đồ xấu, câu truy vấn cơ sở
dữ liệu có thể bị thay đổi cấu trúc, từ đó kết quả trả về sẽ khác với ý muốn của ngƣời
lập trình, hoặc nhƣ̃ng kẻ lạc danh có thể đá nh cắp thông tin , gây lên nhƣ̃ng thiệt hại
lớn. Có thể thấy việc xây dựng các trang Web động cho phép xây dựng câu truy vấn
13
động từ đầu vào do ngƣời sử dụng cung cấp, chúng tiềm ẩn một nguy cơ mất an toàn
cao nếu nhƣ không có một cơ chế kiểm tra dữ liệu đầu vào một cách chặt chẽ. Tóm lại,
các ứng dụng Web luôn luôn tiềm ần và có nguy cơ bị tấn công bởi các kẻ tấn công
với ý đồ xấu, vậy nên vấn đề bảo mật trên nền Web luôn là cấp thiết.
1.5. Một số nguyên nhân phổ biến cho ƣ́ng dụng Web mất tí nh an toàn
Khi một ƣ́ng dụng Web mất đi tí nh an toàn , điều đó tƣơng đƣơng với việc trang
web đó sẽ có khả năng tấn công và gây thiệt hại bởi nhƣ̃ng ý đồ xấu của kẻ tấn công .
Để khắc phục cho các lỗ hổng đó, việc trƣớc tiên cần làm là tì m ra nguyên nhân . Dƣới
đây là một vài nguyên nhân có thể gây ra nhƣ̃ng điểm yếu đó cho ƣ́ng dụng Web:
o Thiếu nhận thƣ́c về an toàn cho ƣ́ng dụng Web của ngƣời dùng và ngƣời lập
trình
o Thiếu các giải pháp bảo mật sẵn có.
o Sƣ̣ thúc ép sản phẩm nhanh chóng , dẫn đến các nhà lập trì nh làm nhanh và ẩu ,
quên đi việc áp dụng các giải pháp cho bảo mật.
1.6. Thống kê các loại tấn công
Vấn đề an toàn bảo mật cho một ứng dụng Web là một vấn đề hết sức quan trọng,
bởi nó ảnh hƣởng tới chất lƣợng an ninh của cả một hệ thống cơ quan. Với tình trạng
hiện tại khi hàng loạt các kẻ tấn công lợi dụng sơ hở của phần mềm để tấn công vào hệ
thống nhằm phá hủy, ăn cắp dữ liệu thì việc làm này lại càng cấp bách và cần thiết.
Theo thống kê Web Hacking Incident Database năm tƣ̀ 1999 tới 2011, chúng ta có thể
nhìn thấy tỷ lệ các phƣơng thức tấn công web theo dạng XSS, DoS và SQL injection
luôn đƣ́ng đầu trong so sánh nhƣ sau [12]:
14
Hình 1.1: Thống kê các loại tấn công
Nhìn biểu đồ Hình 1.1 chúng ta thấy rằng rất nhiều loại tấn công tồn tại nhƣng trong
đó có tấn công liên trang (XSS), tấn công từ chối dịch vụ (Denial of Service) và SQL
Injection là chủ yếu. Tiếp theo chúng ta sẽ đi nghiên cứu chi tiết về 3 loại tấn công này
trong chƣơng 2 và một vài lỗ hổng ít đƣợc chú ý hơn, chúng sẽ đƣợc miêu tả tại
chƣơng 4 khi thực thi các công cụ trên ứng dụng “Trƣờng Nhà”.
15
CHƢƠNG 2 MỘT SỐ NGUY CƠ AN NINH THƢỜNG GẶP
Chương này mô tả về một vài kỹ thuật tấn công an toàn Web phổ biến như:
DoS/DDoS, XSS, SQL injection, đưa ra ví dụ và cách thức tấn công của chúng.
2.1. Tấn công DoS
2.1.1. Giới thiệu về DoS
Một trong những cách thức tấn công trang web có từ lâu nhƣng đến giờ vẫn tồn tại
và gây ra nhiều thiệt hại cho các tổ chức mạng mà các kẻ tấn công thƣờng sử dụng rất
nhiều hiện nay là dạng tấn công từ chối dịch vụ (DoS). DoS là một phƣơng pháp tấn
công làm tê liệt hoàn toàn máy chủ, khiến ngƣời dùng không thể truy cập đƣợc.
Gần đây có rất nhiều trang web hay các tổ chức bị nhiễm dạng tấn công DoS, ví dụ
nhƣ trang web của Bkav đã bị tê liệt trong suốt mấy ngày vì bị tin tặc tấn công từ chối
dịch vụ DDoS. Microsoft (15 tháng 8 năm 2003) đã chịu đợt tấn công DoS cực mạnh
[1]. Gây ra những thiệt hại không nhỏ. Cuộc chiến chống lại những cuộc tấn công từ
chối dịch vụ DDoS đƣợc coi là vô cùng khó khăn.
Dos là một dạng tấn công nguy hiểm, mặc dù nó không truy cập vào dữ liệu của hệ
thống nhƣng nó có thể làm cho hệ thống không có khả năng sử dụng, hoặc làm cho hệ
thống rơi vào tình trạng chậm đáng kể, kẻ tấn công dùng mọi cách làm quá tải tài
nguyên của hệ thống.
2.1.2. Mục đích và các dạng tấn công DoS
Tấn công theo phƣơng pháp DoS nhằm mục đích sau:
Chiếm băng thông mạng và làm hệ thống mạng bị quá tải, khi đó hệ thống mạng
sẽ không có khả năng đáp ứng những dịch vụ khác cho ngƣời dùng bình thƣờng.
Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập vào dịch
vụ.
Cố gắng ngăn chặn các dịch vụ không cho ngƣời khác có khả năng truy cập vào.
Khi tấn công DoS xảy ra ngƣời dùng có cảm giác khi truy cập vào dịch vụ đó
nhƣ bị:
Tắt mạng
Tổ chức không hoạt động
Tài chính bị mất
Các tài nguyên mà kẻ tấn công thƣờng sử dụng để tấn công nhƣ là: Băng thông
16
của hệ thống mạng, bộ nhớ, ổ đĩa, và CPU hay cấu trúc dữ liệu đều là mục tiêu của tấn
công DoS.
Kẻ tấn công thƣờng tấn công vào hệ thống khác phục vụ cho mạng máy tính nhƣ
[6]: hệ thống điện, nhiều tài nguyên khác của doanh nghiệp. Chúng sẽ phá hoại hoặc
thay đổi các thông tin cấu hình và phá hoại tầng vật lý hoặc các thiết bị mạng nhƣ
nguồn điện, điều hoà... Chúng gây ảnh hƣởng rất lớn cho hệ thống.
Các cách để tấn công từ chối dịch vụ cơ bản là:
* Tấn công SYN
Với kiểu tấn công SYN này, kẻ tấn công gửi rất nhiều các yêu cầu ảo, các gói TCP
SYN tới máy chủ bị tấn công. Để xử lý lƣợng gói tin SYN này hệ thống cần tốn một
lƣợng bộ nhớ cho kết nối. Cách tấn công này dựa vào phƣơng thức bắt tay ba bƣớc của
TCP/IP. Giống nhƣ Hình 2.1 dƣới đây:
Hình 2.1: Tấn công SYN
Khi có rất nhiều gói SYN ảo tới máy chủ và chiếm hết các yêu cầu xử lý của máy
chủ. Một ngƣời dùng bình thƣờng kết nối tới máy chủ ban đầu thực hiện yêu cầu TCP
SYN và lúc này máy chủ không còn khả năng đáp lại, vì vậy kết nối không đƣợc thực
hiện.
* Tấn công Smurf
Đây là một kiểu tấn công hàng loạt trong đó chúng sinh ra cực nhiều giao tiếp
ICMP (ping) tới địa chỉ Broadcast của nhiều mạng với địa chỉ nguồn là mục tiêu cần
17
tấn công. Kết quả đích tấn công sẽ phải chịu nhận một đợt phản hồi gói ICMP cực
lớn và làm cho mạng bị dớt hoặc bị chậm lại không có khả năng đáp ứng các dịch vụ
khác nhƣ trong Hình 2.2
Hình 2.2: Tấn công Smurf
* Tấn công Ping of Death
Kẻ tấn công sử dụng các địa chi IP giả mạo rồi từ các địa chỉ này ping liên tục đến
máy chủ. Một số lƣợng lớn phản hồi từ máy chủ tới các địa chỉ IP giả. Nếu số lƣợng
IP giả quá lớn máy chủ có thể bị sụp hay là ngừng hoạt động.
* Tấn công Buffer Overflow
Dạng tấn công này xảy ra tại bất kỳ thời điểm nào có chƣơng trình ghi lƣợng thông
tin lớn hơn dung lƣợng của bộ nhớ đệm trong bộ nhớ. Kẻ tấn công có thể ghi đè lên
dữ liệu và điều khiển chạy các chƣơng trình và đánh cắp quyền điều khiển của một số
chƣơng trình hằm thực thi các đoạn mã nguy hiểm. Ví dụ nhƣ quá trình gửi một bức
thƣ điện tử mà tệp đính kèm dài quá 256 ký tự có thể sẽ xảy ra quá trình tràn bộ nhớ
đệm.
* Tấn công Teardrop
Kiểu tấn công này xảy ra khi gói tin IP rất lớn khi đến Router sẽ bị chia nhỏ làm
nhiều phần nhỏ. Từ đó kẻ tấn công sử dụng sử dụng gói IP với các thông số rất khó
hiểu để chia ra các phần nhỏ (fragment). Nếu hệ điều hành nhận đƣợc các gói tin đã
18
đƣợc chia nhỏ và không hiểu đƣợc, hệ thống cố gắng khôi phục lại gói tin và điều đó
chiếm một phần tài nguyên hệ thống, nếu quá trình đó liên tục xảy ra hệ thống không
còn tài nguyên cho các ứng dụng khác, phục vụ các ngƣời dùng khác.
2.1.3. Tấn công DDoS
2.1.3.1 Khái niệm về DDoS
Tấn công DDoS là sự tấn công từ một mạng máy tính đƣợc thiết kế để tấn công tới
một đích cụ thể nào đó. Dạng tấn công này cũng nhằm mục đích giống nhƣ DoS, tuy
nhiên nó đƣợc thiết lập trên nhiều địa chỉ IP khác nhau và cùng tấn công vào một
đích.
2.1.3.2 Phân loại tấn công DDoS
Có rất nhiều kỹ thuật tấn công DDoS, dựa trên mục đích của kiểu tấn công này, ta
có thể chia DDoS thành hai loại dựa trên mục đích tấn công: Làm cạn kiệt băng
thông và làm cạn kiệt tài nguyên hệ thống. Hình 2.3 dƣới đây là sơ đồ mô tả sự phân
loại các kiểu tấn công DDoS [4].
Hình 2.3: Phân loại tấn công DDOS
a. Kiểu tấn công làm cạn kiệt băng thông của mạng
Sử dụng hết băng thông là kiểu tấn công nhằm tràn ngập mạng, với mục đích làm
giảm tối thiểu khả năng của các lệnh gửi, truyền hợp lệ đến đƣợc với hệ thống cung
cấp dịch vụ của máy chủ.
19
Có hai loại tấn công dạng sử dụng hết băng:
Tràn băng thông: Là cách gửi một lƣợng lớn đến hệ thống dịch vụ của máy
chủ, làm dịch vụ này bị hết khả năng về băng thông, hệ thống bị treo hay đạt đến trạng
thái hoạt động bão hòa. Việc này dẫn đến ngƣời dùng thực sự của hệ thống không sử
dụng đƣợc dịch vụ. Ta có thể chia loại này thành hai loại:
o Tấn công tràn băng thông UDP: Gửi một lƣợng lớn UDP đến hệ thống dịch vụ
và làm tràn hệ thống.
o Tấn công tràn băng thông ICMP: Kẻ tấn công gửi một lƣợng lớn gói
CMP_ECHO_REPLY đến hệ thống mục tiêu thì hệ thống này phải phản hồi
một lƣợng tƣơng ứng các gói để trả lời, sẽ dẫn đến nghẽn đƣờng truyền.
Khuếch đại giao tiếp: Điều khiển các tác nhân hay máy khách tự gửi thông điệp
đến một địa chỉ IP broadcast, làm cho tất cả các máy trong subnet này gửi thông điệp
đến hệ thống dịch vụ của mục tiêu. Phƣơng pháp này làm gia tăng mạch giao thông
không cần thiết, làm suy giảm băng thông của mục tiêu.
b. Những kiểu tấn công làm cạn kiệt tài nguyên
Trong kiểu tấn công này là cách mà kẻ tấn công gửi những gói bằng phƣơng pháp
dùng các giao thức sai chức năng thiết kế, hay gửi những gói với dụng ý làm tắt nghẽn
tài nguyên mạng làm cho các tài nguyên này không phục vụ ngƣời dùng thông thƣờng
khác đƣợc.
Khai thác lỗ hổng trên các giao thức
o Tấn công gói TCP SYS: Giao thức điều khiển chuyển giao hỗ trợ truyền nhận
với độ tin cậy cao nên sử dụng phƣơng thức bắt tay giữa bên gửi và bên nhận
trƣớc khi truyền dữ liệu. Khi một kẻ tấn công gửi một gói SYN đến nạn nhân
với địa chỉ bên gởi là giả mạo, kết quả là nạn nhân gửi một phản hồi SYN/ACK
đến một địa chỉ khác và sẽ không bao giờ nhận đƣợc gói ACK cuối cùng, cho
đến hết thời gian timeout nạn nhân mới nhận ra đƣợc điều này và giải phóng
các tài nguyên hệ thống. Tuy nhiên, nếu lƣợng gói SYN giả mạo đến với số
lƣợng nhiều và dồn dập, hệ thống của nạn nhân có thể bị hết tài nguyên. Kiểu
tấn công dạng SYN đƣợc mô phỏng trong Hình 2.4:
20
Hình 2.4: Tấn công TCP SYN
o Tấn công ACK: Hệ thống sẽ không thể xử lý đƣợc lƣợng lớn gói tin gửi đến và
sẽ bị treo.
Gửi các gói tin khó hiểu
Đây là cách tấn công dùng các tác nhân để gửi các gói tin có cấu trúc không đúng
chuẩn nhằm làm cho hệ thống của nạn nhân bị treo.
Có hai loại tấn công dạng này:
o Tấn công đị a chỉ IP
o Tấn công gói lƣ̣a chọn IP
Trên đây là lý thuyết cơ bản về dạng tấn công DOS và DDOS đƣợc các kẻ tấn
công hay sử dụng.
2.2. Cross-Site Scripting (XSS)
2.2.1. Tổng quan về XSS
XSS là một trong những loại tấn công Web phổ biến nhất, mục đính của chúng là
nhúng các kịch bản (script) chứa mã độc vào trong một trang web và thực thi chúng ở
phía máy khách. Một trang Web có khả năng dễ bị tấn công XSS nhất là khi ứng
dụng không kiểm tra dữ liệu vào và tạo ra một đầu ra ngoài tầm kiểm soát của trang
đó. Lỗ hổng này dẫn tới rất nhiều loại tấn công, ví dụ: đánh cắp các thông tin mật.
Ngay cả những nhà an toàn thông tin lớn nhât nhƣ: McAfee, Symantec, Verisign
cũng đã có ít nhất 30 lỗ hổng XSS trên trang Web của họ [2].
Về loại tấn công này, các kẻ tấn công sẽ tiêm vào các trang web hợp lệ những mã
độc từ phía máy khách của kẻ tấn công. Sau đó một ngƣời sử dụng khác khi vào trang
web đó, đoạn mã độc của kẻ tấn công sẽ đƣợc thực thi và gửi thông tin đến máy kẻ tấn
công. Thực tế có rất nhiều biến thể của loại tấn công XSS, nhƣng tất cả chúng đều theo
một số bƣớc nhƣ sau:
Kẻ tấn công nhúng vào trang web một đoạn mã độc
Khi nạn nhân ghé thăm trang web thì sẽ tự động chạy đoạn mã độc đó và gửi lại
21
cookie của nạn nhân cho kẻ tấn công.
Kẻ tấn công làm một vài việc dƣới danh nghĩa là của nạn nhân (ví dụ: đọc, ăn cắp
thông tin…)
2.2.2. Ảnh hƣởng do XSS gây ra
Việc khai thác tấn công bởi XSS sẽ đƣợc sử dụng để đạt đƣợc những mục đích sau
đây:
Đánh cắp nhận dạng
Truy cập những thông tin nhạy cảm và thông tin giới hạn
Đạt đƣợc truy cập miễn phí tới các nội dung phải mất phí
Làm gián điệp trên các trình duyệt để theo dõi thói quen của ngƣời dùng.
Thay đổi các chức năng của trình duyệt
Mang nội dung xấu nhằm mục đích bôi nhọ danh dự của một cá nhân hoặc công
ty
Làm mất đi uy tín của trang web ứng dụng
Gây lên tấn công dạng từ chối dịch vụ
2.2.3. Phân loại
Dƣới đây là một vài kiểu tấn công dạng XSS:
Tấn công liên trang dạng lƣu trữ (Stored Cross site scripting)
Tấn công liên trang dạng phản chiếu (Reflected Cross site scripting)
Tấn công liên trang dựa trên DOM (DOM-based Cross site scripting)
a) Stored XSS
Stored Cross site scripting: Là một loại tấn công nguy hiểm nhất của XSS. Các
ứng dụng Web cho phép ngƣời sử dụng lƣu trữ dữ liệu có tiềm năng gây ra loại tấn
công này. Stored XSS là cách tấn công mà mã độc đƣợc lƣu lại trên máy chủ Web
thông qua cách chèn một đoạn script nguy hiểm (thƣờng Javascript) vào ứng dựng
Web thông qua một chức năng nào đó nhƣ là gửi bài, viết lời bình. Sau đó những
ngƣời dùng sau đó khi truy cập vào các chức năng này sẽ bị dính mã độc từ website có
chèn mã của kẻ tấn công đó giống nhƣ mô tả ở Hình 2.5 sau.
22
Hình 2.5: Mô hình tấn công XSS
Ngày nay thì các ứng dụng web không còn là các trang web tĩnh nữa, mà thay vào
đó là các trang web động với dữ liệu đƣợc lấy và thay đổi từ rất nhiều nguồn khác
nhau. Dữ liệu này chứ đựng hỗn hợp nhƣ là: text, hình ảnh và các thẻ HTML nhƣ
,
<img>, <script>. Kẻ tấn công sẽ sử dụng tính năng „comment‟ của ứng dụng web để
chèn các bình luận (comment) có chứa các thẻ script. Mỗi ngƣời dùng ghé thăm sẽ tải
về đoạn bình luận đó và thực thi nó trên trình duyệt của họ. Giống nhƣ chức năng bình
luận của Facebook hoặc những diễn đàn, kẻ tấn công có thể sử dụng để tấn công theo
phƣơng pháp này.
b) Reflected XSS
Kiểu tấn công Reflected XSS đƣợc biết đến nhƣ kiểu loại 1 (non-persistent XSS),
là loại tấn công XSS thƣờng thấy nhất ngày nay. Khi một ứng dụng có thể bị nhiễm
loại tấn công này, nó sẽ không kiểm tra các đầu vào thông qua yêu cầu của máy khách.
Chƣơng trình của kẻ tấn công đƣợc viết bởi Javascript, hoặc ActionScript, VBScript.
Những kẻ tấn công dạng này thƣờng làm cho những lỗ hổng đƣợc cài đặt, ăn trộm
cookies của nạn nhận, thay đổi nội dung của trang web. Một trong những vấn đề quan
trọng về việc khai thác các điểm yếu lỗ hổng XSS đó là việc mã hóa các ký tự. Trong
một số trƣờng hợp, các máy chủ Web hoặc ứng dụng Web không thể lọc đƣợc một vài
ký tự mã hóa. Ví dụ, ứng dụng Web có thể lọc đƣợc thẻ <script> nhƣng lại không thể
lọc đƣợc '%3cscript%3e'.
23
Hình 2.6: Mô hì nh tấn công Reflected XSS
Trong trƣờng hợp này, kẻ tấn công gửi một email cho nạn nhân có chứa mã độc là
một đƣờng liên kết để lấy cookie. Nạn nhân sau khi nhận mail, kích lên liên kết đó và
từ đó khởi tạo một yêu cầu HTTP tới ứng dụng Web và gây nhiễm cho ứng dụng.
Đoạn JavaScript có chứa mã độc sau đó đƣợc gửi trở lại trình duyệt của nạn nhân.
c) DOM-based Cross site scripting
Trong khi các loại tấn công dạng XSS xảy ra trên phía máy chủ thì DOM base
XSS là một loại tấn công mà ảnh hƣởng tới kịch bản mã nguồn tại trình duyệt của máy
khách. DOM-base XSS là một kiểu tấn công truy cập vào cấu trúc của trang, ở lại đó
và thực thi những nội dung của trang web. Giống nhƣ mã nguồn phía máy chủ, thì mã
nguồn tại phía máy khách cũng chấp nhận những đầu vào của ngƣời dùng có chứa dữ
liệu độc. Do đó, nếu nhƣ kẻ tấn công nhập vào các dữ liệu độc, sẽ dẫn đến một gây
nhiễm độc dạng DOM-bases XSS. DOM-based XSS là một kiểu tấn công XSS, kết
quả của việc chỉnh sửa DOM tại trình duyệt của nạn nhân. Vì vậy mã nguồn của phía
máy khách sẽ chạy theo một cách thức không mong đợi.
Khả năng mã nguồn của ngƣời dùng đƣa vào có chứa sự tấn công nhƣ là:
Thuộc tính document.referer
Thuộc tính window.name
Thuộc tính location
Lúc đó, mã nguồn sẽ đƣợc thực thi phía máy khách nhƣ sau:
document.write
24
Thay đổi vị trí với: javascript: metaprotocol
Chức năng eval, setInterval hoặc setTimeout
Ví dụ về DOM-base XSS: Xét 1 ví dụ về thuộc tính document.referrer. Đó là
thuộc tính đƣợc thiết lập bởi trình duyệt và đại diện cho trang đó để liên kết tới các
trang hiện thời. Xem xét một đoạn code HTML sau:
Hình 2.7: DOM-base XSS
Nếu chuỗi document.referrer có chứa mã JavaScript, đoạn mã đó sẽ đƣợc thực thi.
Để khai thác loại tiêm nhiễm mã độc này, kẻ tấn công phải có một trang trung gian từ
trang mà họ liên kết tới trang lây nhiễm. Kẻ tấn công này sẽ gửi liên kết của trang tới
nạn nhân:
/>
Bởi việc sử dụng gửi trực tiếp JavaScript hoặc tƣơng tác của ngƣời sử dụng, kẻ tấn
công liên kết tới trang web nhiễm độc, nguyên nhân dẫn đến đoạn mã nhiễm độc đƣợc
thực thi.
2.2.4. Cách phát hiện ra sâu XSS
Trong những trang Web bị dính sâu XSS, thƣờng là khi ngƣời sử dụng đăng nhập
hoặc gửi một vài thông tin nào đó tớ máy chủ, mà kết quả đƣợc gửi về có liên quan tới
thông tin của chuỗi ngƣời dùng đã nhập thì khả năng cao là đã bị dính sâu XSS. Kẻ tấn
công thƣờng dùng thẻ <script> để nhúng vào các form của ứng dụng hoặc cũng có thể
đƣa vào URL. Bạn có thể thử đăng nhập với chuỗi: <script>alert(“XSS
found”)</script>, nếu thấy xuất hiện một popup thì ứng dụng đó đã bị nhiễm XSS,
hoặc tƣơng tự khi nhúng nó vào URL.
2.2.5. Các phƣơng pháp ngăn chặn lỗ hổng bảo mật XSS
Để các trang Web có thể tránh đƣợc việc tấn công XSS, những nhà phát triển phần
mềm nên kiểm tra cẩn thận hơn:
Kiểm tra và chỉ chấp nhận những dữ liệu hợp lệ
25
Có chức năng nắm giữ và từ chối nhận các dữ liệu hỏng.
Thực hiện kiểm tra và sàng lọc dữ liệu một cách liên tục
Tuy vậy nhƣng thực tế thì việc kiểm tra và loại bỏ những dữ liệu không hợp lệ là
không thể vét cạn đƣợc, bởi đôi khi vẫn phải chấp nhận những ký tự đó. Vì vậy, có
thêm một cách nữa đó là mã hóa các ký tự để không gây nguy hiểm cho ngƣời dùng.
2.3. Tổng quan SQL Injection
2.3.1. Định nghĩa
SQL injection là một kỹ thuật đƣợc sử dụng cho việc muốn tìm ra những điểm
yếu kém của ứng dụng về cơ sở dữ liệu. Nó thƣờng đƣợc sử dụng trên các ứng dụng
Web, khi mà yêu cầu nhập thông tin từ ngƣời dùng để xử lý. Kỹ thuật này thƣờng thấy
trong các trƣờng hợp yêu cầu đăng nhập vào các ứng dụng hay bất kỳ một khung đăng
thông tin từ ngƣời dùng mà ứng dụng sử dụng câu truy vấn. SQL injection có thể xuất
hiên hiện trên bất kỳ ứng dụng web có sử dụng các công nghệ nhƣ: ASP, ASP.NET và
PHP với SQL. Ví dụ nhƣ khi ngƣời sử dụng nhập thông tin vào trang đăng nhập và
yêu cầu đƣợc gửi đi những thông tin về ngƣời dùng và mật khẩu sẽ đƣợc mang đi để
so sánh với một tập hợp các ngƣời dùng hợp pháp trong cơ sở dữ liệu [9].
SQL Injection là một trong những kiểu tấn công phổ biến nhất hiện giờ ở tầng ứng
dụng đƣợc sử dụng trên mạng. Mặc dù dạng lỗ hổng này có một vài cách dễ dàng để
bảo vệ chống lại SQL injection, nhƣng một số lớn các ứng dụng web vẫn tồn lại những
lỗ hổng dạng này.
2.3.2. Các kỹ thuật tấn công SQL Injection
Có 4 loại tấn công thuộc SQL Injection: Đăng nhập không cần mật khẩu, sử dụng
câu lệnh SELECT, sử dụng các Stored-procedures, sử dụng câu lệnh INSERT [8].
a) Đăng nhập mà không cần mật khẩu
Dựa vào sơ hở của ứng dụng, kẻ tấn công sẽ sử dụng chức năng đăng nhập vào hệ
thống, nhập những dữ liệu có khả năng thực thi câu lệnh SQL một cách bất hợp pháp,
từ đó kẻ tấn công không cần có mật khẩu vẫn có thể đăng nhập vào hệ thống và thực
thi các chức năng của hệ thống đó, điều này rất nguy hiểm, có thể dẫn tới sập hệ thống.
Đây là dạng tấn công cơ bản của SQL Injection.
Ví dụ, một trang web của ngân hàng có một trang đăng nhập với mã nguồn nhƣ
sau:
<form action="/cgi-bin/login" method=post>
Username: <input type=text name=username>
26
Password: <input tySpe=password name=password>
<input type=submit value=Login>
Và đoạn mã nguồn xử lý như sau:
SELECT * FROM users WHERE user= '$username' and password = '$password'
Nhập vào đoạn ' OR ' ' = ' cho cả 2 ô username và password, lúc đó câu lệnh truy
vấnSQL sẽ trở thành:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD= '' OR ''=''
Từ đó kẻ tấn công có thể đăng nhập thành công mà không cần biết mật khẩu, và có thể
thực thi các ứng dụng của trang web nhƣ là: chuyển khoản, ăn cắp thông tin....Gây ra
rất nhiều nguy hiểm cho công ty và ngƣời dùng. Kẻ tấn công cũng có thể sử dụng một
vài mẫu tấn công nhƣ trong bảng Bảng 2.1 dƣới đây để có đƣợc truy cập tƣơng tự:
Bảng 2.1: Các mẫu đầu vào
Mẫu 1
' or 1=1--
Mẫu 2
" or 1=1--
Mẫu 3
') or ('a'='a
Mẫu 4
' or 'a'='a
Mẫu 5
" or "a"="a
b) Sử dụng câu lệnh SELECT
Trong những trang web về tin tức sẽ có một trang nhận ID của tin cần thiết để hiển
thị rồi sau đó truy vấn nội dung của tin có ID này. Dạng tấn công này phức tạp hơn và
thƣờng sử dụng trên các trang web dạng tin tức này. Để 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.
Ví dụ:
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID
Set objRS = Server.CreateObject("ADODB.Recordset")
27
objRS.Open strSQL, "DSN=..."
Set objRS = Nothing
%>
Đoạn mã này khi nhận đƣợc ID của tin tức sẽ hiển thị nội dung của tin có ID trùng
với ID đã chỉ định và hầu nhƣ không thấy có lỗi. Tuy nhiên, đoạn mã này để lộ sơ hở
cho một lỗi SQL injection khác. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách
gán ID cho một giá trị khác, và từ đó, khởi đầu cho một cuộc tấn công bất hợp pháp, ví
dụ nhƣ:
OR 1=1
Điều đó có nghĩa, đƣờng liên kết sẽ trở thành: http://..../?ID=0 or 1=1. Điều này
luôn luôn đúng.
c) Sử dụng Stored-procedure
Dạng tấn công này rất nguy hiểm nếu ứng dụng đƣợc thực thi với quyền quản trị
hệ thống. 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. Nếu cài SQL Server
ở chế độ mặc định thì SQL Server chạy trên nền SYSTEM, tƣơng đƣơng mức truy
cập ở Windows. Có thể dùng master..xp_cmdshell để thi hành lệnh từ xa:
; exec master..xp_cmdshell 'ping 10.10.1.2'--
Thử dùng dấu nháy đôi (") nếu dấu nháy đơn (') không làm việc.
Dƣới đây là một số extended stored procedure mà kẻ tấn công thƣờng hay sử dụng để
thực thi những câu lệnh xem nội dung thông tin trong máy nạn nhân:
Xp_availablemedia: Hiển thị những ổ đĩa hiện hành trên máy.
Xp_dirtree: Hiển thị tất cả các thƣ mục kể cả thƣ mục con.
Xp_loginconfig: Lấy thông tin về chế độ bảo mật trên server.
Xp_makecab: Cho phép ngƣời sử dụng tạo các tập tin lƣu trữ trên Server (hay bất
cứtập tin nào mà server có thể truy xuất.
Xp_ntsec_enumdomain: Liệt kê những domain mà server có thể truy vấn.
Xp_terminate_process: Chấm dứt một tiến trình với tham số PID của nó.
d) 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 để
28
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. Ví dụ, một câu lệnh INSERT có thể
có cú pháp dạng:
INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three').
Nếu đoạn mã xây dựng câu lệnh SQL có dạng :
<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _
& strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
…
Set objRS = Nothing
%>
Thì chắc chắn sẽ bị lỗi SQL injection, bởi vì nếu ta nhập vào trƣờng thứ nhất ví dụ
nhƣ: ' + (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'). Khi đó, 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.
2.3.3. Những ảnh hƣởng gây ra của SQL Injection
Một khi kẻ tấn công đã nhận ra hệ thống có điểm yếu và có thể tiêm mã độc SQL
Injection vào, chúng sẽ đƣa vào các câu lệnh hoặc truy vấn SQL thông qua một trƣờng
nhập đầu vào nào đó. Điều đó tƣơng đƣơng với việc giao cơ sở dữ liệu của bạn cho kẻ
tấn công và cho phép kẻ tấn công thực thi bất kỳ một lệnh SQL nào đó bảo gồm cả câu
lệnh “DROP TABLE” để xóa hẳn cơ sở dữ liệu của bạn đi.
Kẻ tấn công có lẽ thực thi những trạng thái SQL một cách tùy ý trên các hệ thống
có khả năng tiêm nhiễm đó. Điều này gây nguy cho toàn bộ cơ sở dữ liệu của bạn hoặc
làm phơi bày ra những thông tin nhạy cảm. Phụ thuộc vào back-end của cơ sở dữ liệu,
khả năng tiêm nhiễm SQL Injection dẫn đến nhiều mức độ của việc truy cập dữ liệu/hệ
thống của kẻ tấn công. Nó có khả năng thực thi những truy vấn tồn tại, UNION các dữ
liệu một các tùy ý, sử dụng các lựa chọn con hoặc thêm vào các truy vấn theo sau.
Trong một số trƣờng hợp, nó có khả năng đọc hoặc viết ra các tệp, hoặc thực thi
các lệnh shell trên các hệ thống thao tác cơ bản. Một số các SQL servers giống nhƣ
Microsoft SQL server chứa đựng những thủ tục lƣu trữ và mở rộng. Nếu kẻ tấn công
có thể đạt đƣợc truy cập tới các thủ tục đó, nó có thể gây ra thảm họa. Không may mắn
những ảnh hƣởng của SQL injection là chỉ đƣợc phát hiện khi những tên trộm đƣợc
phát hiện ra.
29
Ví dụ về một tấn công SQLInjection:
Dƣới đây là một khung đăng nhập có 2 trƣờng Username và password:
<form method="post" action=" /><input name="tfUName" type="text" id="tfUName">
<input name="tfUPass" type="password" id="tfUPass">
</form>
Trong tệp “login.asp” sẽ chứa một truy vấn vào cơ sở dữ liệu nhƣ sau:
SELECT id
FROM logins
WHERE username = '$username'
AND password = '$password’
Kẻ tấn công sẽ đăng nhập với một tên và password nhƣ sau:
Username: myname
Password: anything' OR 'x'='x
Từ đó kẻ tấn công có thể đăng nhập nhƣ một ngƣời sử dụng hợp pháp và thao tác
trên hệ thống với ý đồ xấu gây thiệt hại cho hệ thống một cách khó lƣờng đƣợc.
2.3.4. Các phƣơng pháp phòng chống SQL Injection phổ biến
Các loại tấn công SQL Injection đều dựa trên những điểm yếu về cơ sở dữ liệu.
Thông thƣờng các nhà lập trình thƣờng quên đi việc ngăn chặn lỗi bảo mật khi lập
trình dẫn đến những sơ hở này. Dƣới đây là một vài phƣơng pháp có thể giúp ngăn
chặn đƣợc tấn công SQL Injection nhƣ sau:
Kiểm tra tất cả các dữ liệu đầu vào trên các form: Loại bỏ các ký tự lạ, đối với
các ký tự numeric nên chuyển chúng sang số nguyên trƣớc khi thực hiện các
câu lệnh truy vấn hoặc dùng thuật toán để mã hóa dữ liệu.
Quản lý chặt chẽ SQL Server: kiểm soát các tài khoản có trong ứng dụng, phân
quyền thấp cho các ứng dụng.
Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu.
Tóm lại, chƣơng 2 đã miêu tả đƣợc về 3 loại tấn công nguy hiểm và phổ biến nhất hiện nay.
Ngoài những loại lỗ hổng đó, các trang Web còn tồn tại rất nhiều những dạng lỗ hổng khác
nhƣ: lộ thông tin cấu hình máy chủ, lộ trƣờng thông tin mật khẩu hay cookies, lỗ hổng tấn
công liên trang giả mạo. Những lỗ hổng này thƣờng ít đƣợc để ý đến nhƣng chúng lại cung
cấp những thông tin hữu ích cho kẻ tấn công để nhằm thực thi tấn công vào trang Web, chúng
sẽ đƣợc miêu tả chi tiết hơn trong các chƣơng sau.