HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN
THÔNG
Nguyễn Thu Hương
NGHIÊN CỨU CÁC DẠNG TẤN CÔNG ỨNG
DỤNG WEB VÀ GIẢI PHÁP PHÒNG CHỐNG
Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số: 60.48.15
TÓM TẮT LUẬN VĂN THẠC SĨ
HÀ NỘI - 2013
Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS. TRẦN VIỆT HƯNG
Phản biện 1: …………………………………………………
Phản biện 2: …………………………………………………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc
sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn
thông
1
LỜI MỞ ĐẦU
Việc thiếu quan tâm và đầu tư nhất định đến hệ
thống an ninh, bộ phận chuyên trách dẫn đến các vụ tấn
công vào các website rất dễ xảy ra. Điều này cũng đồng
nghĩa với việc những nội dung dữ liệu của các đơn vị có
nguy cơ bị mất là rất lớn khi an ninh mạng không được
đảm bảo. Vậy chúng ta cần phải làm gì để tăng cường khả
năng phòng, chống các nguy cơ tấn công vào các website
và biện pháp ngăn chặn, khắc phục kịp thời các sự cố này.
Việc đi sâu tìm hiểu về các dạng tấn công vào các
website sẽ giúp cho chúng ta hiểu hơn về những lổ hổng
trong công tác quản lý website, qua đó đưa ra những giải
pháp giúp các nhà quản lý có những biện pháp khắc phục,
ngăn chặn sự thâm nhập từ bên ngoài, cũng như vai trò
quan trọng trong việc triển khai ứng dụng những công
nghệ mới an toàn và bảo mật hơn. Chính vì vây, tôi đã
chọn đề tài “Nghiên cứu các dạng tấn công ứng dụng web
và giải pháp phòng chống” làm đề tài luận văn của mình.
2
Chương 1 - TỔNG QUAN VỀ WEB VÀ CÁC DẠNG
TẤN CÔNG ỨNG DỤNG WEB
1.1. Tổng quan về web và an ninh web
1.1.1. Tìm hiểu về website và cách hoạt động
Website là một tập hợp các trang web (web
pages) bao gồm văn bản, hình ảnh, video, flashv.v
thường chỉ nằm trong một tên miền (domain name) hoặc
tên miền phụ (subdomain). Trang web được lưu trữ ( web
hosting) trên máy chủ web (web server) có thể truy cập
thông qua Internet.
1.1.2. Tìm hiểu về ứng dụng web
1.1.2.1. Khái niệm ứng dụng web
Ứng dụng Web 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. Trình khách dành cho người sử dụng thường là một
trình duyệt Web như Internet Explorer hay Firefox. 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…
3
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 số ứng dụng web thông thường
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ác ứ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 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ị 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.
4
Quá trình hoạt động bắt đầu với yêu cầu được tạo
ra từ người dùng trên trình duyệt, gửi qua Internet tới trình
chủ Web ứng dụng (Web application Server). Web ứng
dụng truy cập máy chủ chứa cơ sở dữ liệu để thực hiện
nhiệm vụ được yêu cầu: cập nhật, truy vấn thông tin đang
nằm trong cơ sở dữ liệu. Sau đó ứng dụng Web gửi thông
tin lại cho người dùng qua trình duyệt
1.1.2.2. Mô hình hoạt động của một ứng dụng web
Hình 1.3: Mô hình hoạt động của một ứng dụng web
Trình khách ( hay còn gọi là trình duyệt): Internet
Explorer, Firefox.
Trình chủ: Apache, IIS, ….
Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL,
DB2, Access….
5
Hoạt động của một ứng dụng web:
Trình duyệt : gửi một yêu cầu (request) đến trình chủ
thông qua các lệnh cơ bản GET, POST của giao thức
HTTP.
Trình chủ :
Thực thi một chương trình được xây dựng từ nhiều
ngôn ngữ như Perl, C/C++…
Yêu cầu bộ diễn dịch thực thi các trang ASP, JSP…
Trình chủ trả về cho trình khách 1 luồng dữ liệu có
định dạng theo giao thức HTTP gồm 2 phần:
Header: 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ì.
1.1.2.3. Một số ứng dụng web
Ứng dụng dựa trên web là các chương trình được
thiết kế để được sử dụng hoàn toàn trong trình duyệt. Sử
6
dụng ứng dụng, chúng ta có thể làm những việc như tạo
tài liệu, chỉnh sửa ảnh và nghe nhạc… mà không phải cài
đặt phần mềm phức tạp.
Calendar (lịch trình)
Ưu điểm của các ứng dụng trên web
Ứng dụng web có các ưu điểm sau so với ứng dụng dành
cho máy tính để bàn:
Cài đặt ứng dụng dễ dàng, nhanh chóng: Nhiều ứng
dụng sẵn có trên mạng chỉ bằng một cú nhấp chuột,
thậm chí không phải khởi động lại trình duyệt hoặc
máy tính của mình.
Ứng dụng luôn có sẵn: Dù chúng ta đang sử dụng
máy tính nào, chúng ta luôn có thể truy cập vào
ứng dụng của mình…
7
1.1.3. Tìm hiểu về an ninh web
Theo thống kê các phương thức tấn công hiện nay
(hình) chúng ta thấy các kiểu tấn công truyền thống như
SQL Injection, Cross-Site Script, Brute Force vẫn đang
gây thiệt hại cho hệ thống mạng dù đã được cảnh báo từ
rất lâu.
Các cuộc tấn công này chủ yếu tập trung vào các
ứng dụng web được phát triển trong các dịch vụ thương
mại điện tử với nền tảng ứng dụng web 2.0. Vấn đề bảo
mật cho các ứng dụng hiện nay nói chung và ứng dụng
web nói riêng vẫn còn khá “mới mẻ” đối với các doanh
nghiệp Việt Nam.
Các vấn đề bảo mật Web
Một cuộc nghiên cứu gần đây chỉ ra rằng 75% các
cuộc tấn công mạng được thực hiện ở mức ứng dụng Web.
1.1.4. Một số thuật ngữ liên quan
1.1.4.1. Hacker
1.1.4.2. Session ID
1.1.4.3. COOKIE
1.1.4.4. IP và TCP/IP
1.1.4.5. DNS
8
1.2. Các dạng tấn công ứng dụng web
1.2.1. Tấn công từ chối dịch vụ
1.2.1.1. DoS (Denial of Service)
DoS (Denial of Service) có thể mô tả như hành
động ngăn cản những người dùng hợp pháp của một dịch
vụ nào đó truy cập và sử dụng dịch vụ đó. Nó bao gồm cả
việc làm tràn ngập mạng, làm mất kết nối với dịch vụ…
mà mục đích cuối cùng là làm cho server không thể đáp
ứng được các yêu cầu sử dụng dịch vụ từ các client. DoS
có thể làm ngưng hoạt động của một máy tính, một mạng
nội bộ, thậm chí cả một hệ thống mạng rất lớn. Thực chất
của DoS là kẻ tấn công sẽ chiếm dụng một lượng lớn tài
nguyên mạng như băng thông, bộ nhớ… và làm mất khả
năng xử lý các yêu cầu dịch vụ đến từ các client khác.
1.2.1.2. DDoS (Distributed Denial Of Service)
Distributed Denial Of Service (DDoS) là kỹ thuật
tấn công làm các ISP lo âu, giới hacker chính thống thì
không công nhận DDoS là kỹ thuật tấn công chính thống.
Thế nhưng Black hat đang có rất nhiều ưu thế khi triển
khai tấn công bằng kỹ thuật DDoS.
9
Việc phòng ngừa và ngăn chặn DDoS vẫn còn đang
thực hiện ở mức độ khắc phục hậu quả và truy tìm thủ
phạm
1.2.1.3. DRDoS (Distributed Reflection Denial of Service)
Mục tiêu chính của DRDoS là chiếm đoạt toàn bộ
băng thông của máy chủ, tức là làm tắc ngẽn hoàn toàn
đường kết nối từ máy chủ vào xương sống của Internet và
tiêu hao tài nguyên máy chủ. Trong suốt quá trình máy
chủ bị tấn công bằng DRDoS, không một máy khách nào
có thể kết nối được vào máy chủ đó. Tất cả các dịch vụ
chạy trên nền TCP/IP như DNS, HTTP, FTP, POP3,
đều bị vô hiệu hóa.
1.2.2. Chiếm hữu phiên làm việc (Session Management)
1.2.2.1. Ấn định phiên làm việc
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 SessionID 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 SessionID đó và
nghiễm nhiên trở thành người dùng hợp.
Trong kiểu tấn công ấn định một phiên làm việc,
hacker ấn định sẵn session ID cho nạn nhân trước khi họ
10
đăng nhập vào hệ thống. Sau đó, hacker sẽ sử dụng
session ID này để buớc vào phiên làm việc của nạn nhân
đó.
1.2.2.2. Đánh cắp phiên làm việc
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ã SessionID của họ được lưu trữ
trong Cookie hay tham số URL, biến ẩn của Form.
1.2.3. Tấn công chèn câu truy vấn SQL Injection
SQL injection là 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à nó ứ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.
11
Khi Hacker gửi những dữ liệu (thông qua
webform), ứng dụng web sẽ thực hiện và trả về cho trình
duyệt kết quả câu truy vấn hay những thông báo lỗi có liên
quan đến cơ sở dữ liệu. Và nhờ những thông tin này mà
haker biết được nội dung cơ sở dữ liệu và có thể điều
khiển toàn bộ hệ thống ứng dụng.
Các dạng tấn công SQL Injection:
- 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.
1.2.4. Chèn mã lệnh thực thi trên trình duyệt Cross-Site
Scripting
Khái niệm về XSS là thao tác các kịch bản phía máy
khách của một ứng dụng web để thực hiện theo cách mong
muốn của kẻ xấu. Những kịch bản đã nhúng vào trang
web sẽ được thực hiện khi người dùng tải trang hoặc có
những tác vụ liên quan. Cross-site Scripting (XSS) là lỗ
hổng cho phép hacker có thể chèn những đoạn mã client-
script (thường là Javascript hoặc HTML) vào trang web,
12
khi người dùng vào những trên web này, mã độc sẽ được
thực thi trên máy của người dùng.
Hiện tồn tại 2 hình thức:
Stored-XSS:
Reflected-XSS:
13
Chương 2: GIẢI PHÁP PHÒNG CHỐNG TẤN
CÔNG ỨNG DỤNG WEB
2.1. Phương thức tấn công ứng dụng web
2.1.1. Tấn công từ chối dịch vụ
2.1.1.1. DoS (Denial of Service)
Phá hoại dựa trên tính giới hạn hoặc không thể phục hồi
của tài nguyên mạng.
2.1.1.2. DDoS (Distributed Denial Of Service)
Bao gồm 3 giai đoạn:
Giai đoạn chuẩn bị
Giai đoạn xác định mục tiêu và thời điểm
Phát động tấn công và xóa dấu vết
Kiểm tra xem server có bị DDOS hay không
Hình 2.1. Mô hình cuộc tấn công DDoS
14
2.1.1.3. DRDoS (Distributed Reflection Denial of Service)
Về cơ bản, DrDoS là sự phối hợp giữa hai kiểu DoS và
DDoS. Nó có kiểu tấn công SYN với một máy tính đơn,
vừa có sự kết hợp giữa nhiều máy tính để chiếm dụng
băng thông như kiểu DDoS. Kẻ tấn công thực hiện bằng
cách giả mạo địa chỉ của server mục tiêu rồi gửi yêu cầu
SYN đến các server lớn như Yahoo, Micorosoft…,để các
server này gửi các gói tin SYN/ACK đến server mục tiêu.
Các server lớn, đường truyền mạnh đã vô tình đóng vai trò
zoombies cho kẻ tấn công như trong DdoS.
Hình 2.2. Sơ đồ mô tả kiểu tấn công DRDOS
15
2.1.2. Chiếm hữu phiên làm việc (Session Management)
2.1.2.1. Ấn định phiên làm việc
Bước 1: Thiết lập session ID.
Bước 2: Gởi session ID đến trình duyệt nạn nhân.
Bước 3: Đột nhập vào phiên làm việc của nạn nhân.
2.1.2.2. Đánh cắp phiên làm việc
Tấn công kiểu dự đoán phiên làm việc.
Tấn công kiểu vét cạn phiên làm việc.
Tấn công kiểu dùng đoạn mã để đánh cắp phiên
làm việc.
2.1.3. Tấn công chèn câu truy vấn SQL Injection
2.1.3.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.
2.1.3.2. Dạng tấn công sử dụng câu lệnh SELECT
16
Để 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.
2.1.3.3. Dạng tấn công sử dụng câu lệnh INSERT
- Thông thường các ứng dụng web cho phép người dùng
đăng kí một tài khoản để tham gia. Chức năng không thể
thiếu là sau khi đăng kí thành công, người dùng có thể
xem và hiệu chỉnh thông tin của mình. SQL injection có
thể được dùng khi hệ thống không kiểm tra tính hợp lệ của
thông tin nhập vào.
2.1.3.4. Dạng tấn công sử dụng stored-procedures
- Việc tấn công bằng stored-procedures sẽ gây tác hại rất
lớn nếu ứng dụng được thực thi với quyền quản trị hệ
thống 'sa'.
2.1.3.5. Tấn công SQL Injection nâng cao
2.1.4. Chèn mã lệnh thực thi trên trình duyệt Cross-Site
Scripting
XSS là một lỗi phổ biến, có rất nhiều trang web bị
mắc phải lỗi này, chính vì thế ngày càng có nhiều người
quan tâm đến lỗi này. Các bước thực hiện tấn công theo
phương pháp này như sau:
17
Truy tìm lỗ hổng XSS của web
Tấn công
2.2. Giải pháp phòng chống tấn công ứng dụng web
2.2.1. Tấn công từ chối dịch vụ
2.2.1.1. DoS (Denial of Service)
- Mô hình hệ thống phải được xây dựng hợp lý, tránh phụ
thuộc lẫn nhau quá mức dễ dẫn đến một bộ phận gặp sự cố
sẽ làm cả hệ thống bị trục trặc.
- Thiết lập password bảo vệ các thiết bị hay các nguồn tài
nguyên quan trọng.
- Thiết lập các mức xác thực đối với người dùng cũng như
các nguồn tin trên mạng (các thông tin cập nhật định tuyến
giữa các router cũng nên thiết lập ở chế độ xác thực)…
2.2.1.2. DDoS (Distributed Denial Of Service)
Cách 1: Chống iframe.
Cách 2: Chống tải lại trang web có ác ý
Cách 3: Giới hạn số kết nối website tại một thời điểm
2.2.1.3. DRDoS (Distributed Reflection Denial of Service)
Tấn công từ chối dịch vụ DRDoS rất khó phòng
chống do tính bất ngờ và thường là phòng chống trong thế
bị động khi sự việc đã diễn ra. Các phương án phòng ngừa
có thể:
18
Thiết lập, cài đặt mật khẩu mạnh (strong password)
để bảo vệ các thiết bị mạng như máy chủ dịch vụ,
các router,… và các nguồn tài nguyên quan trọng
khác.
Phòng ngừa các điểm yếu của ứng dụng Web, Webserver,
DNS, SQL Database… Thường xuyên cập nhật các bản vá
là một trong những yêu cầu quan trọng…
2.2.2. Chiếm hữu phiên làm việc
Chống việc đăng nhập với một session ID có sẵn,
ứng dụng phải hủy bỏ session ID được cung cấp bởi trình
duyệt của người dùng khi đăng nhập và luôn tạo một
session ID mới khi người dùng đăng nhập thành công sẽ
khiến cho những hacker không phải là người dùng hợp lệ
của hệ thống.
Giới hạn phạm vi ứng dụng của session ID như kết
hợp session ID với địa chỉ của trình duyệt, kết hợp session
ID với chứng thực được mã hoá SSL của người dùng, xóa
bỏ session khi người dùng thoát khỏi hệ thống hay hết
hiệu lực, thiết lập thời gian hết hiệu lực cho session để
tránh trường hợp hacker có thể duy trì session và sử dụng
nó lâu dài…
19
2.2.3. Cách Phòng Tránh SQL Injection
2.2.3.1. Kiểm tra dữ liệu
2.2.3.2. Khoá chặt SQL Server (SQL Server Lockdown)
2.2.3.3. Thiết lập cấu hình an toàn cho hệ quản trị cơ sở
dữ liệu
2.2.4. Chèn mã lệnh thực thi trên trình duyệt Cross-Site
Scripting
Người ta không lường hết được mức độ nguy hiểm của
XSS nhưng cũng không quá khó khăn để ngăn ngừa XSS:
Lọc
Luôn luôn lọc các dữ liệu nhập từ phía người dùng bằng
cách lọc các kí tự meta (kí tự đặc biệt) được định nghĩa
trong đặc tả của HTML.
Mã hóa
Lỗi XSS có thể tránh được khi máy chủ Web đảm bảo
những trang phát sinh được mã hóa (encoding) thích hợp
để ngăn chạy chạy các script không mong muốn.
2.3. Các giải pháp bảo mật ứng dụng web
20
Chương 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ
3.1. Kịch bản
3.2. Cài đặt
Các bước cài đặt phần mềm tìm kiếm phát hiện lỗi
Acunetix Web Vulnerability Scanner phiên bản 7
3.3. Thử nghiệm
Chạy phần mềm Acunetix Web Vulnerability Scanner
3.4. Đánh giá và kết luận
Đánh giá quy trình thử nghiệm
Kết luận
Những mặt còn hạn chế
KẾT LUẬN
Luận văn đã đưa ra được những nghiên cứu về các
dạng tấn công, đột nhập cũng như cách thức tấn công dựa
trên sự tìm hiểu, phân tích, đánh giá thông tin, những khảo
sát thực tế để từ đó tìm tòi, đưa ra các giải pháp cụ thể cho
việc phòng chống tấn công ứng dụng web.
Đã tiến hành thử nghiệm được việc tấn công ứng
dụng web và phát hiện tấn công ứng dụng web bằng phần
mềm phát hiện tấn công ứng dụng web. Để từ đó đưa ra
được các giải pháp phòng tránh cũng như khắc phục lỗi.
Tuy nhiên, luận văn mới hạn chế ở mức tìm
hiểu, nghiên cứu và đưa ra các giải pháp ở mức độ cơ
bản. Tôi xin đề xuất nghiên cứu, tìm hiểu sâu hơn nữa
để có thể ứng dụng rộng rãi trong thực tế.