Tải bản đầy đủ (.pdf) (74 trang)

Đồ án tốt nghiệp Nghiên cứu bảo đảm an toàn thông tin bằng kiểm soát “ Lỗ hổng “ trong dịch vụ 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, 74 trang )







Đồ án tốt nghiệp

Nghiên cứu bảo đảm an toàn
thông tin bằng kiểm soát “
Lỗ hổng “ trong dịch vụ Web






1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
-----oo0oo-----



NGHIÊN CỨU BẢO ĐẢM AN TOÀN THÔNG TIN BẰNG
KIẾM SOÁT “LỖ HỔNG” TRONG DỊCH VỤ WEB




ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY


Nghành: Công Nghệ Thông Tin








HẢI PHÒNG-2007


MỤC LỤC
Bảng chú giải từ viết tắt………………………………………………………..3
Lời mở đầu……………………………………………………………………..4

2
Chương 1: KHÁI NIỆM CƠ SỞ……………………………………………....7
1.1. KHÁI NIỆM VỀ BẢO VỆ WEB...……………………………………..7
1.2. ỨNG DỤNG WEB…………………………………………………….12
1.2.1. Khái niệm ứng dụng web…………………………………………...…12
1.2.2. Hoạt động của ứng dụng web………………………………………….13
1.3. MỘT SỐ CÔNG CỤ BẢO VỆ WEB.………………………………...15
Tường lửa……………………………………………………………...15
Mạng riêng ảo...……………………………………………………….17

Chương 2: CÁC KỸ THUẬT TẤN CÔNG LỢI DỤNG LỖ HỔNG………..18
2.1. CHÈN THAM SỐ……………………………………………………..18
2.1.1. Chỉnh sửa HTTP Header………………………………………………18
2.1.2. Chỉnh sửa địa chỉ URL………………………………………………...21

2.1.3. Chỉ
nh sửa trường ẩn Form……………………………………………..22
2.1.4. Thao tác trên cookie………………………………………………...…24
2.2. CHÈN MÃ LỆNH TRÊN TRÌNH DUYỆT …………….…………….27
2.2.1. Phương pháp tấn công XSS……………………………………………27
2.2.2. Biện pháp phòng tránh……………………………………………...…31
2.3. CHÈN CÂU LỆNH TRUY VẤN ………………………………….....32
2.3.1. Tấn công vượt qua kiểm tra đăng nhập……………………………......32
2.3.2. Tấn công dựa vào câu lệnh SELECT………………………………....34
2.3.3. Tấn công dựa vào câu lệnh INSERT…………………………………..36
2.3.4. Tấn công dựa vào Store-Procedure…………………………………....37
2.3.5. Biện pháp phòng tránh…………………………………………...……38


2.4. TẤN CÔNG DỰA VÀO “KIỂU QUẢN LÝ PHIÊN LÀM VIỆC…..40
2.4.1. Tấn công kiểu “ấn định phiên làm việc”……………………………...41
2.4.2. Tấn công kiểu “đánh cắp phiên làm việc”…………………………….45
2.4.3. Biện pháp phòng tránh………………………………………………...46


2.5. TẤ
N CÔNG “TỪ CHỐI DỊCH VỤ”………………………………….47
2.5.1. Khái niệm DoS………………………………………………………...47
a/ Lợi dụng TCP thưc hiện Synflood………………………………….49

3
b/ Tấn công vào băng thông…………………………………………...50
c/ DdoS………………………………………………………………...52
2.5.2. Biện pháp phòng
tránh…………………………………………………53

2.6. NGÔN NGỮ PHÍA TRÌNH CHỦ……………………………………..54
2.7. TẤN CÔNG “TRÀN BỘ ĐỆM”………………………………………56

Chương 3: TỔNG KẾT KỸ THUẬT TẤN CÔNG CỦA HACKER………...58
3.1. THU THẬP THÔNG TIN Ở MỨC HẠ TẦNG CỦA MỤC TIÊU…...58
3.2. KHẢO SÁT ỨNG DỤNG WEB………………………………………61
Ví dụ thử nghiệm……………………………………………………………..63





















Bảng chú giải từ viết tắt




