Tải bản đầy đủ (.doc) (93 trang)

XÂY DỰNG PHẦN MỀM QUÉT LỖ HỎNG CHO WEBSITE

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.46 MB, 93 trang )

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG PHẦN MỀM QUÉT LỖ
HỎNG CHO WEBSITE
Giảng viên hướng dẩn: TS ĐÀM QUANG HỒNG HẢI
Sinh viên thực hiện: NGUYỄN XUÂN PHÚ 07520275
TRẦN THỊ THU NHÂN 07520257
Lớp: MMT02
Khóa: 2007 - 2012
TP. Hồ Chí Minh, tháng 2 năm 2012
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ó nhu
cầu giới thiệu, quảng bá thông tin của doanh nghiệp mình và thực hiện các phiên giao
dịch trực tuyến. Vấn đề này làm nảy sinh ra các cuộc tấn công Web dựa trên các lỗi phát
sinh trong quá trình vận hành trang Web. Cùng với sự phát triển không ngừng của
Internet và các dịch vụ trên Internet, số lượng các vụ tấn công trên Internet cũng tăng
theo.
Vì vậy, vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào
mạng Internet và đảm bảo an toàn dữ liệu cho chính bản thân server đang chạy trang Web
là điều cần thiết.
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 là quan tâm đến yếu tố thẩm mĩ, 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ổ các kỹ thuật đã phát hiện,
mà linh động và tăng lên tùy vào các lỗi của trang Web.
Khóa luận được thực hịên với mục đích tìm hiểu, phân tích các lỗ hổng bảo mật
trong các ứng dụng web(cùng với chương trình minh họa) để qua đó đề xuất các phương
án phòng chống và sửa chữa.
Luận văn gồm:


Chương 1- TỔNG QUAN: nội dung phần này là giới thiệu ứng dụng web,các khái
niệm liên quan đến kỹ thuật tấn công vào Website.
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
Chương 2- CƠ SỞ LÝ THUYẾT: nội dung phần này trình bày sơ lược các kỹ
thuật tấn công website thường gặp, mô tả chi tiết một số kỹ thuật dùng trong tấn công và
đưa ra biện pháp phòng chống cho từng kỹ thuật.
Chương 3 –GIẢI PHÁP KỸ THUẬT XÂY DỰNG PHẦN MỀM WEB CHECK:
nội dung phần này trình bày công cụ tạo ra phần mềm, cấu trúc cơ sở dữ liệu, và phương
pháp xây dựng chương trình
Chương 4 – CHƯƠNG TRÌNH WEB CHECK: nội dung phần này sẻ mô tả và
hướng dẩn cách sử dụng chương trình.
Chương 5 – TỔNG KẾT: nội dung phần này sẻ đánh giá kết quả đạt được và đưa
ra hướng phát triển.
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
LỜI CẢM ƠN
Sau 4 tháng nổ lực thực hiên, luận văn “Xây dựng phần mềm quét lổ hỏng cho
website” đã phần nào hoàn thành. Ngoài sự cố gắng hết mình của bản thân, chúng em đã
nhận được sự khích lệ rất nhiều từ phía nhà trường, thầy cô, gia đình và bạn bè.
Trước hết chúng em xin cảm ơn ba mẹ đã luôn động viên và tạo mọi điều kiện tốt để
chúng con học tập và hoàn thành luận văn tốt nghiệp này.
Chúng em xin cảm ơn thầy cô trường Đại Học Công Nghệ Thông Tin đã truyền đạt
những kiến thức quý báu cho chúng em trong suốt quá trình học tập. Đặc biệt, chúng em
xin bày tỏ lòng biết ơn chân thành, sâu sắc đến thầy Đàm Quang Hồng Hải, người đã tận
tình hướng dẩn và giúp đỡ chúng em trong suốt quá trình làm khóa luận tốt nghiệp.
Xin cảm ơn tất cả bạn bè đã và đang động viên, giúp đỡ chúng tôi trong quá trình học
tập và hoàn thành tốt khóa luận tốt nghiệp này
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
NHẬN XÉT
(Của giảng viên hướng dẩn)

















Tp HCM Ngày….Tháng….Năm
Ký tên
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
NHẬN XÉT
(Của giảng viên phản biện)

















