BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Họ và tên tác giả: Nguyễn Hải Điềm
ĐỀ TÀI
NGHIÊN CỨU – XÂY DỰNG GIẢI PHÁP PHÒNG VỆ
CHO MỘT SỐ HÌNH THỨC TẤN CƠNG – NGUY CƠ
TRÊN CÁC ỨNG DỤNG WEB
LUẬN VĂN THẠC SỸ KỸ THUẬT
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
Người hướng dẫn
TS. Nguyễn Khanh Văn
Hà Nội 2013
MỤC LỤC
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT ..................................................... 4
DANH MỤC HÌNH VẼ ............................................................................................ 5
LỜI CẢM ƠN ........................................................................................................... 6
LỜI CAM ĐOAN...................................................................................................... 7
MỞ ĐẦU ................................................................................................................... 8
1. Lý do chọn đề tài: .................................................................................................. 8
2. Mục đích nghiên cứu: ............................................................................................ 8
3. Đối tượng và phạm vi nghiên cứu: ........................................................................ 8
4. Phương pháp nghiên cứu:...................................................................................... 9
5. Kết cấu của luận văn: ............................................................................................ 9
CHƯƠNG 1............................................................................................................. 10
LÝ THUYẾT VỀ ỨNG DỤNG WEB .................................................................... 10
1.1. Giới thiệu và mô tả hoạt động của ứng dụng web ........................................... 10
1.1.1.
Giới thiệu về ứng dụng web ................................................................. 10
1.1.2.
Hoạt động của ứng dụng web ............................................................... 11
1.2. Vấn đề bảo mật ứng dụng web ......................................................................... 12
CHƯƠNG 2. CÁC HÌNH THỨC TẤN CƠNG ..................................................... 14
VÀ GIẢI PHÁP PHỊNG VỆ CHO CÁC ỨNG DỤNG WEB .............................. 14
2.1. Kỹ thuật tấn công cơ bản ứng dụng Web. ........................................................ 14
2.1.1.
Giai đoạn 1: Thu thập thông tin ........................................................... 14
2.1.2.
Giai đoạn 2: Phân tích và hành động ................................................... 15
2.1.3.
Giai đoạn 3: Dừng và xoá dấu vết ....................................................... 15
2.2. Thao tác trên tham số truyền ............................................................................ 16
2.2.1.
Thao tác trên URL ................................................................................ 16
2.2.1.1.
Khái niệm ....................................................................................... 16
2.2.1.2.
Giải pháp phòng chống .................................................................. 16
2.2.2.
Thao tác trên biến Ẩn form .................................................................. 17
2.2.2.1.
Khái niệm ....................................................................................... 17
2.2.2.2.
Giải pháp phòng chống ................................................................. 18
2.2.3.
Thao tác trên cookie. ............................................................................ 18
Trang 1
2.2.3.1.
Khái niệm ....................................................................................... 18
2.2.3.2.
Giải pháp phòng chống ................................................................. 19
2.2.4.
Thao tác trong HTTP Header ............................................................... 20
2.2.4.1.
Khái niệm ....................................................................................... 20
2.2.4.2.
Giải pháp phòng chống .................................................................. 21
2.3. Chèn mã lệnh thực thi trên trình duyệt khách Cross-site Scripting. ................ 21
2.3.1.
Kỹ thuật tấn công Cross-site Scripting (XSS) ..................................... 21
2.3.2.
Phương pháp tấn công XSS truyền thống ............................................ 22
2.3.3.
Kỹ thuật tấn công XSS truyền thống.................................................... 22
2.3.4.
Một số website của Việt Nam tìm thấy lỗ hổng XSS .......................... 24
2.3.5.
Tấn cơng XSS bằng flash ..................................................................... 25
2.3.6.
Cách phịng chống chung ..................................................................... 26
2.4. Chèn câu truy vấn SQL (SQL Injection). ........................................................ 27
2.4.1.
Khái niệm SQL Injection ..................................................................... 27
2.4.2.
Các cách tấn công ................................................................................. 28
2.4.2.1.
Kĩ thuật vượt qua kiểm tra lúc đăng nhập...................................... 28
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 lệnh INSERT ................................................... 30
2.4.2.4.
Tấn công dựa vào STORED PROCEDURE................................. 31
2.4.3.
Cách phịng chống ................................................................................ 31
2.5. Tấn cơng từ chối dịch vụ DOS( Denical of Service) ....................................... 33
2.5.1. Khái niệm tấn công từ chối dịch vụ DOS: ................................................ 33
2.5.2. Các cách tấn công DOS............................................................................. 34
2.5.2.1. Khái niệm về TCP bắt tay ba chiều ................................................... 34
2.5.2.2. Lợi dụng TCP thực hiện phương pháp SYN flood truyền thống....... 34
2.5.2.3. Tấn công vào băng thông. .................................................................. 36
2.5.3. DRDoS(Distributed Reflection Denail of Service) - Tấn công từ chối dịch
vụ phản xạ nhiều vùng: ....................................................................................... 37
2.5.4. Kiểu tấn công vào tài nguyên hệ thống ..................................................... 38
2.5.5. Cách phịng tránh kỹ thuật tấn cơng DOS................................................. 39
CHƯƠNG 3. THỰC NGHIỆM KỸ THUẬT TẤN CÔNG SQL INJECTION ..... 41
3.1. Yêu cầu ............................................................................................................. 41
3.2. Demo kỹ thuật tấn công SQL Injection: .......................................................... 41
KẾT LUẬN ............................................................................................................. 47
Trang 2
TÀI LIỆU THAM KHẢO ....................................................................................... 49
PHỤ LỤC ................................................................................................................ 50
Trang 3
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Từ viết tắt
Ý nghĩa
1
HTTP
HyperText Transfert Protocol
2
HTML
HyperText Markup Language
3
URL
Uniform Resource Locator
4
SQL
Structured Query Language
5
XSS
Cross-site scripting
STT
Trang 4
DANH MỤC HÌNH VẼ
Hình 1.1: Kiến trúc một ứng dụng Web .................................................................. 10
Hình 1.2: Mơ hình hoạt động của một ứng dụng Web ........................................... 11
Hình 2.1: Các bước tấn cơng của hacker vào một ứng dụng Web ........................ 14
Hình 2.2: Form giỏ hàng chứa biến ẩn .................................................................. 17
Hình 2.3: Quá trình thực hiện XSS ........................................................................ 23
Hình 2.4: Trang Facebook bị giả mạo.................................................................... 24
Hình 2.5: Một số website của Việt Nam tìm thấy lỗ hổng XSS .............................. 25
Hình 2.6: Đường link có chứa virus ...................................................................... 26
Hình 2.7: Những lỗ hổng ứng dụng web thường thấy ............................................ 28
Hình 2.8: Một trang Log In .................................................................................... 29
Hình 2.9: Một form đăng ký thành viên ................................................................. 31
Hình 2.10: Cách thức hoạt động của TCP .............................................................. 34
Hình 2.11: Tấn cơng Dos truyền thống................................................................... 35
Hình 2.12: Kiểu tấn cơng Dos vào băng thơng....................................................... 36
Hình 2.13: Kiểu tấn cơng DDos .............................................................................. 37
Hình 2.14: Kiểu tấn cơng DRDos ........................................................................... 38
Hình 3.1: Trang Web bị dính lỗi SQL Injection ...................................................... 41
Hình 3.2: Dùng oder by 7 kiểm tra số cột trong Table ........................................... 42
Hình 3.3: Dùng oder by 6 kiểm tra số cột trong Table ........................................... 42
Hình 3.4: Dùng Union select kiểm tra .................................................................... 43
Hình 3.5: Sửa câu lệnh Union select ...................................................................... 43
Hình 3.5: Kiểm tra Version chạy trên Web ............................................................. 44
Hình 3.6: Tìm tên của Table ................................................................................... 44
Hình 3.7: Tìm các trường trong bảng Admin ......................................................... 45
Hình 3.8: Trang MD5cracker.org ........................................................................... 46
Hình 3.9: Đăng nhập thành cơng quyền quản trị của Web .................................... 46
Trang 5
LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy, cô trong Viện Công nghệ thông tin &
truyền thông, Đại học Bách Khoa Hà Nội đã tận tình giảng dạy, chỉ bảo, trang bị
kho kiến thức khổng lồ, dìu dắt em đứng vững trên con đường trinh phục tri thức
và hồi bão của mình.
Đặc biệt em xin chân thành cảm ơn sự nhiệt tình hướng dẫn, giúp đỡ của
TS. Nguyễn Khanh Văn trong suốt thời gian thực hiện Luận văn tốt nghiệp.
Do kinh nghiệm nghiên cứu và thời gian hạn chế nên đề tài vẫn cịn nhiều
thiếu sót. Em rất mong nhận được sự góp ý, phê bình của q thầy cơ và các bạn
để đề tài của em hồn thiện hơn.
Xin chân thành cảm ơn!
Trang 6
LỜI CAM ĐOAN
Tơi xin cam đoan luận văn này hồn tồn do tơi thực hiện. Các đoạn trích
dẫn, số liệu trong luận văn đều được dẫn nguồn và chính xác cao nhất theo độ hiểu
biết của tôi./.
Hà Nội, Ngày
tháng 9 năm 2013
Học viên
Nguyễn Hải Điềm
Trang 7
MỞ ĐẦU
1. Lý do chọn đề tài:
Trong kỷ nguyên của công nghệ thông tin hiện nay, internet phát triển rất
mạnh mẽ cùng với đó phạm vi ứng dụng Web ngày càng phổ biến và đáp ứng nhu
cầu của người dùng thì “lỗ hổng” xuất hiện nhiều và là mục tiêu bị tấn công càng
cao.
Tấn công ứng dụng Web luôn là việc được hacker khai thác nhằm mục đích
phá hoại hay phục vụ một yêu cầu riêng. Không chỉ hoạt động riêng lẻ, các hacker
hiện nay thường tập trung thành những nhóm có tổ chức, có mục đích hoạt động và
nguồn lực dồi dào. Không những chỉ tấn công website của cá nhân, doanh nghiệp
mà xu hướng của hacker là nhằm vào các mục tiêu lớn là những tập đoàn, tổ chức
danh tiếng, nhất là cơ quan chính phủ nhằm gây ra thiệt hại về cả tài sản, thông tin
kinh doanh và uy tín của đơn vị. Ví dụ các trang Web của tập đoàn lớn như:
Amazon, Sony, Boeing, của FBI, CIA hay website của chính phủ của Mỹ, Nhật,
Hàn Quốc, Việt Nam… cũng không là ngoại lệ của hacker.
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. 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,
nếu không sẽ tạo nhiều điều kiện cho các hacker khai thác.
2. Mục đích nghiên cứu:
Luận văn được thực hiện với mục đích tìm hiểu, phân tích các hình thức tấn
cơng - nguy cơ trong các ứng dụng web (cùng với thực nghiệm các kỹ thuật tấn
cơng ứng dụng Web chính) để qua đó đề xuất các phương án phòng chống, sửa
chữa.
3. Đối tượng và phạm vi nghiên cứu:
Phạm vi và đối tượng nghiên cứu hẹp của luận văn:
* Phần lý thuyết: là các ứng dụng website của Việt Nam và nước ngoài với
khả năng và nguy cơ bị tấn công bằng các kỹ thuật :
Trang 8
- Thao tác trên tham số truyền như URL, biến ẩn form, cookie, HTTP
header.
- Chèn mã lệnh thực thi trên trình duyệt khách Cross-site Scripting.
- Chèn câu truy vấn SQL (SQL Injection).
- Từ chối dịch vụ (DoS, DDos).
* Phần thực hành: Thực nghiệm kỹ thuật tấn công ứng dụng web SQL
Injection.
4. Phương pháp nghiên cứu:
Thu thập, phân tích, nghiên cứu các tài liệu và thông tin liên quan đến đề tài.
Có hướng đề xuất các giải pháp phịng chống đối với các trang web có nguy cơ bị
tấn cơng bằng các kỹ thuật tấn công trong luận văn.
5. Kết cấu của luận văn:
Luận văn bao gồm 3 chương:
- Chương 1: Lý thuyết về ứng dụng web
Giới thiệu chung về ứng dụng web, khái niệm và hoạt động của ứng dụng
web trên Internet.
- Chương 2: Các hình thức tấn cơng ứng dụng web và giải pháp phịng
chống.
Chương này trình bày tổng quát về các kỹ thuật tấn công ứng dụng web và
các cách phòng chống.
- Chương 3: Thực nghiệm kỹ thuật tấn cơng ứng dụng web SQL Injection
qua đó nắm bắt được kỹ thuật và trình tự để kiểm tra trang web có khả năng bị tấn
cơng hay khơng.
Trang 9
CHƯƠNG 1
LÝ THUYẾT VỀ ỨNG DỤNG WEB
1.1. Giới thiệu và mô tả hoạt động của ứng dụng web
1.1.1.
Giới thiệu về ứng dụng web
Một ứng dụng web hay webapp là một trình ứng dụng mà có thể tiếp cận qua
web thơng qua mạng như Internet hay intranet để tiếp cận với người dùng hoặc
một hệ thống khác. (Trích dẫn từ tài liệu [11])
Ứng dụng web phổ biến nhờ vào sự có mặt vào bất cứ nơi đâu của một chương
trình (Ví dụ: Internet Explorer, Fifox...). Khả năng cập nhật và bảo trì ứng dụng
Web mà khơng phải phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý
do chính cho sự phổ biến của nó. Ứng dụng web được dùng để hiện thực Webmail,
bán hàng trực tuyến, đấu giá trực tuyến, wiki, diễn đàn thảo luận, Weblog,
MMORPG, Hệ quản trị nội dung, Phần mềm quản lý nguồn nhân lực và nhiều
chức năng khác.
Trước đây những ứng dụng Web thường được xây dựng trên mơ hình tập
trung như 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 cơ sở dữ liệu đơn giản trên cùng máy. Hiện nay ứng
dụng Web thường được xây dựng theo mơ hình phân tán viết bằng Java (hay các
ngôn ngữ tương tự PHP, ASP…) và chạy trên nhiều máy chủ đáp ứng yêu cầu,
kết nối đến nhiều nguồn dữ liệu.
Hình 1.1: Kiến trúc một ứng dụng Web
Trang 10
* Một ứng dụng web thường có kiến trúc gồm:
- 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, ngồ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 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.
1.1.2. Hoạt động của ứng dụng web
Hình 1.2: 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 Explorer, Firefox,
Chrome...
- Trình chủ: Apache, IIS, ….
- Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access….
* Hoạt động của một ứng dụng web như sau:
Trang 11
Đầu tiên, trình duyệt gửi request đến trình chủ (Web Server) thông qua các lệnh
cơ bản GET, POST… của giao thức HTTP. Web Server lúc này sẽ cho thực thi
một chương trình được xây dựng từ nhiều ngơn ngữ như ASP, C/C++… hoặc Web
Server yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo u cầu của trình
duyệt.
Thơng qua tác vụ của chương trình cài đặt sẽ tiến hành q trình xử lý, tính
tốn, kết nối đến cơ sở dữ liệu. Web Server trả về cho trình duyệt một luồng dữ
liệu có định dạng theo giao thức HTTP 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à trình chủ.
- 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 ....
1.2. Vấn đề bảo mật ứng dụng web
Hiện nay, trên thế giới các dự án về bảo mật ứng dụng web trong thương mại
điện tử đều phát triển trên 5 năm và có nhiều giải pháp cho vấn đề này. Bên cạnh
đó cũng xuất hiện một số tổ chức thường xuyên phân tích, đáng giá và đưa ra
những tiêu chí bảo mật mới nhất. Chúng ta có thể kể đến OWASP (Open Web
Application Security Project), đây là một tổ chức phi lợi nhuận chuyên nghiên cứu
và cung cấp cho cộng đồng các rủi ro phát sinh trong các ứng dụng web.
Tại Việt Nam, các nhà quản lý của chúng ta vẫn chưa có được khái niệm chính
xác về những rủi ro đang tiềm ẩn trong ứng dụng web. Chúng ta vẫn chưa xác định
được rủi ro, sai sót trên website để dẫn đến hiểm họa tấn công mạng.
* Giải pháp bảo mật ứng dụng web sẽ hỗ trợ tốt hơn khi:
- Sử dụng thiết bị bảo vệ ứng dụng web chuyên dụng để hạn chế bớt, tối đa lỗ
hổng (Web Application Firewall).
- Tập trung phát triển, xây dựng các ứng dụng web theo đúng tiêu chuẩn Web
2.0 với các tiêu chí bảo mật web cao nhất (PCI DSS, OWASP…)
- Tăng khả năng giám sát cho hệ thống và phịng chống tấn cơng một cách sâu
và tập trung.
- Phát huy tối đa các tính năng bảo mật và nâng cao hiệu năng của hệ thống
nhằm tăng cường rủi ro ứng dụng web bị tấn công.
Trang 12
Vì khn khổ và thời gian là có hạn nên luận văn chỉ thực hiện tìm hiểu một
số kĩ thuật phổ biến và khả năng phá hoại một hệ thống mạng với mức độ cao. Và
trong chương 2, luận văn sẽ trình bày kĩ hơn từng kĩ thuật sau :
- Thao tác trên tham số truyền
- Chèn mã lệnh thực thi trên trình duyệt (XSS)
- Chèn câu truy vấn SQL (SQL Injection)
-
Từ chối dịch vụ (DoS, DDos).
Trang 13
CHƯƠNG 2. CÁC HÌNH THỨC TẤN CƠNG
VÀ GIẢI PHÁP PHỊNG VỆ CHO CÁC ỨNG DỤNG WEB
2.1. Kỹ thuật tấn công cơ bản ứng dụng Web.
Để tấn công bất kỳ một ứng dụng Web, hacker sẽ phải sử dụng các kỹ thuật tấn
công và gần như phải trải qua các giai đoạn hoặc các bước cơ bản như sau:
Tiến hành thu thập thông tin như: hạ tầng của mục tiêu, mô hình của các Web
Server, kiểu giao tiếp thơng tin thơng qua các cổng (port) nào, những site liên
quan đến việc thực hiện chức năng của site mục tiêu... là việc đầu tiên phải làm
của hacker. Đây là vấn đề rất quan trọng cho việc tấn công vào một hệ thống hay
mục tiêu.
Dù tấn công theo phần cứng hoặc qua ứng dụng thì hacker vẫn cần thu thập
thơng tin.
Hình 2.1: Các bước tấn công của hacker vào một ứng dụng Web
Nguồn: (Đỗ Hồng Nghĩa – CPC IT&T)
2.1.1. Giai đoạn 1: Thu thập thông tin
- FootPrinting (In dấu ấn - thu thập thông tin): Là bước mà hacker sẽ muốn
nắm được càng nhiều thông tin về đối tượng, người dùng, doanh nghiệp, , máy
chủ… bao gồm các chi tiết: Tên miền, Địa chỉ IP, DNS… đây là những thơng tin
chính liên quan đến mục tiêu mà hacker muốn tân công
Sử dụng hỗ trợ là các tool: Nslookup, SmartWhois, cơng cụ tìm kiếm,
UseNet…
- Sanning (Qt thăm dị mạng): Phần lớn thơng tin quan trọng từ server có
được từ bước này. Gồm: tìm hiểu các lỗ hổng, kiểm tra các cổng để biết các port
Trang 14
trên server, hệ điều hành, xác định hệ thống có đang chạy khơng, tìm hiểu các
dịch vụ đang chạy để lắng nghe đường dữ liệu...
Sử dụng hỗ trợ là các tool: SuperScan,fping, nmap…
- Enumeration (liệt kê tìm lỗ hổng): Hacker khi đến bước này đã tìm kiếm
những tài nguyên được bảo vệ kém hoặc tài khoản người dùng mà có thể sử dụng
để xâm nhập, bao gồm các mật khẩu mặc định, các script và dịch vụ mặc định.
Sử dụng công cụ hỗ trợ: DumpSec, ull sessions …
2.1.2. Giai đoạn 2: Phân tích và hành động
- Gaining Access (Đột nhập hệ thống): Từ thơng tin có được ở ba bước trên,
bước này Hacker sẽ tìm cách truy cập vào mạng. Phương pháp được sử dụng ở
đây có thể là: tấn công vào lỗi tràn bộ đệm, lấy và giải mã file password, hay brute
force (kiểm tra tất cả các trường hợp) password, đột nhập qua các cổng mở…
Sử dụng công cụ: Tcpdump, Remote Buffer Overflows, IIS, Brute-force
password attacks…
- Privilege Escalation (Nâng quyền cho hệ thống): Khi hacker xâm nhập
đựợc vào bằng một tài khoản nào đó, thì hacker sẽ cố gắng kiểm sốt tồn bộ hệ
thống. Hacker dùng các cách để bẻ và lấy được password của admin, hoặc sử dụng
lỗ hổng để leo thang đặc quyền để nâng quyền cho mình.
- Pilfering (Khai thác hệ thống khi các file chứa pass bị lộ): Tiếp theo
hacker định vị server và điều khiển server khi đã lấy được thông tin bị lộ.
Sử dụng công cụ: Configuration files, Registry, Telnet, Ftp…
2.1.3. Giai đoạn 3: Dừng và xoá dấu vết
- Creating Backdoors (Tạo cổng hậu): Khi đã có được những thơng tin cần
thiết, Hacker để lại Backdoors để chuẩn bị cho lần xâm nhập tiếp theo được dễ
dàng hơn và người quản trị sẽ không phát hiện được khi hacker xâm nhập trở lại
lần sau bằng việc cài đặt Trojan hay tạo user mới.
Công cụ hỗ trợ như: Trojan, keylog, Registry…
- Covering Tracks (Xố dấu vết): Khi thỏa mãn được thơng tin cần cho
mình, hacker sẽ tìm cách xố dấu vết, xố các file LOG của hệ điều hành làm cho
người quản lý không nhận ra hệ thống đã bị xâm nhập hoặc có biết cũng khơng
tìm được ai đã xâm nhập.
Sử dụng công cụ: Clear logs, Zap, Event log GUI, rootkits...
Trang 15
Tóm lại việc thu thập được và nắm rõ thơng tin của mục tiêu. Hacker sẽ
quyết định tấn công theo kỹ thuật nào đơn giản và dễ dàng nhất, như vậy cuộc tấn
công mới nắm chắc được thành công.
Dù tấn cơng dưới bất kỳ với mục đích gì thì hậu quả ảnh hưởng đều rất
đáng kể, thiệt hại to lớn về uy tín, kinh tế, gây thiệt hại cho người dùng mạng, bị
đánh cắp thơng tin, có thể bị hacker lợi dụng để tấn công một tổ chức khác, tận
dụng phát tán lừa đảo…
Nếu không thành công trong việc xâm nhập bằng các kỹ thuật phổ biến, thì
DOS (Denial Of Service) là cách thức mà hacker thường lựa chọn để làm cho hệ
thống khơng thể hoạt động được.
Do đó, việc bảo mật cho một hệ thống cần đòi hỏi sự kết hợp không chỉ của
riêng nhà quản trị hệ thống mà còn của nhà thiết kế ứng dụng và sự hợp tác của cả
những khách hàng sử dụng ứng dụng.
Sau đây chúng ta sẽ tìm hiểu một số kỹ thuật tấn công ứng dụng web để
thấy rõ được các kỹ thuật tấn công đều nằm trong các giai đoạn và các bước trên.
2.2. Thao tác trên tham số truyền
2.2.1. Thao tác trên URL
2.2.1.1. 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ụ 2.1: Có một trang web ứng dụng cho phép thành viên đã được
thay đổi mật khẩu.
/>
Trong đó:
- Trường username là tên người sử dụng cần thay đổi mật khẩu.
- Trường newpass là mật khẩu mới cho trường username.
Tuy nhiên, bằng cách thay đổi tham số như sau:
http://www. sanpham.com/example?user=admin&newpass=111111
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’
2.2.1.2. Giải pháp phòng chống
Trang 16
Ta cơ thể áp dụng biện pháp để chống lại kiểu thay đổi nội dung của chuỗi
URL, cụ thể:
- 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. (Ta sử dụng cơ
chế bảng băm - hash table).
- Cần mã hố thơng tin có giá trị hoặc cần bảo mật trước khi cho hiển thị
trên trình duyệt để tránh hacker có thể chỉnh sửa.
2.2.2. Thao tác trên biến Ẩn form
2.2.2.1. Khái niệm
Hidden Form Field: Trên một màn hình nhập liệu (form) có nhiều trường
dữ liệu hiện thị để u cầu NSD nhập thơng tin của mình. Nhưng cũng có những
trường dữ liệu ẩn (hidden), khơng hiện ra, người dùng khơng thấy. Mục dích của
trường dữ liệu ẩn là để ứng dụng web (trình chủ) lưu trữ tạm một số thông tin quan
trọng sẽ được sử dụng để tổng hợp sau này. Bình thường thì NSD khơng hề biết
nên không thể can thiệp. Nhưng hacker với kiến thức đầy đủ, sẽ có thể tìm ra,
chẳng han như dùng chức năng “view source” của trình duyệt. Nếu muốn phá hoại,
hacker sẽ thay đổi thông tin trong trường ần này, để thơng tin chun về trình chủ
bị sai lệch, ngoài mong muốn của người phát triển ứng dụng, mà có lợi cho
hackers.
Hình 2.2: Form giỏ hàng chứa biến ẩn
Ví dụ cụ thể: Trên hình vẽ ... màn hình nhập liệu có 1 trường thơng tin
hiện thị là “Nhập số lượng” (Quantity), và cũng có một trường ẩn là “Giá”( Price).
Bên cạnh đó, hình vẽ cũng cho thấy đoạn mã nguồn hiện thị nội dung. Dễ dàng
Trang 17
thấy rằng nếu kẻ hacker mà thay đổi giá sản phẩm xuống giá trị nhỏ tùy ý, thì trình
duyệt khơng biết, vẫn chuyển về trình chủ, trình chủ sẽ tính giá thành tổng cộng
nhỏ hơn rất nhiều. Kẻ hacker sẽ thu lợi lớn.
Ở đây thơng tin có thể được chuyển đổi thơng qua một biến ẩn của form.
Trên màn hình trình duyệt, biến ẩn form sẽ khơng hiển thị nhưng người dùng có
thể tìm thấy nội dung bằng cách “view source”, đây rõ ràng là một điểm yếu để
hacker lợi dụng khi 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ủ.
Ngồi ra, hacker còn biến đổi nội dung các thành phần trong form, như
độ dài của một ô nhập dữ liệu để thực hiện việc tấn cơng “BUFFER
OVERFLOW”, …
2.2.2.2. Giải pháp phịng chống
- Chỉ nên sử dụng biến ẩ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á MD5 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 khố 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
cơ sở dữ liệu
2.2.3. Thao tác trên cookie.
2.2.3.1. Khái niệm
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình
chủ và trình duyệt của người dùng.
Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được
ứng dụng 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 trang Web và những vùng mà họ đi qua trong trang. Những thơng tin này có
Trang 18
thể bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen...cookie
được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy
nhiên khơng phải lúc nào trình duyệt cũng hỗ trợ cookie, mà cịn tùy thuộc vào
người dùng có chấp nhận chuyện lưu trữ đó hay khơng.
Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại
những thơng tin trong cookie (như thông tin liên quan đến việc đăng nhập
vào Yahoo Messenger...) mà người dùng không phải làm lại thao tác đăng nhập
hay phải cung cấp lại các thông tin khác.
Vì cookie là thành phần lưu trữ thơng tin bảo mật nhất nên Cookie
thường được dùng để lưu giữ trạng thái cho giao thức HTTP hơn là biến ẩn form
và biến URL. Nó cịn được dùng để lưu trữ những thông tin của người dùng
khi sử dụng ứng dụng và những dữ liệu khác của session. Tất cả các loại cookie
như persistent hay non-persistent, secure hay insecure đều có thể bị thay đổi bởi
người dùng và được gởi về cho trình chủ. Do đó hacker có thể thay đổi nội
dung cookie để phá hoại ứng dụng.
Với những công cụ miễn phí như Winhex thì non-persistent cookie có
thể bị thay đổi nội dung. Cịn SSL chỉ có thể bảo vệ cookie trong q trình
truyền.
Ví dụ 2.2: Về cookie dùng để lưu trữ thông tin cho ứng dụng web
thông tin du lịch:
Cookie: lang=en-us; ADMIN=no; y=1 ; time=9:30GMT ;
Cookie xác định người dùng này không phải là Admin (ADMIN=no),
nhưng nếu hacker thay đổi trường này điều gì sẽ xảy ra? Hacker có thể thay đổi lại
thành như sau:
Cookie: lang=en-us; ADMIN=yes; y=1 ; time=11:30GMT ;
Hacker lúc này mang vai trị và có quyền như là một người quản trị của
ứng dụng.
2.2.3.2. Giải pháp phịng chống
Sử dụng đối tượng session lưu trữ thơng tin quan trọng trên trình
chủ. Khi ứng dụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽ dùng
sessionID của người dùng để chỉ đến thông tin của người dùng đó trong cache
hay cơ sở dữ liệu.
Xây dựng một cơ chế kiểm tra nội dung của cookie để tìm ra
những giá trị khơng hợp lệ từ đó biết được cookie đó là giả. Ví dụ là nếu biến
Trang 19
cờ “người quản trị” được được thiết lập là đúng trong cookie, nhưng giá trị của số
thứ tự người dùng trong cookie lại không giống như giá trị số thứ tự của “người
quản trị” được lưu trữ trên server.
Phương pháp cuối cùng là mã hố cookie. Có một số phương
pháp mã hố như symmetric (dùng 1 khóa duy nhất cho cả mã hóa và giải
mã) hay asymmetric (mã hóa dùng 2 khóa riêng biệt, một khóa dùng chung cho
mã hóa và một khóa riêng để giải mã)
2.2.4. Thao tác trong HTTP Header
URL, biến ẩn form, cookie đều là những thành phần lưu trữ thơng tin mà
người dùng thơng thường có thể xem và thay đổi. Tuy nhiên, những thành
phần đó đều được chuyển đi thơng qua HTTP Header. Vì thế, mặc dù HTTP
Header không phải là tham số truyền của một ứng dụng nhưng mọi thông tin đều
được lưu trữ vào nó trước khi chuyển đi nên trong phần này sẽ đề cập đến việc
thay đổi một HTTP Header.
2.2.4.1. Khái niệm
Thơng thường chỉ có trình duyệt và trình chủ là trao đổi HTTP Header
còn hầu hết các ứng dụng web thì khơng. Tuy nhiên, hacker có thể tự viết mộ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.
Ngồi ra hacker có thể tấn cơng trực tiếp bằng cách telnet gửi HTTP Request đến
trình chủ.
Ví dụ 2.3:
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
- Phần in đậm là nội dung hacker thay đổi.
Ví dụ 2.4: Referer header chứa URL của trang web mà từ đó 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 để
Trang 20
ngăn chặn việc 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 client side validate hay server side include, sau đó
gửi đi. Nhưng phương pháp kiểm tra này sẽ thất bại khi hacker có thể sửa lại
Referer header để nó giống như được gửi từ trang web hợp lệ.
Referer: www.redhat.com/login.asp
2.2.4.2. Giải pháp phịng chống
Nếu chưa có các biện pháp an tồn thì ta sẽ không tin tưởng vào HTTP
header. Với các header gửi từ Web sever, chẳng hạn như cookie thì ta sẽ mã
hố. Và khơng nên dùng các tham số như referer,… đối với các header gửi từ
trình khách.
Một kỹ thuật tấn công ứng dụng web chủ yếu được thực hiện trên trình
duyệt của nạn nhân là Cross-site Scripting. Sau đây ta sẽ đi tìm hiểu:
2.3. Chèn mã lệnh thực thi trên trình duyệt khách Cross-site Scripting.
2.3.1. Kỹ thuật tấn cơng Cross-site Scripting (XSS)
Cross-site scripting(còn gọi là 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ư
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ý. 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. Theo cuộc khảo sá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 cơng, người dùng 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 báo cáo thống kê các lỗ hổng của Website những năm gần đây,
XSS vượt cả SQL Injection, Buffer OverFlow… và có khoảng 68% các trang web
bị mắc lỗi XSS với 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 các 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 các trang, các Cookie về phiên làm việc và nhiều đối tượng
khác.
Cross Site Scripting cho phép một kẻ tấn công nhúng mã độc JavaScript,
VBScript, ActiveX, HTML hoặc Flash vào một trang web động, dễ bị đánh lừa
người sử dụng, thực hiện kịch bản trên máy tính của mình để thu thập dữ liệu. Việc
sử dụng có thể thỏa hiệp XSS thông tin cá nhân, thao tác hoặc ăn cắp cookies, tạo
Trang 21
ra các yêu cầu mà có thể bị nhầm lẫn với những người của một người dùng hợp lệ,
hoặc thực thi mã độc trên hệ thống của người dùng cuối. dữ liệu thường được định
dạng như một siêu liên kết có chứa nội dung độc hại và đó được phân phối trên bất
kỳ phương tiện có thể có trên internet. Trong đó, những đoạn mã nguy hiểm
đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript,
DHTML và cũng có thể là cả các thẻ HTML. Kỹ thuật tấn cơng XSS đã nhanh
chóng trở thành một những lỗi phổ biến nhất của ứng dụng web và các mối đe dọa
của chúng đối với người sử dụng ngày càng lớn. (Trích dẫn từ tài liệu [8])
Ví Dụ 2.5:
/>(document.cookie);</script>
hay:
/>xt=%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E
Phần in đậm là đoạn mã được thêm vào với mục đích đánh cắp cookies của
nạn nhân. Trong những ví dụ trên, hầu hết những tiền tố URL là địa chỉ của những
ứng dụng Web có thật (VD: /> lợi dụng cách truyền tham
số trên URL mà hacker có thể dễ dàng thêm vào đoạn mã đánh cắp cookie.
Ví dụ 2.5 trên chỉ minh họa một cách đơn giản là thêm đoạn mã của mình vào
trang Web thơng qua URL. Nhưng thực sự thì có rất nhiều cách để thêm
đoạn mã JavaScript với mục đích tấn cơng kiểu XSS. Hacker có thể dễ
dàng lợi dụng Document Object Model (DOM) để thay đổi ngữ cảnh và nội dụng
Web ứng dụng. Sau đây là danh sách nơi có thể chèn đoạn mã:
2.3.2. Phương pháp tấn công XSS truyền thống
Ứng dụng Web thường lưu trữ thông tin quan trọng ở cookie. Cookie là
mẩu thông tin mà ứng dụng lưu trên đĩa cứng của người sử dụng. Nhưng chỉ
ứng dụng thiết lập ra cookie thì mới có thể đọc nó. Do đó chỉ khi người dùng đang
trong phiên làm việc của ứng dụng thì hacker mới có cơ hội đánh cắp cookie.
Cơng việc đầu tiên của hacker là tìm trang đích để dụ người dùng đăng nhập
sau khi đã tìm ra lỗ hổng trên ứng dụng đó.
2.3.3. Kỹ thuật tấn cơng XSS truyền thống
Trang 22
Hình 2.3: Q trình thực hiện XSS
Tóm tắt các bước thực hiện:
Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web
có lỗ hỏng XSS.
Bước 2: Sau khi hacker biết được website mà người dùng truy cập bị lỗ
hổng XSS, thì sẽ gửi đến cho người dùng một liên kết thơng qua email hay chính
trang Web, Hacker dễ dàng thêm một liên kết do chính hacker tại ra trên
guestbook, banner. Và thông thường hacker khiến người dùng chúng ta chú ý
bằng những câu làm cho người dùng tò mò, và thấy hấp dẫn như:”Một phần
thưởng hấp dẫn đang chờ bạn!”, hay “Bạn là người thứ 100 nhận được phần
thưởng giá trị, bạn hãy click vào đây để nhận phần thưởng đó”, “Bạn hãy kiểm
tra lại tài khoản”…
Bước 3: Sau khi người dùng click vào những liên kết đó, ngay lập tức
hacker đã chuyển nội dung thơng tin như cookie, tên , mật khẩu…của người dùng
về máy chủ của mình.
Bước 4: Hacker tạo một chương trình cgi (ở ví dụ này là steal.cgi) hoặc
một trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin
Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng
để thâm nhập vào tài khoản của người dùng.
Ví dụ 2.6: Để khai thác lỗ hổng trên ứng dụng facebook.com, hacker đã
tạo ra một đường link giả gần giống thật:
Trang 23
Hình 2.4: Trang Facebook bị giả mạo
Sau khi người dùng nhấp vào liên kết “Đăng ký để nhận Điện thoại miễn
phí”, cookie trên máy nạn nhân sẽ bị đánh cắp và là tham số truyền vào cho
chương trình steal.cgi của hacker.
Khơng chỉ người dùng phổ thơng, mà đơi khi chính các chuyên gia công
nghệ cũng trở thành nạn nhân của trò lừa đảo này. Rất đơn giản, kẻ lừa đảo sẽ tự
dựng lên các trang web khá giống với Facebook, rồi yêu cầu người dùng đăng
nhập để nhận “quà tặng liền tay” (như card điện thoại, áo thun,…) hay tham gia
một trị chơi trúng thưởng nào đó. Nếu bạn cung cấp tên tài khoản và mật mã
Facebook cho website lừa đảo thì ngay lập tức, tài khoản Facebook của bạn đã
“đổi chủ”.
- Các bạn cần lưu ý tránh xa những trang web lừa đảo như vậy, chỉ đăng
nhập tài khoản Facebook trên các trang web có tên miền
facebook.com, m.facebook.com.
2.3.4. Một số website của Việt Nam tìm thấy lỗ hổng XSS
Trang 24