4
DNS Domain Name System Hệ thống tên miền
ACK Acknowlegment Xác nhận
CSDL Cơ sở dữ liệu
SYN Synchronize Đồng bộ
TTL Time TO Live Thời gian tồn tại
FIN Fully Intergrated Netword Mạng tích hợp đầy đủ
HTTP Hyper Text Transfer protocol Giao thức truyền siêu văn bản
SSL Secure Socket Layer Khe cắm an toàn
HTTPS HTTP + SSL
Hacker Tin tặc
CGI Common Gateway Interface Giao diện cổng thông thường
IP Internet Protocol Giao thức mạng
TCP Transfer Control Protocol Giao thức điều khiển truyền thông
SSI Server Side Include Ngôn ngữ phía trình chủ
URI Uniform Resour Identifies Con trỏ đến tài nguyên web
URL Uniform Resour Locator Định vị tài nguyên web
CSV Client Side Validator Kiểm tra ngôn ngữ phía trình duyệt
dbo Data base owner Người sở hữu cơ sở dữ liệu
Sa System Administrator Người quản trị hệ thống
IIS Internet Information Server Dịch vụ thông tin mạng
OWASP The open web Appllication
standard project
Dự án ứng dụng web
HTML Hyper Text Markup Language Ngôn ngữ đánh dấu siêu văn bản
IIS Internet Infomation Server








LỜI MỞ ĐẦU


Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có

5
nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện
các phiên giao dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của
các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi
(lỗ hổng) và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công
với các mục đích khác nhau. Đôi khi, cũng chỉ đơn giản là để thử
tài hoặc đùa
bỡn với người khác.

Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên đó,
số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi
các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng
truy nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập
nhiều đến vấn đề bảo đảm an toàn dữ liệu cho các máy tính được kế
t nối vào
mạng Internet.


Theo số liệu của CERT (Computer Emegency Response Team -
"Đội cấp cứu máy tính"): “số lượng các vụ tấn công trên Internet được

thông báo cho tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm
1991, 1400 vào năm 1993, và 2241 vào năm 1994, và năm 2001 là 5315 vụ.”

Nguyên nhân chủ yếu làm cho các vụ tấn công tăng nhanh là do có rất
nhiều “lỗ hổng” được tìm thấy trên các ứng dụng web. Theo thống kê của
Symantec “năm 2004 có 49% số lượng lỗ hổ
ng được tìm thấy trong các ứng
dụng web. Từ tháng 7 đến tháng 11 năm 2006, xác định lỗ hổng bảo mật nằm
trong ứng dụng web chiếm tới 75%, tăng 15% so với đầu năm”


Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet,
máy tính của các công ty lớn như AT&T, IBM, các trường đại học, các cơ quan

6
nhà nước, các tổ chức quân sự, nhà băng... Một số vụ tấn công có quy
mô khổng lồ (có tới 100.000 máy tính bị tấn công). Hơn nữa, những con số
này chỉ là phần nổi của tảng băng. Một phần rất lớn các vụ tấn công không được
thông báo, vì nhiều lý do như: nỗi lo bị mất uy tín, hoặc đơn giản những người
quản trị hệ thống không hay biết những cuộ
c tấn công đang nhằm vào hệ thống
của họ. (Một ví dụ điển hình là cuộc tấn công vào phần mềm thương mại
của IBM tháng 3/2001, hai hacker đã tìm thấy lỗ hổng trên ứng dụng mà bất
cứ ai với một trình duyệt Web cũng có thể lấy tài khoản của người dùng, thậm
chí cả người quản trị).

Không chỉ số lượng các cuộc tấn công tăng lên nhanh chóng, mà các
phươ
ng pháp tấn công ngày càng tinh vi và có tổ chức. Mặt khác, việc quản trị
các hệ thống mạng đòi hỏi nhà quản trị hệ thống có kiến thức và kinh nghiệm

về hệ thống mạng chắc chắn, do đó sự yếu kém trong quản lý sẽ tạo nhiều điều
kiện cho các hacker khai thác.

Cũng theo CERT, những cuộc tấn công thời kỳ 1988-1989 chủ yếu là
đoán “tên người sử dụng/mậ
t khẩu” (UserID/password) hoặc sử dụng lỗi của
các chương trình và hệ điều hành (security hole) làm vô hiệu hệ thống bảo vệ,
tuy nhiên các cuộc tấn công vào thời gian gần đây còn bao gồm cả các thao tác
như giả mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các
phiên làm việc từ xa (telnet hoặc rlogin), cài trojan hay worm để kiểm soát
hay điều khiển máy tính…vì thế, nhu cầu bảo vệ thông tin trên Internet là cần
thiết nhằm mục đích b
ảo vệ dữ liệu, bảo vệ thông tin người dùng và bảo vệ hệ
thống.