Tp HCM Ngày….Tháng….Năm
Ký tên
MỤC LỤC
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
TỔNG QUAN 1
CƠ SỞ LÝ THUYẾT 14
GIẢI PHÁP KỸ THUẬT XÂY DỰNG PHẦN MỀM WEB CHECK 60
CHƯƠNG TRÌNH WEB CHECK 68
KẾT LUẬN 82
DANH MỤC HÌNH ẢNH
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
1
TỔNG QUAN
1.1. Nền tảng và công nghệ phát triển website
1.1.1. Nền tảng phát triển website
Ban đầu, các website chỉ bao gồm các trang web tĩnh dưới dạng các file HTML
(HyperText Markup Language), tất cả những gì cần hiển thị trên trang web thì người
thiết kế phải tạo sẵn trên trang đó. Các trang web tĩnh có đuôi là .htm hoặc .html. Chẳng
hạn muốn tạo một trang web có hiển thị chữ “Hello” với màu chữ đỏ người ta viết file
index.html với nội dung như sau:
<html>
<head>
<title>index</title>

</head>
<body>
<p><font color="red">Hello</font></p>
</body>
</html>
Trang web sau đó sẽ được lưu trên Web Server. Khi người dùng muốn xem trang
web này họ sẽ dùng trình duyệt gửi một yêu cầu đến server bằng cách gõ vào địa chỉ
URL ví dụ :http://localhost/index.html. Lúc này Web Server nhận được yêu cầu sẽ tìm
trong kho dữ liệu của nó trang web index.html tương ứng rồi gửi về cho client, sau đó
trang web này sẽ được hiển thị ra bởi trình duyệt.Đó là cách hoạt động của web tĩnh.
Hình sau đây sẽ cho thấy cách mà một trang web tĩnh hoạt động như thế nào:
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
2
Hình 1.1: Cách hoạt động của trang HTML tĩnh
Trang web tĩnh tuy rất tiện lợi nhưng không thể đáp ứng được mọi nhu cầu của
ứng dụng web, đặc biệt là những yêu cầu tương tác giữa client và web server. Có nhiều
tình huống mà nội dung trang web không phải lúc nào cũng có thể soạn thảo và lưu trữ
sẵn được mà nó cần được sinh ra một cách tự động tùy thuộc vào ngữ cảnh; hoặc có
những xử lý phức tạp hơn việc server chỉ đơn giản trả về trang html khi nhận được yêu
cầu từ người dùngnhư : thu thập thông tin mà người dùng gửi lên qua URL (uniform
resource location) hay form, truy cập dữ liệu trong database …
Lấy ví dụ nếu chúng ta muốn xây dựng một trang web Login.htm yêu cầu người
sử dụng nhập tên username, sau khi submit web server sẽ gửi về người dùng trang web
trang Result.html có nội dung : Welcome username!
Nếu với mỗi username khác nhau mà người dùng nhập vào, trang này có nội dung
khác nhau.Nghĩa là các trang web tĩnh không có khả năng tương tác với người dùng
khác nhau.
Trong thực tế có rất nhiều trường hợp đòi hỏi sự tương tác mà web tĩnh không thể
giải quyết được (chat, forums, web mail, trang tin tức, giỏ hàng, thông tin thời tiết từng
ngày, tỷ giá ngoại tệ hàng ngày).

Để giải quyết vấn đề này người ta sử dụng các ngôn ngữ lập trình web để hỗ trợ sự
tương tác giữa client và server. Chúng là những file có chứa các mã lập trình, có thể tạo
ra các trang web động, cho phép trả về cho client trang web có nội dung có thể thay đổi
một cách linh động ứng với những ngữ cảnh cụ thể, thu thập và phản hồi với thông tin
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
3
mà người dùng gửi lên server (thông qua form hay URL), truy cập dữ liệu trong
database
1.1.2. Công nghệ phát triển website
Trong thời điểm internet và các giao dịch, tương tác thông qua internet phát triển
rầm rộ như hiện nay, hàng loạt các ngôn ngữ và các giao thức giao tiếp, thiết kế trang
web cũng ra đời để phục vụ cho những mục đích nhất định. Có thể kể đến nhiều ngôn
ngữ đã phổ biến như HTML (HyperText Markup Language), DHTML (dynamic
HyperText Markup Language), XML (Extensible Markup Language), Java, Perl, PHP,
ColdFuson, ASP, .Net mỗi loại có ưu và nhược điểm riêng.
Xét về tính đơn giản, gọn nhẹ thì HTML vẫn là lựa chọn đầu tiên. Tuy nhiên, nếu
trang web yêu cầu khả năng tương tác cao hơn, liên kết và cập nhật dữ liệu động, thể
hiện thông tin, đồ họa phức tạp, thì Java hay PHP là lựa chọn đầu tiên…
1.2. Giới thiệu ứng dụng web
1.2.1. Khái niệm ứng dụng web
Ứngdụng web là một trình 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
Trình khách cho người dùng sử dụng thường là một trình duyệt Web như Internet
Explorer, Netscape Navigator hay Firefox. Cũng có thể là một chương trình đóng vai trò
đại diện người dùng hoạt động như một trình duyệt tự động. 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ơ sở dữ liệu
đơn giản trên 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 gồm:
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
Internet
Explorer
Netscape
Navigator
Tomcat
Java Server
Pages
HTML
Servlet
EGB
CSDL
HTTP
SOAP JDBC
4
Hình 1.2: Kiến trúc một ứ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
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, .NET, PHP… đượ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ị dữ liệu (DBMS) chịu trách nhiệm
quản lý các file dữ liệu và quyền sử dụng.
Mô hình hoạt động của một ứng dụng Web:
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
Opera
Apache

