LỜI CÁM ƠN
Để hoàn thành đồ án chuyên đề này, lời đầu tiên em xin chân thành cảm ơn các
thầy giáo, cô giáo Khoa Khoa học máy tính, Trường cao đẳng công nghệ thông tin hữu
nghị Việt Hàn, những người đã dạy dỗ, trang bị cho em những kiến thức bổ ích trong
những năm học vừa qua.
Em xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy giáo Nguyễn Vũ, người đã tận
tình hướng dẫn, chỉ bảo em trong suốt thời gian làm đồ án này.
Nhân dịp này em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè, những
người thân đã cổ vũ, động viên tiếp thêm cho em nghị lực để em hoàn thành đồ án
chuyên đề này.
Em xin chân thành cảm ơn !
Đà Nẵng, ngày 13 tháng 03 năm 2012
Sinh viên
Nguyễn Mậu San
Trang i
LỜI MỞ ĐẦU
Thế giới ngày nay đã có nhiều tiến bộ mạnh mẽ về công nghệ thông tin (CNTT)
từ một tiềm năng thông tin đã trở thành một tài nguyên thực sự, trở thành sản phẩm
hàng hoá trong xã hội tạo ra một sự thay đổi to lớn trong lực lượng sản xuất, cơ sở hạ
tầng, cấu trúc kinh tế, tính chất lao động và cả cách thức quản lý trong các lĩnh vực của
xã hội.
Trong những năm gần đây, Việt Nam ngày càng phát triển và nhất là về mặt
công nghệ thông tin. Đặc biệt là về ứng dụng Website, hầu như mọi người ai cũng
từng nghe và làm việc trên ứng dụng Website. Website trở nên phổ biến và trở thành
một phần quan trọng của mọi người và nhất là các doanh nghiệp, công ty. Bên cạnh đó
lý do an toàn bảo mật cho ứng dụng Website luôn là vấn đề nan giải của mọi người.
Với các lý do trên, em mạnh dạn đề xuất đề tài “Nghiên cứu một số hình thức
tấn công Website phổ biến và các giải pháp phòng chống” để làm đồ án chuyên đề
cho mình. Em thấy đây là đề tài mang tính thực tế cao, giúp cho các nhà quản trị
Website có thể làm tốt hơn công việc của mình, cũng như đảm bảo an toàn thông tin
cho doanh nghiệp, công ty. Đồng thời cũng giúp ích rất nhiều cho em trong các công
việc sau này.
Nội dung đồ án gồm ba phần chính:
Chương 1: Tổng quan về bảo mật và ứng dụng Website.
Chương 2: Nghiên cứu các hình thức tấn công và giải pháp bảo mật Website.
Chương 3: Triển khai demo các hình thức tấn công và các giải pháp bảo mật.
Cuối cùng, em xin chân thành cảm ơn thầy Nguyễn Vũ đã tạo mọi điều kiện,
giúp đỡ em có đủ khả năng để hoàn thành đồ án này.
Trang ii
MỤC LỤC
LỜI CÁM ƠN...............................................................................................................i
LỜI MỞ ĐẦU..............................................................................................................ii
DANH MỤC HÌNH ẢNH............................................................................................v
DANH MỤC TỪ VIẾT TẮT.....................................................................................vi
CHƯƠNG I: TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEBSITE....................1
1.1. Tổng quan về ứng dụng Website.........................................................................1
1.1.1. Khái niệm ứng dụng Website.......................................................................1
1.1.2. Cách thức hoạt động.....................................................................................2
1.1.3. Các dịch vụ và ứng dụng trên nền Website...................................................3
1.2. Tổng quan về an ninh mạng................................................................................4
1.2.1 Khái niệm về an toàn và an ninh mạng..........................................................4
1.2.2 Sự cần thiết phải bảo vệ thông tin..................................................................5
1.3. Các thuật ngữ liên quan.......................................................................................5
1.3.1. Hacker..........................................................................................................5
1.3.2. Http Header..................................................................................................5
1.3.3. Session..........................................................................................................7
1.3.4. Cookie..........................................................................................................7
1.3.5. Proxy............................................................................................................9
CHƯƠNG II: NGHIÊN CỨU CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP
BẢO MẬT WEBSITE...............................................................................................10
2.1 SQL Injection.....................................................................................................10
2.1.1. Tìm hiểu về SQL Injection.........................................................................10
2.1.2 Cách Phòng Tránh SQL Injection................................................................20
2.2 Local Attack.......................................................................................................24
2.2.1. Tìm hiểu về Local Attack...........................................................................24
2.2.2. Tấn công bằng Local Attack.......................................................................24
2.2.3. Phương pháp phòng chống Local Attack....................................................28
2.3. Cross Site Scripting (XSS)................................................................................34
2.3.1. Tìm hiểu về XSS.........................................................................................34
2.3.2. Tấn công bằng XSS....................................................................................34
2.3.3 Phương pháp phòng chống XSS..................................................................39
2.4. Tấn công từ chối dịch vụ...................................................................................40
2.4.1. Tìm hiểu về DOS........................................................................................40
2.4.2. Các kĩ thuật tấn công bằng DOS.................................................................41
2.4.3. Phương pháp phòng chống DOS, DDOS....................................................45
CHƯƠNG III: TRIỂN KHAI CÁC PHƯƠNG PHÁP TẤN CÔNG VÀ GIẢI
PHÁP BẢO MẬT WEBSITE...................................................................................47
3.1. SQL Injection....................................................................................................47
3.2. Local attack.......................................................................................................52
KẾT LUẬN................................................................................................................54
TÀI LIỆU THAM KHẢO.........................................................................................57
Trang iii
DANH MỤC HÌNH ẢNH
Hình 1.1 Kiến trúc một ứng dụng Website..................................................................4
Hình 1.2 Mô hình hoạt động của ứng dụng Website....................................................5
Hình 2.1 Một công cụ tìm Lổi SQL Injection............................................................15
Hình 2.2 Một site bị lổi SQL Injection.......................................................................16
Hình 2.3 Quyền Chmod.............................................................................................33
Hình 2.4 Cách viết Action Script trong Flash............................................................43
Hình 2.5 Cơ chế thiết lập kết nối trước khi truyền số liệu..........................................46
Hình 2.6 Tấn công DoS truyền thống........................................................................47
Hình 2.7 Kiểu tấn công DoS vào băng thông.............................................................48
Hình 2.9 Tấn công kiểu DRDoS................................................................................50
Hình 3.1 Công cụ Sql Poizon v1.1.............................................................................52
Hình 3.2 Công cụ XCodeXploitScanner....................................................................52
Hình 3.3 Kiểm tra lỗi Sql Injection............................................................................53
Hình 3.4 Đếm số cột trong database..........................................................................53
Hình 3.5 Tìm cột bị lỗi...............................................................................................54
Hình 3.6 Thông tin version php.................................................................................54
Hình 3.7 Tên database...............................................................................................55
Hình 3.8 Hiển thị tất cả các table trong database.......................................................55
Hình 3.9 Hiển thị các column trong table users.........................................................57
Hình 3.10 Lấy thông tin của trường Username và Password.....................................57
Hình 3.11 Thông tin Server.......................................................................................58
Hình 3.12 Thực thi lệnh trên Server...........................................................................58
Hình 3.12 Thao tác với database................................................................................58
Hình 3.13 Lấy database.............................................................................................59
Hình 3.14 Xem tất cả user trên server (với server windown).....................................59
Hình 3.15 Sửa tập tin cấu hình của một trang web trên server...................................59
Trang iv
DANH MỤC TỪ VIẾT TẮT
IIS
Internet Information Services
PHP
Hypertext Preprocessor
HTTP
HyperText Transfer Protocol
ASP
Active Server Pages
XSS
Cross Site Scripting
DOS
Denial Of Service
SQL
Structured Query Language
CGI
Common Gateway Interface
Trang v
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
CHƯƠNG I: TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG
WEBSITE
1.1. Tổng quan về ứng dụng Website.
1.1.1. Khái niệm ứng dụng Website
Ứng dụng Website là một ứng dụng chủ/khách sử dụng giao thức HTTP để
tương tác với người dùng hay hệ thống khác.
Website là một “trang web” trên mạng Internet, đây là nơi giới thiệu những
thông tin, hình ảnh về doanh nghiệp và sản phẩm, dịch vụ của doanh nghiệp (hay giới
thiệu bất cứ thông tin gì) để khách hàng có thể truy cập ở bất kỳ nơi đâu, bất cứ lúc
nào.
Website là tập hợp nhiều trang. Khi doanh nghiệp xây dựng website nghĩa là
đang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ....Để tạo nên một
website cần phải có 3 yếu tố cơ bản:
- Cần phải có tên miền (domain).
- Nơi lưu trữ Website (hosting).
- Nội dung các trang thông tin.
Một ứng dụng web thường có kiến trúc gồm:
Hình 1.1: Kiến trúc một ứng dụng Website
SVTH: Nguyễn Mậu San
Trang 1
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
1.1.2. Cách thức hoạt động
Mô hình hoạt động của ứng dụng Website:
Hình 1.2: Mô hình hoạt động của ứng dụng Website.
Trong đó:
- Trình khách ( hay còn gọi là trình duyệt): Internet Explorer, FireFox, Chrome
- Trình chủ: Apache, IIS, ….
- Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access….1.2.
Bên cạnh đó, một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử
dụng là bức tường lửa, nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng,
vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính. Có thể
xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có
được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy
xuất đến mạng kia hay không.
Người ta thường dùng firewall vào mục đích:
- Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài.
- Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong.
- Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập.
Firewall hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy
người sử dụng.
SVTH: Nguyễn Mậu San
Trang 2
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Website thông
qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho
thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc
trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình
khách.
Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết
nối đến cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho
trình khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần:
- Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi
giữa trình duyệt và WebServer.
- Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là một file
HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì.
Theo mô hình ở hình 1.1, với firewall, luồng thông tin giữa trình chủ và trình
khách là luồng thông tin hợp lệ. Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứng
dụng Website thì firewall không còn hữu dụng trong việc ngăn chặn hacker này. Do
đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào
những sơ suất (hay lỗ hổng) trong quá trình tạo ứng dụng của những nhà phát triển
Website hơn là tấn công trực tiếp vào hệ thống mạng, hệ điều hành. Tuy nhiên, hacker
cũng có thể lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vào các hệ
thống không liên quan khác.
1.1.3. Các dịch vụ và ứng dụng trên nền Website
Với công nghệ hiện nay, Website không chỉ đơn giản là một trang tin cung cấp
các tin bài đơn giản. Những ứng dụng viết trên nền Website không chỉ được gọi là một
phần của Website nữa, giờ đây chúng được gọi là phần mềm viết trên nền Website.
Có rất nhiều phần mềm chạy trên nền Website như Google word (xử lý văn
bản), Google spreadsheets (xử lý bảng tính), Email ,…
Một số ưu điểm của phần mềm hay ứng dụng chạy trên nền web:
Mọi người đều có trình duyệt và bạn chỉ cần trình duyệt để chạy phần mềm.
Phần mềm luôn luôn được cập nhật vì chúng chạy trên server.
Luôn sẵn sàng 24/7.
SVTH: Nguyễn Mậu San
Trang 3
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Dễ dàng backup dữ liệu thường xuyên.
Có thể truy cập mọi lúc, mọi nơi, chỉ cần có Internet
Chi phí triển khai rẻ hơn nhiều so với phần mềm chạy trên desktop.
1.2. Tổng quan về an ninh mạng.
1.2.1 Khái niệm về an toàn và an ninh mạng
Trong quá khứ, an ninh thông tin là một thuật ngữ được sử dụng để mô tả các
biện pháp bảo mật vật lý được sử dụng để giữ cho chính phủ hay doanh nghiệp những
thông tin quan trọng khỏi bị truy cập bởi công chúng và để bảo vệ nó chống lại thay
đổi hoặc tiêu hủy. Những biện pháp này bao gồm lưu trữ tài liệu có giá trị trong tủ hồ
sơ đã bị khóa hoặc két và hạn chế truy cập vật lý đến các khu vực nơi mà các tài liệu
đã được lưu giữ. Với sự phổ biến của máy tính và các phương tiện truyền thông điện
tử, cách truy cập dữ liệu cũ thay đổi. Khi công nghệ tiếp tục phát triển, hệ thống máy
tính được kết nối với nhau để tạo thành mạng máy tính, cho phép các hệ thống chia sẻ
tài nguyên, bao gồm cả dữ liệu.
Các mạng máy tính cuối cùng, mà hầu hết các liên kết nối mạng máy tính truy
cập công cộng, là Internet. Mặc dù các phương pháp bảo vệ dữ liệu đã thay đổi đáng
kể, khái niệm về an ninh mạng vẫn giống như là các thông tin bảo mật.
Bởi vì máy tính có thể thu hồi, và số tiền quá lớn của dữ liệu, chúng được sử
dụng trong gần như mọi khía cạnh của cuộc sống. Máy vi tính, mạng, và Internet là
một phần không thể thiếu của nhiều doanh nghiệp. Sự phụ thuộc của chúng trên các
máy tính tiếp tục tăng khi các doanh nghiệp và cá nhân trở nên thoải mái hơn với công
nghệ và tiến bộ công nghệ như là làm cho hệ thống thân thiện với người dùng hơn và
dễ dàng hơn để kết nối.
Một hệ thống máy tính duy nhất yêu cầu các công cụ tự động để bảo vệ dữ liệu
trên hệ thống từ những người dùng có quyền truy cập hệ thống. Một hệ thống máy tính
trên mạng (một hệ thống phân phối) đòi hỏi rằng dữ liệu vào hệ thống đó được bảo vệ
không chỉ từ truy cập địa phương mà còn từ các truy cập từ xa trái phép và từ chặn
hoặc thay đổi dữ liệu trong quá trình truyền giữa các hệ thống. An ninh mạng không
phải là một sản phẩm, quy trình, hay chính sách mà là sự kết hợp của các sản phẩm và
quy trình có hỗ trợ một chính sách quy định. Mạng lưới an ninh được thực hiện của
SVTH: Nguyễn Mậu San
Trang 4
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
các thiết bị an ninh, chính sách và quy trình để ngăn chặn truy cập trái phép vào tài
nguyên mạng, thay đổi hoặc hủy hoại tài nguyên hoặc dữ liệu.
1.2.2 Sự cần thiết phải bảo vệ thông tin
Trong một doanh nghiệp hay một tổ chức nào đó, thì phải có các yếu tố cần được
bảo vệ như:
- Dữ liệu.
- Tài nguyên: con người, hệ thống và đường truyền.
- Danh tiếng của công ty.
Nếu không đặt vấn đề an toàn thông tin lên hàng đầu thì khi gặp phải sự cố thì
tác hại đến doanh nghiệp không nhỏ:
- Tốn kém chi phí.
- Tốn kém thời gian.
- Ảnh hưởng đến tài nguyên hệ thống.
- Ảnh hưởng đến danh dự, uy tín của doanh nghiệp.
- Mất cơ hội kinh doanh.
1.3. Các thuật ngữ liên quan.
1.3.1. Hacker
Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống mạng.
Hacker thường là những chuyên gia về máy tính. Hacker không tạo ra các kẽ hở cho
hệ thống, nhưng Hacker lại là những người am hiểu về hệ điều hành, hệ quản trị dữ
liệu, các ngôn ngữ lập trình…Họ sử dụng kiến thức của mình trong việc tìm tòi và
khai thác các lỗ hổng của hệ thống mạng. Một số Hacker chỉ dừng lại việc phát hiện và
thông báo lỗi tìm được cho những nhà bảo mật hay người phát triển chương trình, họ
được xem như là WhiteHat (Hacker nón trắng). Một số hacker dựa vào những lỗ hổng
thực hiện việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những
người này bị xem như là BlackHat (Hacker mũ đen).
Vì tính chất phổ biến của thuật ngữ hacker, nên trong phần trình bày, luận văn sẽ
sử dụng “hacker” thay cho “kẻ tấn công”.
1.3.2. Http Header
HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gửi
cho nhau. Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests
SVTH: Nguyễn Mậu San
Trang 5
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
(yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời). Thông
thường, một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị. Một
số tham số có thể được dùng trong cả header yêu cầu và header trả lời, còn số khác thì
chỉ được dùng riêng trong từng loại. Ví dụ :
• Header yêu cầu:
GET /tintuc/homnay.asp HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/lienket.asp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Accept-Encoding: gzip, deflate
o Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặc POST),
địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP (HTTP/1.1)..
o Tiếp theo là các tham số.Chẳng hạn như:
+ Accept-Language: Cho biết ngôn ngữ dùng trong trang web.
+ Host: Cho biết địa chỉ của máy chủ.
+ Referer: Cho biết địa chỉ của trang web tham chiếu tới.
o Header của HTTP request sẽ kết thúc bằng một dòng trống.
• Header trả lời:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291
Content-Type: text/html
Set-Cookie:
ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ;
path=/
Cache-control: private
o Dòng đầu là dòng trạng thái, để cho biết phiên bản HTTP được dung
(HTTP/1.1), mã trạng thái (200) và trạng thái (OK).
o Tiếp theo là các tham số.
SVTH: Nguyễn Mậu San
Trang 6
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
o Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là phần thân
của HTTP response.
1.3.3. Session
HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP không
lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này gây khó
khăn cho một số ứng dụng Website, bởi vì trình chủ không biết được trước đó trình
duyệt đã có những trạng thái nào. Vì thế, để giải quyết vấn đề này, ứng dụng Website
đưa ra một khái niệm phiên làm việc (Session). Còn SessionID là một chuỗi để chứng
thực phiên làm việc. Một số trình chủ sẽ cung cấp một SessionID cho người dung khi
họ xem trang Website trên trình chủ.
Để duy trì phiên làm việc thì sessionID thường được lưu vào :
+ Biến trên URL
+ Biến ẩn form
+ Cookie
Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được
cấu hình qui định tại trình chủ hoặc bởi ứng dụng thực thi. Trình chủ sẽ tự động giải
phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống.
1.3.4. Cookie
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và
trình duyệt của người dùng.
Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng
tạo ra để lưu trữ, truy tìm, nhận biết các thông tin về người dùng đã ghé thăm trang
Web và những vùng mà họ đi qua trong trang. Những thông tin này có thể bao gồm
tên, định danh người dùng, mật khẩu, sở thích, thói quen...cookie được trình duyệt của
người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào
trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện
lưu trữ đó hay không.
Ở những lần truy cập sau đến trang Website đó, ứng dụng có thể dùng lại những
thong tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo
SVTH: Nguyễn Mậu San
Trang 7
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Messenger!...) mà người dùng không phải làm lại thao tác đăng nhập hay phải cũng
cấp lại các thông tin khác.
Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent do
đó ta sẽ có 4 kiểu cookie là:
- Persistent và Secure
- Persistent và Non-Secure
- Non-Persistent và Secure
- Non-Persistent và Non-Secure
Persistent cookies
được lưu trữ dưới dạng tập tin .txt (ví dụ trình duyệt
Netscape Navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet
Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên máy
khách trong một khoảng thời gian xác định.
- Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ
bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web.
- Secure cookies chỉ có thể được gửi thông qua HTTPS (SSL).
- Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay HTTP.
Thực chất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ truyền bảo mật.
Domain
Flag
www.redhat.co
Path
FALSE
Secur Expirat
e
/
ion
FALSE
m
Name
Value
115402949
Apache
64.3.40.151.1
0
6
01899634924
7
480
o Domain: Tên miền của trang web đã tạo cookie ( trong ví dụ trên là
www.redhat.com)
o Flag: mang giá trị TRUE/FALSE -Xác định các máy khác với cùng tên miền có
được truy xuất đến cookie hay không.
o Path: Phạm vi các địa chỉ có thể truy xuất cookie.Ví dụ:
SVTH: Nguyễn Mậu San
Trang 8
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Nếu path là “/tracuu” thì các địa chỉ trong thư mục /tracuu cũng như tất cả các thư mục
con của nó như /tracuu/baomat có thể truy xuất đến cookie này. Còn nếu giá trị là “/”
thì cookie sẽ được truy xuất bởi tất cả địa chỉ thuộc miền trang web tạo cookie.
o Sercure: mang giá trị TRUE/FALSE - Xác định đây là một secure cookie hay
không nghĩa là kết nối có sử dụng SSL hay không.
o Expiration: thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00
giờ
GMT ngày 01/01/1970. Nếu giá trị này không được thiết lập thì trình duyệt sẽ hiểu đây
là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và sẽ xoá nó khi trình duyệt bị
đóng.
o Name: Tên biến (trong trường hợp này là Apache)
o Value: Với cookie được tạo ở trên thì giá trị của Apache là
64.3.40.151.16018996349247480 và ngày hết hạn là 27/07/2006, của tên miền
http://www.redhat.com.
Ví dụ chuỗi lệnh trong HTTP header dưới đây sẽ tạo một cookie:
Set-Cookie:Apache="64.3.40.151.16018996349247480"; path="/";
domain="www.redhat.com"; path_spec; expires="2006-07-27
19:39:15Z"; version=0
Các cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường dẫn
là: C:\Program Files\Netscape\Users\UserName\Cookies.txt
Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie và
được đặt trong [C:]\Documents and Setting\[username]\Cookies (Win2000), đối với
win9x, thư mục cookies nằm trong thư mục [C:]\Windows\cookies.
Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20
cookie. Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”.
1.3.5. Proxy
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặc biệt
hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host. Những
chương trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho
server thật sự mà người sử dụng cần giao tiếp.
SVTH: Nguyễn Mậu San
Trang 9
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không
đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho
client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như trả lời của
server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và client.
CHƯƠNG II: NGHIÊN CỨU CÁC HÌNH THỨC TẤN CÔNG
VÀ GIẢI PHÁP BẢO MẬT WEBSITE.
2.1 SQL Injection
2.1.1. Tìm hiểu về SQL Injection.
2.1.1.1. SQL Injection là gì?
Khi triển khai các ứng dụng Website trên Internet, nhiều người vẫn 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 tập trung vào các vấn đề như chọn hệ điều hành, hệ quản trị cơ sở dữ
liệu, webserver sẽ chạy ứng dụng, ... mà quên mất rằng ngay cả bản thân ứng dụng
chạy trên đó cũng tiềm ẩn một lỗ hổng bảo mật rất lớn. Một trong số các lỗ hổng này
đó là SQL injection. Tại Việt Nam, đã qua thời kì các quản trị website lơ là việc quét
virus, cập nhật các bản vá lỗi từ các phần mềm hệ thống, nhưng việc chăm sóc các lỗi
của các ứng dụng lại rất ít được quan tâm. Đó là lí do tại sao trong thời gian vừa qua,
không ít website tại Việt Nam bị tấn công và đa số đều là lỗi SQL injection. Vậy SQL
injection là gì ?
SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng
trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ
quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi hành các câu lệnh SQL bất hợp pháp
(không được người phát triển ứng dụ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, … 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 web 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.1.1.2. Các Dạng Tấn Công SQL Injection
SVTH: Nguyễn Mậu San
Trang 10
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập
(authorization bypass), sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng
các stored-procedures.
SVTH: Nguyễn Mậu San
Trang 11
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Để biết các website sử dụng CSDL SQL ta sử dụng các phần mềm hoặc các
công cụ tìm lỗi. Hoặc các công cụ tìm kiếm như Google. Và dùng các từ khóa tìm
kiếm như : inurl : product.php?id=
Hình 2.1. Một công cụ tìm Lổi SQL Injection.
Để biết website nào dính lỗi SQL Injection ta thêm dấu “ ’ ” vào sau thanh địa
chỉ. Ví dụ : http://www.doanchuyenganh.com/product.php?id=123’
SVTH: Nguyễn Mậu San
Trang 12
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Hình 2.2. Một site bị lổi SQL Injection.
2.1.2. Tấn công SQL Injection.
2.1.2.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.
Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các
trang Web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người
dùng nhập thông tin về tên đăng nhập và mật khẩu. 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. Trong trường hợp này, người ta có thể dùng
hai trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dùng để xử lí
thông tin nhập từ phía người dùng. Ví dụ:
Trang nhập liệu: login.htm
SVTH: Nguyễn Mậu San
Trang 13
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Trang xử lý nhập liệu: execlogin.asp
<%
Dim vUsrName, vPassword, objRS, strSQL
vUsrName = Request.Form("fUSRNAME")
vPassword = Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
If (objRS.EOF) Then
Response.Write "Invalid login."
Else
Response.Write "You are logged in as " & objRS("USR_NAME")
End If
Set objRS = Nothing %>
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.
Ví dụ, nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password
của trang login.htm là: ' OR ' ' = ' '. Lúc này, câu truy vấn sẽ được gọi thực hiện là:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD=
ORhợp
''=''lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn
Câu truy vấn này'' là
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ệ.
2.1.2.2. Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn
công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo 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.
SVTH: Nguyễn Mậu San
Trang 14
Đề tài: Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống
Ví dụ: http://www.doanchuyennganh.com/product.asp?ID=123 . Mã nguồn cho chức
năng này thường được viết khá đơn giản theo dạng:
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
Set objRS
= Nothing
Trong
các tình huống thông thường, đoạn mã này 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, giống như ví dụ
đăng nhập ở trước, đ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ư:
0 OR 1=1 (nghĩa là, http://www.doanchuyennganh.com/product.asp?ID=0 or 1=1).
Câu truy vấn SQL lúc này sẽ trả về tất cả các bài viết từ bảng dữ liệu vì nó sẽ
thực hiện câu lệnh:
SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1
Một trường hợp khác, ví dụ như trang tìm kiếm. Trang này cho phép người
dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:
SVTH: Nguyễn Mậu San
Trang 15
- Xem thêm -