Khi nói đến vấn đề bảo mật, hầu hết các chuyên gia bảo mật đều chú trọng
đến sự an toàn của hệ thống mạng và hệ điều hành. Để bảo vệ hệ thống, phương
pháp thường được chọn là sử dụng firewall. Tuy nhiên, theo tuyên bố của

7
CSI/FBI : 78% nơi bị hại có sử dụng firewall và 59% thì bị tấn công thông qua
Internet, cụ thể hơn là theo báo cáo của CSI/FBI Computer Crime và Security
Survey thì tổng số thiệt hại do những ứng dụng Web bị tấn công từ năm 1997
đến năm 2006 là hơn 800 triệu đôla Mỹ.


Với những công cụ tự động tìm lỗ hổng tuy giúp rất nhiều cho những
nhà lập trình Web nhưng vẫn không thể ngăn chặn toàn bộ vì công nghệ
Web
đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mĩ, yếu

tố tốc độ…) nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công
không nằm trong khuôn khổ vài kĩ thuật đã phát hiện, mà linh động và tăng lên
tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập
trình ứng dụng.















Chương 1: KHÁI NIỆM CƠ SỞ

1.1. KHÁI NIỆM VỀ BẢO VỆ WEB

8
Bảo vệ web không còn là khái niệm xa lạ đối với những người lập trình
web, những nhà quản trị mạng,…
Mục tiêu bảo vệ web gồm có:
Bảo mật: Thông tin không được đọc trái phép.
Bảo toàn: Thông tin không bị sửa đổi một cách trái phép.
Bảo đảm tính sẵn sàng:

Người dùng hợp pháp có quyền truy cập hay sử dụng thông tin.

Hai đối tượng chính trong sử dụng dịch vụ web là người dùng và người
quản trị h
ệ thống.
Phía người dùng dịch vụ web, an toàn trên mạng trước hết là yêu cầu đặt
ra với server. Thứ nhất, những yêu cầu gửi đến server phải được thưc thi và phản
hồi trong thời gian nhất định (tính sẵn sàng). Thứ hai, thông tin gửi tới phải được
đảm bảo không bị virut hay bị sửa đổi bởi tác nhân khác (tính toàn vẹn). Thứ ba,
server không phổ biến thông tin cá nhân trên mạng (tính bí mật).
Phía nhà quản trị hệ
thống, họ có những yêu cầu cũng khá giống với
người dùng nhưng nhìn dưới một góc độ khác. Thứ nhất, họ phải đảm bảo rằng
người dùng không thể xâm nhập vào server để thay đổi nội dung của website
(tính toàn vẹn). Thứ hai, người dùng không thể truy cập vào các thông tin không
thuộc quyền của họ (tính bí mật và bắt buộc). Thứ ba, người dùng không thể tấn
công server làm nó không thể phục vụ người dùng khác (tính sẵn sàng). Th
ứ tư,
người dùng đã được nhận dạng phải chịu trách nhiệm và không thể chối bỏ hành
động của mình (tính xác thực).



 Đối tượng tấn công mạng (Intruder):

9
là cá nhân hoặc tổ chức sử dụng các công cụ phá hoại như phần mềm hoặc
phần cứng để dò tìm các điểm yếu, lỗ hổng bảo mật trên hệ thống, thực hiện các
hoạt động xâm nhập và chiếm đoạt tài nguyên mạng trái phép.
Một số đối tượng tấn công mạng:

Tin tặc
(Hacker):
là kẻ xâm nhập mạng trái phép bằng cách sử dụng các công cụ phá
mật khẩu hoặc khai thác điểm yếu của các thành phần truy nhập trên hệ thống.
Kẻ giả mạo
(Masquerader):
là kẻ giả mạo thông tin trên mạng. Một số hình thức giả mạo như
giả mạo địa chỉ IP, tên miền, định danh người dùng…
Kẻ nghe trộm (
Evesdropping):
là đối tượng nghe trộm thông tin trên mạng sử dụng các công cụ
sniffer, sau đó dùng các công cụ phân tích và debug để lấy được các thông tin có
giá trị.
Mục đích: ăn cắp thông tin có giá trị về kinh tế, phá hoại hệ thống mạng
có chủ định hoặc cũng vó thể chỉ là những hành động vô ý thức nhằm thử
nghiệm các chương trình không kiểm tra cẩn thận,…

 Lỗ hổng bảo mật:

là những yếu kém trên hệ thống hoặc ẩn chứa trong một dịch vụ nào đó,
mà dựa vào đó kẻ tấn công có thể xâm nhập trái phép để thực hiện các hành
động phá hoại hoặc chiếm đoạt tài nguyên bất hợp pháp.
Nguyên nhân gây ra các lỗ hổng bảo mật là khác nhau:
do lỗi bản thân hệ thống, do phần mềm cung cấp, hoặc do người
quản trị yếu kém không hiểu sâu sắc các dịch v
ụ cung cấp,…
Mức độ ảnh hưởng của các lỗ hổng là khác nhau:
có lỗ hổng chỉ ảnh hưởng tới chất lượng dịch vụ, có lỗ hổng ảnh hưởng
sâu sắc tới toàn bộ hệ thống,….
 Một số hình thức tấn công mạng


10
Dựa vào lỗ hổng bảo mật trên mạng:
lỗ hổng này thường là những điểm yếu của dịch vụ mà hệ thống cung cấp.
Sử dụng các công cụ để phá hoại:
ví dụ các chương trình phá khóa mật khẩu để truy cập bất hợp pháp vào
chương trình.
Kẻ tấn công có thể kết hợp cả hai hình thức trên để đạt được mục đích.
Tùy thuộc vào cách t
ấn công mà mức nguy hại tới hệ thống là khác nhau.

Các mức tấn công hệ thống:
Mức 1: Tấn công vào một số dịch vụ mạng: web, email,… dẫn đến
Nguy cơ lộ thông tin về cấu hình mạng.

Mức 2: Kẻ phá hoại dùng tài khoản của người dùng hợp pháp để chiếm
đoạt tài nguyên hệ thống. Kẻ phá hoại có thể thay đổi quyền truy nhập qua các
lỗ hổng bảo m
ật hoặc đọc các thông tin trong tập tin liên quan đến truy nhập hệ
thống như: /etc/passwd (Linux) và SAM file (windows).

Mức 3,4,5: Kẻ phá hoại không sử dụng quyền của người dung thông
thường, mà có thêm một quyền cao hơn với hệ thống như quyền kích hoạt một
số dịch vụ, xem các thông tin khác trên hệ thống.

Mức 6: Kẻ tấn công chiếm được quyền root hoặc admin trên hệ thống.








Các mức bảo vệ an toàn mạng

11
Vì không có biện pháp an toàn tuyệt đối, nên phải dùng nhiều mức bảo
vệ khác nhau, tạo thành rào chắn đối với các hoạt động xâm phạm. Việc bảo vệ
thông tin trên mạng chủ yếu là bảo vệ thông tin cất giữ trong các máy tính, đặc
biệt là trong các server mạng.
Các lớp rào chắn bảo vệ thông tin các trạm của mạng:

Lớp thứ nhất: qui định quyền truy nhập các thông tin của mạng và quyền
hạn trên tài nguyên đ
ó, cụ thể là các tệp tin.
Lớp thứ hai: hạn chế theo tài khoản truy nhập gồm đăng ký tên và mật
khẩu tương ứng. Đây là phương pháp bảo vệ phổ biến nhất vì nó đơn giản, ít tốn
kém và cũng có hiệu quả. Mỗi người sử dụng muốn truy cập vào mạng phải có
đăng ký tên và mật khẩu. Người quản trị hệ thống có trách nhiệm quản lý, kiểm
soát mọi ho
ạt động mạng và xác định quyền truy cập của người dùng khác tùy
theo thời gian và không gian.
Lớp thứ ba: sử dụng các phương pháp mã hóa. Dữ liệu được biến đổi từ
dạng đọc được sang dạng “khó” đọc, theo một thuật toán nào đó.
Lớp thứ tư: lớp bảo vệ vật lý nhằm ngăn cản các truy nhập vật lý bất hợp
pháp vào hệ thống. Thường dùng các biện pháp truyền thống nh
ư ngăn chặn
người không có nhiệm vụ vào phòng máy, dùng các hệ thống khóa trên máy
tính, cài các hệ thống báo động khi có truy nhập trái phép.
Lớp thứ năm: cài đặt các hệ thống tường lửa, nhằm ngăn chặn các truy