Internet
Information
Server
Active Server
Pages
Java Script
PHP
CGI
HTTPS
XML
COM
SQL
XML
Dữ liệu
XML
Trình
khách
Trình
chủ
CSDL
CSDL
Ứng dụng Web
Ứng dụng Web
Ứng dụng Web
HTTP yêu cầu
Tường lửa MS SQL,
Oracle,MySQL
Firefox
5
Hình 1.3:Mô hình hoạt động của một ứng dụng Web

Trong đó:
• Trình khách (hay còn gọi là trình duyệt): Internet Explore, Netscap Navigator,
Firefox
• Trình chủ: Apache, IIS…
• Hệ quản trị cơ sở dữ liệu: SQL server, MySQL, Access…
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 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ư là 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ấp những dịch vụ truy xuất ra ngoài.
• Cho phép những dịch vụ 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 truy nhập của máy người sử
dụng.
1.2.2. Mô tả hoạt động của một ứng dụng web
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
Ứng dụng Web
HTTP trả lời Apache,
IIS
Perl,
C/C+
+,ASP,
PHP…
Kết nối CSDL
6
Đầu tiên trình duyệt sẽ gửi 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 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:
o 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
o 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 đoạn văn bản bất kì.
Theo mô hình ở hình 1.3, 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
Web 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 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, 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 liên quan khác.
1.3. Các khái niệm và thuật ngữ liên quan.
1.3.1. Phương thức GET.
Dữ liệu gửi từ trình duyệt lên qua phương thức GET là phần dữ liệu được nhập
trực tiếp theo sau địa chỉ URL do trình duyệt gửi lên, được phân biệt với tên file script
bằng dấu hỏi chấm (?). Ví dụ, gõ vào trình duyệt địa chỉ URL sau:
Khi đó, trình duyệt sẽ gửi theo địa chỉ
trên một cặp biến = giá trị, trong đó biến có tên là TOPIC_ID và giá trị là 161
(TOPIC_ID=161).
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
7
Khi trình duyệt gửi các thông tin này lên máy chủ, PHP sẽ tự động sinh ra một
mảng có tên là $_GET[] để nắm giữ tất cả các cặp biến và giá trị đó, trong đó, chỉ số của
mảng chính là một chuỗi mang tên của tên biến và giá trị của chỉ số đó chính là giá trị của
biến do trình duyệt gửi lên theo ví dụ trên là $_GET["TOPIC_ID"] = 161 tương ứng với

cặp TOPIC_ID=161. Sau đó, dữ liệu được trả về browser và người dùng tùy ý sử dụng
được các biến này.
1.3.2. Phương thức POST.
Phương thức POST được dùng khi muốn thay đổi trạng thái trên server. POST
không hạn chế kích thước của payload được gửi tới server, và POST request không cần
bảo đảm tính không đổi.
Hầu hết các request được thiết lập ở phương thức yêu cầu là GET, tuy nhiên trạng
thái POST cũng luôn sẵn sàng khi cần thiết.
Hơn nữa, POST bảo mật tốt hơn GET vì dữ liệu được gửi ngầm, không xuất hiện
trên URL.
1.3.3. 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 (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ỉ đuợc dùng
riêng trong từng loại. Ví dụ:
• Header yêu cầu:
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
GET /tintuc/homnay.asp HTTP/1.1
Accept: */*
Accept-Language: en – us
Connection : Keep-Alive
Host: localhost
Referer: http://loacalhost/lienket.asp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Window NT 5.0)
Accept-Encoding: gzip, deflate
8
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:
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
9
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jan 2012 05:46:53 GMT
Content-Length : 2291
Content-Type: text/html
Set-Cookie:
ASPSESSIONIDQQGGGNCG=LKLDFFKCINFDLDMHGFTJ;
Path=/
Cache-control: private
<HTML>
<BODY>
o 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)
o Tiếp theo là các tham số.
 Server: loại server mà trang web đang sử dụng
 Date: thời gian mà response trả về cho trình duyệt
 Content-Length:kích thước của reponse body, trình duyệt dựa vào
thông tin này để biết được tiến đổ của việc download file.
 Set-Cookie: Server muốn gửi cookie tới trình duyệt
 Path:
 Cache-control:có thể có 3 tham số:

- Public: cache được lưu trữ và công khai với mọi người dùng
trên hệ thống.
- Private: Mỗi người dùng trên hệ thống sẽ sẽ lưu catch riên biệt.
- No-cache: không lưu catch trang này, thích hợp với những trang
có nội dung liên tục thay đổi như Search Engine chẳng hạn
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
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
10
Khi mở, đóng hoặc đang làm việc với ứng dụng nào đó thì máy tính sẽ biết người
dùng là ai nhưng khi làm việc trên Internet thì đó là vấn đề khác.Web server không biết
người dùng là ai và đang làm gì vì dòng địa chỉ http:// không cung cấp trạng thái của
người dùng. Sở dĩ có điều này do 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 Web, 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.
Để giải quyết vấn đề này, ứng dụng Web đưa ra một khái niệm Session (phiên làm
việc).Session là khoảng thời gian người dùng giao tiếp với một ứng dụng, nó bắt đầu khi
người dùng truy cập ứng dụng lần đầu và kết thúc khi thoát khỏi ứng dụng. Mỗi session
có một định danh(ID) riêng để 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 dùng khi họ xem trang web 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 trên form và cookie. Khi session kết thúc 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
Cookielà những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa website và trình
duyệt của người dùng. Cookies được lưu trữ dưới những file dữ liệu nhỏ dạng text (size
dưới 4k). Chúng được các site 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 site và những vùng mà họ đi qua trong site.
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 Không giống như session được lưu ở server, cookie được browser của
người dùng chấp nhận lưu trên đĩa cứng của máy mình( không phải trình duyệt nào cũng
hỗ trợ cookie). Sau một lần truy cập vào site, những thông tin về người dùng được lưu trữ
trong cookie. Ở những lần truy cập sau đến site đó, website có thể dùng lại những thông
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
11
tin trong cookie (như thông tin liên quan đến việc đăng nhập vào 1 forum ) mà người
dùngko phải làm lại thao tác đăng nhập hay phải nhập lại các thông tin khác.
Vấn đề đặt ra là có nhiều site quản lý việc dùng lại các thông tin lưu trong cookie
không chính xác, kiểm tra không đầy đủ hoặc mã hoá các thông tin trong cookiecòn sơ
hở giúp cho Attacker khai thác để vượt qua cánh cửa đăng nhập, đoạt quyền điều khiển
site .
Cookie được phân làm 2 loại: secure/non-secure và persistent/non-persistent do đó
ta có 4 kiểu cookie là:
o Persistent và Secure
o Persistent và Non-Secure
o Non-Persistent và Secure
o 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ản thời gian nhất đị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.
Các thành phần của cookie gồm:
Domain Flag Pat
h

Secure Expiration Name Value
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
12
www.redhat.co
m
FALS
E
/ FALS
E
115402949
0
Apach
e
64.3.40.151.16
01899634924748
0
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ụ:
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 RAM và sẽ xóa 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

Ví dụ chuỗi lệnh trong HTTP header dưới đây sẽ tạo một cookie:
Các cookie của Netscape(NS) đặt trong tập tin Cookies.txt với đường dẩn là
C:\Program Files\Netscape\User\UserName\Cookies.txt
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
Set-Cookie: Apache=”64.3.40.151.16018996349247480”; path=”/”
Domain=www.redhat.com; path_spec; expires=”2006-07-07
19:39:15Z”; version=0
13
Các cookie 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:]\Document and Setting\[username]\Cookies(Win 2000), đối với Win9x,thư
mục cookie nằm trong [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.
1.3.5. Proxy
Proxy cung cấp cho người sử dụng truy cập 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
Proxy sever 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.
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
14
CƠ SỞ LÝ THUYẾT
1.4. Các kỹ thuật tấn công web thường gặp:
1.4.1. Các kiểu xâm nhập chính:
Xâm nhập trái phép vào môi trường thông tin : môi trường thông tin gồm 4 thành

phần:
o Hệ điều hành: Các hệ dòng UNIX (Linux, FreeBSD, SunOS, HP-UX …) hoặc các
hệ dòng Windows (Windows 2003 Server, Windows 2000 Server, Windows NT,
Windows XP…). Hệ điều hành có thể có nhiều phần mềm máy chủ cài đặt, có thể nó
không liên quan trực tiếp đến website nhưng cũng cần phải quan tâm đến nó khi đăng kí
các đối tượng để kiểm tra bảo mật. Thông thường, những ứng dụng này là: dịch vụ máy
chủ Mail SMTP/POP3/IMAP, phần mềm DNS, FTP hoặc SSH; Telnet …
o Máy chủ Web (web server): là phần mềm máy chủ để chạy các ứng dụng web, xử
lý các yêu cầu, truyền các hình ảnh và các trang HTML tới khách duyệt site. Các máy
chủ web được sử dụng rộng rãi là Apache, Microsoft IIS, các phần mềm quản lý proxy
SQUID, OOPS, Oracle Application Server Web Cache…Các module mã hóa thông tin
hỗ trợ thuật toán SSL (OpenSSL…).
o Môi trường phát triển:là các ngôn ngữ lập trình PHP, ASP.NET, JSP, CGI,
PERT… và các thư viện.
o Cơ sở dữ liệu: là nơi lưu trữ thông tin và một hệ thống xử lý các câu lệnh truy vấn
SQL. Thông thường, đó là hệ quản trị CSDL MySQL, Oracle 9i, Oracle 10g, MsSQL.
Xâm nhập trái phép vào các ứng dụng web thứ 3 : Hầu hết các ứng dụng web
thành phần thứ 3 hoặc các scripts (mã hoạt cảnh) là không cần thiết nhưng nếu site chứa
các ứng dụng phát triển bởi các công ty khác hoặc được viết bằng các ngôn ngữ lập trình
khác xem xét chúng khi tiến hành đánh giá mức độ bảo mật của hệ thống.Các scripts này
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
15
vẫn nằm trên máy chủ và có thể bị sử dụng làm phương tiện để tấn công website, có thể
tách riêng theo 3 mức độ đe dọa bảo mật :
o Thấp: Việc truy cập tới các thông tin không bí mật bị cấm. Khả năng này có thể
gây ảnh hưởng hoặc can thiệp vào các tác vụ của website.
o Trung bình: Truy cập cục bộ tới các thông tin mật. Chuyển hướng cục bộ hệ thống
xác thực để mở rộng quyền truy cập.
o Cao: Toàn quyền truy cập hệ thống xác thực; truy cập không giới hạn đến hệ
thống hoặc các ứng dụng; có khả năng chạy các ứng dụng không cần xác thực; xem và

sửa chữa các thông tin mật.
1.4.2. Các kỹ thuật tấn công ứng dụng web:
Hình 2.3 Các kỹ thuật tấn công Web
 Kiểm soát truy cập Web (Web Access Control)
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
16
Thâm nhập hế thống qua cửa sau (Back door): Trong quá trình thiết kế ứng dụng,
những người phát triển ứng dụng có thể cài một “cửa sau” để sau này có thể thâm nhập
vào hệ thống một cách dể dàng
 Chiếm hữu phiên làm việc ( Session Management)
o Ấn định phiên làm việc (Session Fixation): Là kỹ thuật tấn công cho phép hacker
mạo danh người dùng hợp lệ bằng cách gửi một session ID hợp lệ đến người dùng, sau
khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và
hiển nhiên trở thành người dùng hợp lệ
o Đánh cấp phiên làm việc ( Session Hijacking): Là kỹ thuật tấn công cho phép
hacker mạo danh người dùng hợp lệ sau khi nạn nhân đã đăng nhập vào hệ thống bằng
cách giải mã session ID của họ được lưu trữ trong cookie hay tham số truyền URL, biến
ẩn của form
 Lỗi khi kiểm tra dữ liệu nhập
Hacker lợi dụng những ô nhập dữ liệu để gửi đi một đoạn mả bất kỳ khiến cho hệ
thống phải thực thi đoạn lệnh đó hay bị phá vở hoàn toàn
o Kiểm tra tính đúng đắn của dữ liệu từ phía trình duyệt ( Client-Side validation):
Do ngôn ngữ phía trình duyệt ( JavaScript, VBScript…) được thực thi trên trình duyệt
nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự kiểm tra
o Tràn bộ đệm: (Buffer OverFlow): Một khối lượng dữ liệu được gửi cho ứng dụng
vượt quá lượng dữ liệu được cấp phát khiến cho ứng dụng không thực thi được câu lệnh
dự định kế tiếp mà thay vào đó phải thực thi một đoạn mã bất kỷ do hacker đưa vào hệ
thống. Nghiêm trọng hơn nếu ứng dụng được cấu hình để thực thi với quyền root trên hệ
thống.
o Mã hóa URL ( URL Encoding ): Lợi dụng chuẩn mã hóa những kí tự đặc biệt

trên URL mà hacker sẽ mã hóa tự động những ký tự bất hợp lệ, những ký tự kiểm tra
bằng ngôn ngữ kịch bản để vượt qua vòng kiểm soát này.
o Vượt qua đường dẩn (Path Traversal): Là phương pháp lợi dụng đường dẩn truy
xuất một tập tin trên URL: để trả kết quả về trình duyệt mà hacker có thể lấy được nội
dung tập tin bất kỳ trên hệ thống
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân
17
o Chèn mã lệnh thực thi trên trình duyệt nạn nhân ( Cross Site Scripting): đây là
kỹ thuật tấn công chủ yếu nhằm vào thông tin trên máy tính của người dùng hơn là hệ
thống máy chủ . Bằng cách thêm một đoạn mã bất kỳ ( thường được lập trình bằng ngôn
ngữ kịch bản như JavaScript, VBScript…), hacker có thể thực hiện việc đánh cấp thông
tin quan trọng như cookie để trở thành người dùng hợp lệ của ứng dụng…dựa trên những
thông tin đánh cấp này . Cross site scripting cũng là một kiểu tấn công “session
hijacking”
o Thêm câu lệnh hệ thống ( OS Command Injection): Khả năng thực thi những
câu lệnh hệ thống hay những đoạn mã được thêm vào trong các tham số mà không có sự
kiểm tra chặt chẻ như tham số của form, cookies, yêu cầu HTTP header và những dữ liệu
nguy hiểm trong những tập tin đưa lên trỉnh chủ. Thành công trong kỹ thuật này giúp
haker có thể thực thi được những câu lệnh hế thống với quyền của trình chủ.
o Chèn câu truy cấn SQL ( SQL Injection): Trong lập trỉnh cơ sở dữ liệu,người lập
trình đã sai sót trong vấn đề kiểm tra giá trị nhập vào để từ đó hacker lợi dụng thêm vào
những câu truy vấn hay những giá trị không hợp lệ để dể dàng đăng nhập vào hệ thống.
o Ngôn ngữ phía máy chủ (Server side includes): là khả năng thêm vào những câu
lệnh thuộc hệ thống như nhúng file (include file), truy xuất cơ sở dữ liệu (jdbc)…khiến
cho hacker có cơ hội truy xuất đến file, cơ sở dữ liệu mà bình thường không thể truy cập
được trên web.
o Ký tự rỗng (Null Characters): Lợi dụng chuỗi lý tự thường kết thúc bằng \0 mà
hacker thường thêm vào để đánh lừa ứng dụng vì với những ứng dụng sử dụng chương
trình CGI như C++ thì C++ cho rằng \0 là dấu kết thúc chuỗi.
Ví dụ:

Hacker thêm chuỗi sau:
Ô nhập: đề tài thứ nhất\0<script>alert(document.cookie)</script>
Nếu ứng dụng sử dụng chương trình C++ để kiểm tra tính đúng đắn của chuỗi thì
chuỗi trên là hợp lệ do C++ sẽ nhận biết “\0” là kết thúc chuỗi không kiểm tra đoạn sau.
GVHD: TS Đàm Quang Hồng Hải SVTH:Nguyễn Xuân Phú &Trần Thị Thu Nhân

×