nhập trái phép và cho phép lọc các gói tin không muốn gửi đi, hoặc nhận vào vì
lý do nào đó.
 Nguyên nhân của các vụ tấn công:

12
Có rất nhiều nguyên nhân dẫn đến tình trạng bảo mật kém của ứng dụng
web. Tuy nhiên ta có thể tổng kết một số nguyên nhân chính:
+ Các ứng dụng web được viết dựa trên cơ chế bảo mật client_server chuẩn
đơn giản. Khi xây dựng giao thức HTTP, người ta chưa tính đến vấn đề bảo mật
cho giao thức này. Do vậy việc xuất hiện nhiều lỗ hổng bảo mật là điều d
ễ hiểu.
+ Sự phức tạp của các ứng dụng web làm cho việc viết các đoạn mã bảo mật rất
khó khăn. Các ngôn ngữ lập trình mới ra đời, các chuẩn về định dạng dữ liệu,…
làm cho các ứng dụng web thêm phức tạp.
+ Những người phát triển web tập trung nhiều vào chức năng và tốc độ chứ
không phải bảo mật. Các bước xây dựng một ứng dụng web là
phân tích- thiết
kế- lập trình- kiểm thử. Ở các bước này, vấn đề bảo mật thông thường chỉ được
quan tâm ở giai đoạn cuối. Ở giai đoạn này nếu phát hiện ra các lỗ hổng về bảo
mật thì cũng chỉ vá lỗi chứ không giải quyết triệt để các lỗi đó.
+ Lỗi nằm trong các dịch vụ nền tảng web như: hệ điều hành, trình duy
ệt web,
các công cụ lập trình web. Theo thống kê của IBM’s waston Research Lab, cứ
1500 dòng mã lệnh có một lỗ hổng được tìm thấy. Hệ điều hành winXP có tới
45 000 000 dòng lệnh (có 30 000 lỗ hổng), còn win2000 có 35 000 000 dòng mã
(khoảng 23 000 lỗ hổng)
+ Nội dung trang web thường xuyên thay đổi.
+ Nhà quản trị mạng còn yếu kém về năng lực và sử dụng dịch vụ.









1.2. KHÁI NIỆM ỨNG DỤNG WEB

13
1.2.1.Khái niệm
Khi trang web tồn tại trên Internet, nó được lưu trữ tại nơi nào đó để người
dùng truy xuất tới, đó chính là webserver. Webserver có nhiệm vụ lưu trữ các
trang web để webclient truy xuất tới. Ứng dụng Web là một ứng dụng chủ/khách
(client/server) sử dụng giao thức HTTP (1.2.2) để tương tác với người dùng hay
hệ thống khác.
Trình khách dành cho người dùng thường là một trình duyệt Web như
Internet Explorer hay Netscape Navigator. Cũng có thể là một chương trình
đóng
vai trò đại lý người dùng hoạt động như một trình duyệt tự động. Người dùng
gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang
Web. Các chương trình có thể là các trang trao đổi mua bán, các diễn đàn, gửi
nhận e-mail…
Tốc độ phát triển các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất
nhanh. Trước đây những ứng dụng Web thường được xây dựng bằng CGI
(Common Gateway Interface), được chạy trên các trình chủ Web và có th
ể kết
nối vào các CSDL đơn giản trên cùng máy chủ. Ngày nay ứng dụng Web thường
được viết bằng Java (hay các ngôn ngữ tương tự), và chạy trên máy chủ phân
tán, kết nối đến nhiều nguồn dữ liệu.
Một ứng dụng web thường có kiến trúc:


Hình 1: Kiến trúc của ứng dụng Web
Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài

14
ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web.
Lớp ứng dụng: là nơi xử lý của ứng dụng Web. Nó sẽ xử lý thông tin người
dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày”. Lớp
này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, PHP hay
ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic,
Apache, IIS…
Lớp dữ liệu: thường là các hệ quản trị CSDL (DBMS-database
management system) chịu trách nhiệm quản lý các file dữ liệu và quyền sử
dụng.

1.2.2. Hoạt động



Hình 2: Mô hình hoạt động của một ứng dụng Web

Mô hình hoạt động của một ứng dụng web thường có:
¾ Trình khách (trình duyệt (client)): Internet Explorer, Netscap Navigator.
¾ Trình chủ (Server): Apache, IIS, ….
¾ Hệ quản trị CSDL : SQL Server, MySQL, Access….



Mô tả hoạt động:


15
Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web 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 CSDL, lưu các thông tin do trình khách gửi đến…và từ đó tr
ả về
cho trình khách một luồng dữ liệu có định dạng theo “giao thức HTTP”
( là cách thức trình khách/ trình chủ giao tiếp với nhau, và qui định cấu trúc dữ
liệu trao đổi trên đường truyề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 hình 2, 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 tin tặc tìm thấy vài lỗ hổng trong ứng dụng Web thì tường
lửa không còn hữu dụng trong việc ngăn chặn kẻ tấn công đó. 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 Web
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, tin tặc
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ác.




1.3. MỘT SỐ CÔNG CỤ BẢO VỆ WEB

16
1.3.1. Tường lửa (firewall)
Tường lửa là một công cụ được tích hợp vào hệ thống mạng để chống lại
sự truy cập trái phép nhằm bảo vệ các nguồn thông tin nội bộ cũng như hạn chế
sự xâm nhập vào hệ thống của một số thông tin khác không mong muốn.
Internet FireWall là một tập hợp thiết bị (bao gồm phần cứng và phần
mềm) giữa mạng c
ủa một tổ chức, một công ty, hay một quốc gia (Intranet) và
Internet.

Hình 3: Truy cập thông qua tường lửa
Chức năng:
Tường lửa quyết định những dịch vụ nào từ bên trong được phép truy cập
từ bên ngoài, những người nào từ bên ngoài được phép truy cập đến các dịch vụ
bên trong, và cả những dịch vụ nào bên ngoài được phép truy cập bởi những
người bên trong.

FireWall bao gồm :
Một hoặc nhiều hệ thống máy chủ kết nối với các bộ định tuyến (router)
hoặc có chức năng router.
Các phần mềm quản lí an ninh chạy trên hệ thống máy chủ. Thông thường
là các hệ quản trị xác thực (Authentication), cấp quyền (Authorization) và kế
toán (Accounting).

Nhiệm vụ cơ bản của FireWall là bảo vệ:

17

+ Dữ liệu: Những thông tin cần được bảo vệ do những yêu cầu: Bảo mât, tính
toàn vẹn, tính kịp thời.
+ Tài nguyên hệ thống.
+ Danh tiếng của công ty sở hữu các thông tin cần bảo vệ.
+ Chống lại những tấn công từ bên ngoài.
- Cách thứ nhất là dùng phương pháp dò mật khẩu trực tiếp: đoán mật
khẩu thủ công hoặc dùng các công cụ phá mật khẩu.
- Cách thứ hai là dùng lỗi của các chương trình
ứng dụng và bản thân hệ
điều hành đã được sử dụng từ những vụ tấn công đầu tiên và vẫn chiếm quyền
truy cập (có được quyền của người quản trị hệ thống).
+ Nghe lén thông tin.
+ Giả mạo địa chỉ IP.

Hạn chế:
Không đủ thông minh để có thể đọc hiểu từng loại thông tin và phân tích
nội dung tốt hay xấu của nó. Tường lửa chỉ có thể
ngăn chặn sự xâm nhập của
thông tin không mong muốn, nhưng phải xác định rõ thông số địa chỉ.
Không thể ngăn chặn cuộc tấn công, nếu không đi qua nó.
Cụ thể: nó không thể chống lại tấn công từ một đường dial-up (dịch vụ quay số),
hoặc sự rò rỉ thông tin do dữ liệu bị sao chép bất hợp pháp lên đĩa mềm.
Không thể chống lại cuộc tấn công bằng dữ
liệu. Khi có một số chương
trình được chuyển theo thư điện tử, vượt qua tường lửa vào trong mạng được
bảo vệ và bắt đầu hoạt động ở đây.
Không thể làm nhiệm vụ rà quét virut trên các dữ liệu được truyền qua nó.





1.3.2. Mạng riêng ảo (VPN-Virtual Private Network)

18
VPN gồm các máy tính kết nối với nhau qua mạng Internet, nhưng sử
dụng các biện pháp xác thực bằng mật khẩu và mã hoá dữ liệu để tạo thành một
mạng riêng biệt giả lập.
Hệ thống VPN phân chia một cách logic. Hệ thống mạng riêng được xây
dựng trên nền tảng hạ tầng chung, hay hạ tầng công cộng ứng dụng các công
nghệ đảm bảo tự triển khai được sự phân chia tài nguyên, và sự an toàn c
ủa dữ
liệu, hoặc do nhà cung cấp dịch vụ cung cấp. Mạng VPN có thể xây dựng trên
Internet hoặc trên giao thức IP, hay hạ tầng ATM của nhà cung cấp dịch vụ.














Hình 4: cấu trúc mạng riêng ảo

VPN thực hiện kết nối điểm-điểm, các dòng dữ liệu và thông tin liên kết

người dùng được truyền trên mạng chung trong một ống ảo (tunnel). Ống ảo
giữa hai người dùng xuất hiện như một liên kết riêng -> thông tin an toàn và bảo
mật hơn khi truyền trên nó. VPN không duy trì liên kết cố định giữa các điểm
cuối, kết nối chỉ tạo khi cần, khi không cần nữa thì mạng lại dành dung lượng và
tài nguyên mạng cho mục đích khác.


Chương 2:
CÁC KĨ THUẬT TẤN CÔNG LỢI DỤNG

19
“LỖ HỔNG” VÀ BẢO VỆ WEB
2.1. TẤN CÔNG KIỂU “CHÈN THAM SỐ” (Parameter Tampering)

2.1.1. Chỉnh sửa HTTP Header (HTTP Header malipulation)
Khái niệm “HTTP Header”
HTTP Header là phần đầu của thông tin mà trình khách và trình chủ gửi cho
nhau. Thông tin trình khách gửi cho trình chủ là HTTP requests (yêu cầu),
ngược lại 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ỉ đuợc dùng riêng trong từng loại.
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

<HTML>
Dòng đầu cho biết phương thức yêu cầu (GET hoặcPOST), địa chỉ yêu cầu
(/tintuc/homnay.asp) và phiên bản HTTP/1.1.
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.
User-Agent: thông tin từ máy người dùng.
Accept-Encoding: kiểu mã hóa dữ liệu.
Header của HTTP request sẽ kết thúc bằng một dòng trống.


20
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

<HTML>

<BODY>
Dòng đầu là dòng trạng thái, để cho biết phiên bản HTTP được dùng
(HTTP/1.1), mã trạng thái (200) và trạng thái (OK).
Server: trình duyệt máy chủ sử dụng.
Date: thời gian trả lời yêu cầu.
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.


Cách tấn công:

Thông thường chỉ có trình duyệt và trình chủ trao đổi HTTP Header, còn
hầu hết các ứng dụng web thì không. Hacker có thể tự viết chương trình để điều
khiển HTTP header (như xem n
ội dung, tạo mới), hay sử dụng các proxy miễn
phí, cho phép thay đổi dữ liệu được gửi từ trình duyệt. Ngoài ra hacker có thể
tấn công trực tiếp bằng cách đăng nhập từ xa gửi HTTP Request đến trình chủ.




21
Ví dụ 1:
su-2.05# telnet localhost 80
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET / HTTP/1.0
Referer: www.redhat.com/login.asp

User-Agent: <!--#exec cmd="/bin/id"-->
HTTP/1.1 200 OK
Date: Mon, 17 Dec 2001 20:39:02 GMT Server:

Connection: close
Content-Type: text/html

Ví dụ 2:
Referer header chứa URL của trang web (nơi yêu cầu được gửi đi). Vì thế
một vài ứng dụng sẽ kiểm tra thành phần này trong header để đảm bảo rằng nó
được gửi từ trang web của ứng dụng đó.
Việc làm này dùng để ngăn chặn hacker lưu lại trang web xuống máy,
chỉnh sửa thuộc tính form, phá hoại bằng cách nhằm vào CSV hay SSI, sau đó
gửi đi. Phương pháp kiểm tra này thất bại khi hacker có thể sử
a lại Referer
header, giống như được gửi từ trang web hợp lệ:
Referer: www.redhat.com/login.asp




Biện pháp khắc phục

+ Không tin tưởng vào HTTP header nếu chưa có các biện pháp an toàn.
+ Với các header gửi từ trình chủ thì có thể được mã hoá.
+ Với các header gửi từ trình khách thì không nên dùng các tham số
như referer,… để thực hiện các biện pháp an toàn.






22

2.1.2. Chỉnh sửa địa chỉ URL (URL Malipulation)
Khái niệm:
Khi nhập một form HTML thì kết quả sẽ được gửi đi theo hai
cách: GET hay POST. Nếu dùng GET, thì tất cả các tên biến và giá trị của
nó sẽ xuất hiện trong chuỗi URL.
Ví dụ 3: Có một trang web ứng dụng cho phép thành viên được thay đổi
mật khẩu.

Với:
+ username là tên người cần thay đổi mật khẩu.
+ newpass là mật khẩu mới cho username
Tuy nhiên, bằng cách thay đổi tham số như sau:
/>
Hacker đã có thể thay đổi mật khẩu của admin bằng một mật khẩu mới bất
kì, trong ví dụ này là ‘111111’

Biện pháp khắc phục:
Để chống lại kiểu thay đổi nội dung một chuỗi URL, ứng dụng có thể áp
dụng biện pháp sau:
¾
Ứng dụng sử dụng cơ chế bảng băm (hash table). Sau khi người dùng

chứng
thực thành công với một username, ứng dụng sẽ sinh ra m
ột khoá tương
ứng. Khoá này sẽ được lưu trên server cùng với biến username trong đối
tượng bảng băm. Mỗi khi người dùng kết nối đến ứng dụng, khoá và username
này sẽ được gửi đi và được so sánh với khoá và username trong bảng băm. Nếu
tương ứng với bản ghi trong dữ liệu thì hợp lệ. Còn nếu không thì server biết
rằng người dùng đã thay đổi URL.

¾ Ngoài ra, với những thông tin có giá trị, cần mã hoá chúng trước khi
cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý.



23
2.1.3. Chỉnh sửa trường ẩn Form (Hidden Form Field Malipulation)
Khái niệm
Thông tin có thể được chuyển đổi thông qua một trường ẩn của form,
gọi là Hidden Form Field. Trường ẩn form không hiển thị trên màn hình
trình duyệt nhưng người dùng có thể tìm thấy nội dung của nó trong “view
source”, đây là điểm yếu để hacker lợi dụng bằng cách lưu nội dung trang
web xuống trình duyệt, thay đổi nội dung trang và gửi đến trình chủ.

Ví dụ 4:
Form gốc có n
ội dung như sau:

<form action=" method="POST">

...

<input type="hidden" name="giaca" value="99.99">

...

</form>

Nếu không có sự thay đổi nào thì yêu cầu đến trình chủ có nội dung :


POST /cuahang.pl HTTP/1.0

...

giaca=99.99

Nhưng nếu hacker gán một giá trị khác cho trường “giaca” :

<form action=" method="POST">

...

<input type="hidden" name="giaca" value="0.99">

...

</form>


thì yêu cầu sẽ thay đổi:

POST /cuahang.pl HTTP/1.0

...

giaca=0.99





24
Biện pháp khắc phục

Chỉ nên sử dụng trường ẩn của form để hiển thị dữ liệu trên trình duyệt,
không được sử dụng giá trị của biến để thao tác trong xử lí ứng dụng.
Dùng biến HTTP_REFERER để kiểm tra nguồn gốc của yêu cầu gửi
đến, tuy nhiên hacker có thể sử dụng Proxy để che dấu nguồn gốc thực của nó, vì
vậy cũng không nên quá tin tưởng biế
n HTTP_REFERER để kiểm tra.
Ghép tên và giá trị của biến ẩn thành một chuỗi đơn. Sử dụng thuật toán
mã hoá hoặc một kiểu hash một chiều khác để tổng hợp chuỗi đó và lưu nó vào
một hidden field gọi là “Chuỗi mẫu”. Khi giá trị trong form được gửi đi, các thao
tác như trên được thực hiện lại với cùng một khoá mà ta định trước. Sau đó đem
so sánh với “Chuỗi mẫu”, nếu chúng không khớp nhau thì chứ
ng tỏ giá trị trong
biểu mẫu đã bị thay đổi.
Dùng một sessionID để tham chiếu đến thông tin được lưu trữ trên
CSDL.

























×