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

WEB APPLICATION SECURITY

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 (3.59 MB, 154 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN

KHÓA LUẬN TỐT NGHIỆP
WEB APPLICATION SECURITY

Ngành

:

Công Nghệ Thông Tin

Niên khóa

:

2006 - 2010

Lớp

:

DH06DTM

Sinh viên thực hiện :

Lâm Thế Diễn
Hứa Văn Hiếu
Trịnh Thái Long
Nguyễn Minh Thành



TP. HỒ CHÍ MINH, tháng 10 năm 2010

Ngành


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NÔNG LÂM TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN

KHÓA LUẬN TỐT NGHIỆP
WEB APPLICATION SECURITY

Giáo viên hướng dẫn:
TS. Phạm Văn Tính

Sinh viên thực hiện:
Lâm Thế Diễn
Hứa Văn Hiếu
Trịnh Thái Long
Nguyễn Minh Thành

TP. HỒ CHÍ MINH, tháng 10 năm 2010


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 “Web application
security test” đã 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 con 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 chân thành cảm ơn Khoa Công Nghệ Thông Tin, trường Đại học
Nông Lâm TP.HCM đã tạo điều kiện thuận lợi cho chúng em thực hiện luận văn
tốt nghiệp này.
Chúng em xin chân thành cám ơn thầy cô trường Đại học Nông Lâm TP.HCM
đã tận tình giảng dạy, trang bị và truyền đạt những kiến thức quý báu, đã truyền
thụ cho chúng em những kiến thức, kinh nghiệm, đã quan tâm dìu dắt và giúp đỡ
chúng em trong suốt quá trình học tập cũng như trong lúc thực hiện luận văn này.
Đặt biệt, chúng em xin bày tỏ lòng chân thành sâu sắc đến thầy Phạm Văn Tính,
người đã tận tình hướng dẫn và giúp đỡ chúng em trong quá trình làm luận vă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 luận văn tốt nghiệp này.
Mặc dù đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho phép
nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong nhân được sự
tận tình chỉ bảo của quý thầy cô và bạn bè.
Một lần nữa, chúng em xin chân thành cám ơn và luôn mong được những tình
cảm chân thành của tất cả mọi người.

GVHD: TS.Phạm Văn Tính

i

SVTH: Diễn-Hiếu-Long-Thành


TÓM TẮT BÁO CÁO
Chương 1: Mở Đầu
Giới thiệu tổng quan về sự phát triển công nghệ thông tin trên thế giới. Tình

hình an ninh mạng trên thế giới và việt nam. Các lỗ hổng mạng dễ bị tấn công
nhất, cũng như đánh giá của các tổ chức quốc tế và việt nam về mức độ nguy
hiểm và tính phổ biến của các lỗ hổng đó. Và cuối cùng hướng tìm hiểu, đánh giá
và mục đích cuối cùng của đề tài chúng em.
Chương 2: Tổng Quan
Giới thiệu thực trạng ứng dụng web xưa và nay từ đó rút ra các khái niệm về
web security, khái niệm ứng dụng web, mô hình và hoạt động của ứng dụng web
và các vấn đề có liên quan đến bảo mật ứng dụng web.
Chương 3: Cơ Sở Lý Thuyết.
3.1: Phần này mô tả chi tiết các vấn đề liên quan đến quá trình xác thực đang
phổ biến rộng rãi. Khả năng khai thác thông tin và tấn công dựa vào nhứng lỗ
hổng trong xác thực và đưa ra những biện pháp phòng ngừa để khắc phục những
lỗ hổng này trong thiết kế ứng dụng.
3.2: Chương này trình bày khái niệm về session token, các kỹ thuật khai thác
session, các vị trí có thể khai thác điểm yếu của session token. Cuối cùng là đưa
ra những biện pháp phòng thủ để hạn chế điểm yếu này.
3.3: Trình bày khái quát về lỗi kiểm soát truy cập trong ứng dụng, chỉ ra các
rủi ro thường gặp trong lỗi kiểm soát truy cập. Đồng thời, chúng tôi cũng đưa ra
các phương pháp để giúp chúng ta tránh được các lỗi kiểm soát truy cập trong
ứng dụng.
3.4: Trình bày các loại tấn công bằng phương pháp inject code bao gồm : kỹ
thuật tiêm code vào ngôn ngữ thông dịch, tiêm code vào SQL, tiêm vào hệ điều
hành, tiêm vào ngôn ngữ Scripting web, tiêm vào SOAP, tiêm vào Xpath, và tiêm
vào LDAP. Đặc biệt trong phần này sẽ giới thiệu nhiều kỹ thuật khai thác và tấn
công lỗi SQL injection, giới thiệu các lỗi thường gặp của ba HQTCSDL MySQL,
MS-SQL và Oracle bị hacker khai thác lỗi SQL injection.
3.5: Phần này mô tả khái niệm về lỗi path traversal, cách thực hiện tấn công,
những kỹ thuật dùng để vượt qua những trở ngại khi thực hiện tấn công path
traversal và những biện pháp để khắc phục lỗ hổng này trong quá trình thiết kế
ứng dụng.


GVHD: TS.Phạm Văn Tính

ii

SVTH: Diễn-Hiếu-Long-Thành


3.6: Các lỗ hổng trong logic của ứng dụng rất khó có thể phát hiện và có mức
độ nguy hiểm rất cao nếu bị hacker lợi dụng. Trong phần này sẽ mô tả chi tiết một
số lỗi đã được phát hiện trong các trang web và một số biện pháp phòng ngừa. Từ
những ví dụ này có thể rút ra kinh nghiệm cho các trường hợp lỗ hổng tương tự.
3.7: Trình bày khái quát về lỗi XSS. Phân loại các loại lỗi XSS. Các kỹ thuật
dùng để phát hiện, khai thác và tấn công ứng dụng khi xảy ra lỗi XSS. Đồng thời,
chúng tôi cũng đưa ra các phương pháp để phòng chống việc tấn công vào lỗi
XSS.
3.8: Phần này trình bày về các khái niệm, kỹ thuật tấn công và đưa ra những
lời khuyên để ngăn chặn những lỗi thông dụng: Redirection, HTTP Header
Injection, Frame Injection, Request Forgery, JSON Hijacking, Session Fixation,
ActiveX Controls.
3.9: Phần này mô tả về các lỗ hổng có thể xảy ra trong kiến trúc tầng của ứng
dụng. Khả năng khai thác các lỗ hổng đó, mức độ nguy hiểm và đưa ra lời khuyên
ngăn ngừa khả năng xuất hiện các lỗ hổng đó.
3.10: Trình bày khái quát về tấn công từ chối dịch vụ. Chỉ ra cho người dùng
biết những khả năng có thể bị tấn công bằng từ chối dịch vụ. Các kiểu tấn công từ
chối dịch vụ thường gặp hiện nay và đưa ra một số phương pháp để khắc phục và
phòng chống kỹ thuật tấn công từ chối dịch vụ.
3.11: Trình bày khái quát về lỗi file inclusion. Đưa ra các kỹ thuật tìm kiếm,
khai thác khi ứng dụng xảy ra lỗi file inclusion. Đồng thời, chúng tôi cũng đưa ra
các phương pháp để phòng chống việc tấn công vào lỗi file inclusion.

3.12: Trình bày khái quát về hệ quản trị cơ sở dữ liệu MySQL. Trong chương
này các cơ chế bảo mật của MySQL sẽ được trình bày cụ thể. Thứ nhất là cơ chế
bảo mật trong môi trường mạng, chúng ta sẽ tìm hiểu cơ chế bảo mật của SSL,
cách cài đặt và triển khai của nó. Thứ hai cơ chế bảo mật trong cơ sở dữ liệu sẽ
tìm hiểu các bản và các cột chứa thông tin đăng nhập cơ sơ dữ liệu cũng như quá
trình xác thực password.
3.13: Trình bày về các lỗi xảy thường xảy ra trên client. Đánh giá mức độ rủi
ro và sự đe dọa trong các ứng dụng web. Đồng thời đưa ra lời khuyên cụ thể cho
từng loại lỗi.
3.14: Phần này đưa ra những biện pháp xây dựng hệ thống mạng an toàn và
đưa ra những lỗ hổng mạng thường xuyên bị tấn công.
3.15: Trình bày khái quát về các loại web server. Đưa ra một số lỗi thường xảy
ra trên các loại web server và cách khắc phục cho từng trường hợp cụ thể.
GVHD: TS.Phạm Văn Tính

iii

SVTH: Diễn-Hiếu-Long-Thành


Chương 4: Nghiên Cứu Thực Nghiệm
Trình bày chi tiết về một số lỗi thường gặp, hướng dẫn cách phát hiện, khai
thác và tấn công các lỗi này. Đồng thời đưa ra một số chỉ tiêu đánh giá lỗi như:
tính phổ biến, mức độ nguy hiểm, và dễ sử dụng.
Chương 5: Kết Quả Đạt Được Và Hướng Phát Triển
Phần này đưa ra các bảng mô tả khái quát và đánh giá mức độ nguy hiểm của
các lỗi. Đồng thời đưa ra bảng thống kê các công cụ hỗ trợ phát hiện, khai thác và
tấn công các loại lỗi. Đưa ra hướng phát triển của luân văn.

GVHD: TS.Phạm Văn Tính


iv

SVTH: Diễn-Hiếu-Long-Thành


MỤC LỤC
LỜI CẢM ƠN ...........................................................................................................i
TÓM TẮT BÁO CÁO .............................................................................................ii
MỤC LỤC ...............................................................................................................v
DANH SÁCH CHỮ VIẾT TẮT..............................................................................ix
DANH SÁCH CÁC HÌNH......................................................................................xi
DANH SÁCH CÁC BẢNG.....................................................................................xi
Chương 1: MỞ ĐẦU................................................................................................1
Chương 2: TỔNG QUAN ........................................................................................3
2.1. Khái niệm về Web Security ...........................................................................3
2.2.Tổng quan về web server ................................................................................3
2.3. Khái niệm về ứng dụng web ..........................................................................4
2.4. Mô hình và hoạt động của ứng dụng web.......................................................6
2.5. Các vấn đề liên quan đến bảo mật ứng dụng web...........................................7
Chương 3: CƠ SỞ LÝ THUYẾT..............................................................................8
3.1. Lỗi xác thực trên web ....................................................................................8
3.1.1 Kỹ thuật xác thực.....................................................................................8
3.1.2. Thiết kế gây lỗi trong cơ chế xác thực.....................................................8
3.1.3. Lỗi trong khi hiện thực quá trình xác thực.............................................11
3.1.4. Đảm bảo an toàn trong xác thực............................................................ 13
3.2. Lỗi quản lý Session......................................................................................14
3.2.1. Yếu điểm trong Session Token Generation ...........................................14
3.2.2. Yếu điểm trong xử lý Session Token.....................................................19
3.3. Lỗi trong kiểm soát truy cập ........................................................................20

3.3.1. Các lỗi thường gặp trong kiểm soát truy cập .........................................21
3.3.2. Khai thác lỗi kiểm soát truy cập ............................................................ 22
3.3.3. Đảm bảo kiểm soát truy cập..................................................................24
3.4. Inject code ...................................................................................................25
3.4.1 Inject vào ngôn ngữ thông dịch .............................................................. 26
3.4.2. Inject vào SQL......................................................................................27
3.4.3. Inject vào hệ điều hành .........................................................................32
3.4.4. Inject vào ngôn ngữ Scripting web........................................................ 36
GVHD: TS.Phạm Văn Tính

v

SVTH: Diễn-Hiếu-Long-Thành


3.4.5. Inject vào SOAP ...................................................................................37
3.4.6. Inject vào Xpath....................................................................................38
3.4.7 Inject vào SMTP ....................................................................................39
3.4.8. Inject vào LDAP ...................................................................................41
3.5. Lỗ hổng Path Traversal................................................................................42
3.5.1. Lỗ hổng thường gặp..............................................................................42
3.5.2. Tìm và khai thác lỗ hổng Traversal Path ...............................................43
3.5.3. Ngăn chặn lỗ hổng Traversal Path......................................................... 49
3.6. Yếu điểm trong logic của ứng dụng ............................................................. 50
3.6.1. Bản chất của lỗi Logic ..........................................................................50
3.6.2. Các ví dụ thực tế ...................................................................................50
3.6.3. Hạn chế lỗi Logic..................................................................................54
3.7. Cross Site Scripting .....................................................................................54
3.7.1. Lỗ hổng Reflected XSS.........................................................................55
3.7.2. Lỗ hổng Stored XSS .............................................................................57

3.7.3.Tìm kiếm lỗi XSS ..................................................................................58
3.7.4. Khai thác lỗi XSS .................................................................................59
3.7.5. Cách phòng chống ................................................................................60
3.8. Một số lỗi thông thường...............................................................................60
3.8.1. Lỗi Redirection .....................................................................................60
3.8.2. Giả mạo yêu cầu ...................................................................................64
3.8.3. Session Fixation....................................................................................69
3.8.4. ActiveX Controls ..................................................................................72
3.8.5. Lỗ hổng Buffer overflow ......................................................................75
3.9. Kiến trúc của ứng dụng................................................................................77
3.9.1. Kiến trúc đa tầng...................................................................................77
3.9.2 Shared Hosting và cung cấp dịch vụ web ...............................................80
3.10. Tấn công từ chối dịch vụ............................................................................83
3.10.1. Các kỹ thuật tấn công..........................................................................83
3.10.2. Cách phòng chống ..............................................................................89
3.11. File Inclusion ............................................................................................. 90
3.11.1. Tìm kiếm lỗi ....................................................................................... 90
GVHD: TS.Phạm Văn Tính

vi

SVTH: Diễn-Hiếu-Long-Thành


3.11.2. Khai thác lỗi file inclusion ..................................................................91
3.11.3. Cách phòng chống ..............................................................................96
3.12. Cơ sở dữ liệu ............................................................................................. 97
3.12.1. MySQL............................................................................................... 97
3.12.2. SQL Server ....................................................................................... 102
3.12.3. Oracle ............................................................................................... 102

3.13. Các lỗi xảy ra trên client ..........................................................................104
3.13.1. HTML input field.............................................................................. 105
3.13.2. Cookies and HTTP headers ............................................................... 105
3.13.3. Java applet ........................................................................................ 106
3.13.4. Javascript .......................................................................................... 106
3.13.5. Flash .................................................................................................107
3.13.6. Ajax ..................................................................................................108
3.14. Các lỗi xảy ra trên network ......................................................................108
3.14.1. Những phương pháp nâng cao tính bảo mật mạng............................. 109
3.14.2. Những điểm yếu mạng thường bị tấn công........................................110
3.14.3. Kết luận ............................................................................................ 111
3.15. Các lỗi xảy ra trên web server..................................................................112
3.15.1. Apache tomcat .................................................................................. 112
3.15.2. Microsoft Internet Information Service ............................................. 115
Chương 4: NGHIÊN CỨU THỰC NGHIỆM ....................................................... 118
4.1. Lỗi SQL Injecton ....................................................................................... 118
4.1.1. Cách phát hiện .................................................................................... 118
4.1.2. Cách khai thác .................................................................................... 120
4.2. Lỗi Path Traversal ..................................................................................... 120
4.2.1. Cách phát hiện .................................................................................... 121
4.2.2. Cách khai thác .................................................................................... 121
4.3. Lỗi Cross Site Scripting ............................................................................. 122
4.3.1. Cách phát hiện .................................................................................... 122
4.3.2. Cách khai thác .................................................................................... 124
4.4. Lỗi trong quá trình chứng thực ..................................................................125
4.4.1. Cách phát hiện .................................................................................... 125
GVHD: TS.Phạm Văn Tính

vii


SVTH: Diễn-Hiếu-Long-Thành


4.4.2. Cách khai thác .................................................................................... 127
Chương 5: KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN ........................ 129
5.1. Những vấn đề đạt được.............................................................................. 129
5.2. Hướng phát triển........................................................................................ 138
TÀI LIỆU THAM KHẢO .................................................................................... 139

GVHD: TS.Phạm Văn Tính

viii

SVTH: Diễn-Hiếu-Long-Thành


DANH SÁCH CHỮ VIẾT TẮT
ACK

Acknowledgement

ACL

Access Control List

AJAX
API

Asynchronous JavaScript and XML
Application Programming Interface


CA

Certificate Authority

CSDL
CSS

Cơ Sở Dữ Liệu
Cascading Style Sheets

DHTML

Dynamic HyperText Markup Language

DOM
DoS

Document Object Model
Denial of Service

EBML
FIN
GMT
GUID

Extensible Binary Meta Language
Finish
Greenwich Mean Time
Globally Unique Identifier


HTML
HTTP
HTTPS

HyperText Markup Language
Hypertext Transfer Protocol
Hypertext Transfer Protocol Secure

IE
IP
ISBN

Internet Explorer
Internet Protocol
International Standard Book Number

JSON
LAMP
RAM

JavaScript Object Notation
Linux, Apache, MySQL, PHP
Random Access Memory

SQL

Structured Query Language

SSL

SYN

Secure Sockets Layer
Synchoronize

TCP

Transmission Control Protocol

TCP/IP
URL

Transmission Control Protocol / Internet Protocol
Uniform Resource Locator

XHTML
XML
XSS
HQTCSDL

Extensible HyperText Markup Language
Extensible Markup Language
Cross Site Cripting
Hệ quản trị cơ sở dữ liệu

GVHD: TS.Phạm Văn Tính

ix

SVTH: Diễn-Hiếu-Long-Thành



SSL
PIN

Secure Socket Layer
Personal Identify Number

OSRF

On-site Request Forgery

XSRF

Cross-site Request Forgery

GVHD: TS.Phạm Văn Tính

x

SVTH: Diễn-Hiếu-Long-Thành


DANH SÁCH CÁC HÌNH
Hình 1-1: Bảng Thống kê đánh giá các loại lỗi .........................................................2
Hình 2-1: Mô hình ứng dụng Web ba tầng................................................................6
Hình 2-2: Mô hình hoạt động của ứng dụng Web .....................................................6
Hình 3-1: Tấn công Brute-force thành công..............................................................9
Hình 3-2: Kết quả của quá trình bắt session............................................................ 20
Hình 3-3: Kết quả khi sử dụng tham số thư mục.....................................................33

Hình 3-4: Kết quả inject thành công câu lệnh trên PERL........................................34
Hình 3-5: Hiển thị nội dung của file log .................................................................35
Hình 3-6: Kết quả tiêm thành công câu lệnh trên ASP. ...........................................35
Hình 3-7: Một cuộc tấn công thành công với lỗi path traversal. .............................. 45
Hình 3-8: Thông báo lỗi tự động tạo ra...................................................................56
Hình 3-9: Pop-up thông báo lỗi XSS ......................................................................57
Hình 3-10: Các bước tấn công lỗ hổng Stored XSS . ..............................................57
Hình 3-11: Các bước khai thác lỗi XSS ..................................................................59
Hình 3-12: Mô hình các khai thác session fixation .................................................70
Hình 3-13: Mô tả cấu trúc Registry ........................................................................74
Hình 3-14: Một cuộc tấn công vào tầng cơ sở dữ liệu để lấy dữ liệu.......................79
Hình 3-15: Tổ chức cung cấp dịch vụ ứng dụng .....................................................81
Hình 3-16: Quá trình thiết lập kết nối .....................................................................84
Hình 3-17: Tấn công DoS truyền thống ..................................................................85
Hình 3-18: Kiểu tấn công vào băng thông .............................................................. 85
Hình 3-19: Tấn công kiểu DDoS ............................................................................86
Hình 3-20: Tấn công kiểu DRDoS..........................................................................87
Hình 3-21: Quá trình tấn công kiểu Smurf.............................................................. 88
Hình 3-22: Mô hình mạng .................................................................................... 109
Hình 3-23: Quy trình kiểm tra mạng lưới an ninh ................................................. 112
Hình 4-1: Custome search engine .........................................................................118
Hình 4-2: Kết quả tìm được của Custome search engine.......................................119
Hình 4-3: Xác định lỗi dựa vào phần tìm kiếm ..................................................... 123
Hình 4-4: Thông báo trả về của phần tìm kiếm. .................................................... 123
Hình 4-5: Pop-up thông báo lỗi XSS. ...................................................................124
Hình 4-6: Script được chèn vào code của ứng dụng. ............................................. 124
Hình 4-7: Tạo tài khoản với mật khẩu yếu có 3 ký tự ........................................... 126
Hình 4-8: Thông tin về tài khoản của trang web được phổ biến ............................ 126
Hình 4-9: Cửa sổ nhận vào 2 file chứa username và password.............................. 127
Hình 4-10: Quá trình Brutefore mật khẩu thành.................................................... 128

Hình 5-1: Biểu đồ đánh giá mức độ bảo mật......................................................... 136
GVHD: TS.Phạm Văn Tính

xi

SVTH: Diễn-Hiếu-Long-Thành


DANH SÁCH CÁC BẢNG
Bảng 5-1: Thống kê các loại lỗi............................................................................ 129
Bảng 5-2: Tiêu chí đánh giá lỗi ............................................................................ 134

GVHD: TS.Phạm Văn Tính

xii

SVTH: Diễn-Hiếu-Long-Thành


Chương 1: Mở Đầu

Chương 1: MỞ ĐẦU
Ngày nay, khi khoa học công nghệ bùng nổ phát triển và trở thành động lực
phát triển của thế giới đặc biệt là lĩnh vực công nghệ thông tin. Internet trở nên
phổ biến rộng rãi, quen thuộc và trở thành phương tiện để các tổ chức, cá nhân
giới thiệu thông tin cũng như thực hiện các phiên giao dịch trực tuyến. Vấn đề nảy
sinh khi phạm vi ứng dụng ngày càng mở rộng thì khả năng xuất hiện lỗi cũng như
khả năng bị tấn công ngày càng cao và trở thành đối tượng cho nhiều người tấn
công. Nếu những cuộc tấn công khi xưa mang mục đích đơn giản chỉ là để thử tài
và chứng minh bản thân thì bây giờ những cuộc tấn công còn mang bản chất chính

trị, cạnh tranh trong kinh tế và kiếm tiền bất chính.
Theo thống kê của các tổ chức an ninh mạng quốc tế cùng với sự phát triển của
Internet thì số lượng của các vụ tấn công cũng tăng theo cấp số nhân và mức độ
ngày càng nghiêm trọng. Đi đôi với quá trình đó, các tài liệu chuyên môn đề cập
đến vấn đề an ninh và bảo mật cho ứng dụng web cũng ngày càng nhiều hơn.
Theo thống kê của Bộ Thông Tin Và Truyền Thông trong năm 2009, nước ta có
hơn 1000 website bị hacker tấn công, tăng hơn gấp đôi so với năm 2008 (461
website) và gấp ba lần so với năm 2007 (342 website). Mạng Internet Việt Nam
còn tiềm ẩn rất nhiều rủi ro về mặt an ninh.
Trong ba tháng đầu năm nay, đã có hơn 300 website của các cá nhân và tổ chức
có tên miền.vn bị các hacker nước ngoài thăm dò, tấn công. Các website bị tấn
công chủ yếu là các website kinh doanh trực tuyến, ngân hàng, các tổ chức cung
cấp dịch vụ…
Theo số liệu của CERT (Computer Emegency Response Team), số lượng các
vụ tấn công Internet trên thế giới những năm đầu thập niên 90 chỉ ở mức vài trăm.
Năm năm đầu của thế kỷ 21 ở mức độ vài ngàn và đến thời điểm hiện tại (2010) là
mức độ vài chục ngàn.
Những vụ tấn công này nhằm vào các tập đoàn lớn, các công ty, nhà băng và
các tổ chức chính trị cũng như quân sự: google, Microsoft, bộ an ninh quốc phòng
Mỹ, các mạng xã hội như facebook cũng không tránh khỏi… Một số vụ tấn công
có quy mô lớn và kéo dài (có tới 100.000 máy tính). Những con số này chỉ là
những cuộc tấn công được công bố, số lượng thực tế có lẽ còn lớn hơn nhiều.
Theo các cuộc kiểm tra vào năm 2006-2007 thì danh mục các điểm dễ bị tổn
thương của ứng dụng web là Broken Authentication (67%), Broken Access

GVHD: TS.Phạm Văn Tính

1

SVTH: Diễn-Hiếu-Long-Thành



Chương 1: Mở Đầu

Controls (78%), SQL Injection (36%), Cross-site scripting (91%), Information
leakage (81%).

Hình 1-1: Bảng Thống kê đánh giá các loại lỗi
Với sự phát triển của công cụ tự động tìm lỗ hổng giúp các nhà lập trình web
phát hiện và ngăn chặn rất nhiều lỗi nhưng vẫn không thể ngăn chặn hoàn toàn vì
công nghệ web đang phát triển rất nhanh. Ngoài ra còn những vấn đề về hệ thống
mạng của ứng dụng web. Sự tấn công không nằm trong khuôn khổ một ứng dụng
nhất định mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống
cũng như những người lập trình ứng dụng.
Xuất phát từ thực trạng nói trên, luận văn được thực hiện với mục đích tìm
hiểu, phân tích, đánh giá mức độ nguy hiểm của các lỗ hổng bảo mật. Từ đó đưa
ra những lời khuyên, nguyên tắc để xây dựng hệ thống trở nên an toàn hơn. Song
song đó luận văn còn đưa ra từng công cụ thích hợp nhất để tìm ra một lỗi xác
định, giúp cho các nhà lập trình web có tầm nhìn tổng quan và logic hơn về vấn đề
bảo mật trên ứng dụng web.

GVHD: TS.Phạm Văn Tính

2

SVTH: Diễn-Hiếu-Long-Thành


Chương 2: Tổng Quan


Chương 2: TỔNG QUAN
2.1. Khái niệm về Web Security
Trong những ngày đầu, World Wide Web chỉ bao gồm các trang web. Đây là
những kho thông tin chủ yếu có chứa các văn bản tĩnh và trình duyệt web đã được
phát minh như một phương tiện thu hồi và hiển thị những tài liệu. Những dòng
thông tin đi một chiều từ server tới trình duyệt. Hầu hết các trang web đã không
xác thực người dùng vì không cần thiết. Khi xâm nhập một web server, hacker
không thể có bất kỳ thông tin nhạy cảm nào bởi vì các thông tin được tổ chức trên
server đã được mở để xem công cộng. Thay vào đó, hacker sẽ sửa đổi các tập tin
trên server để hủy hoại nội dung trang web.
Ngày nay, World Wide Web gần như không thể nhận ra từ các phiên bản trước
đó của nó. Chúng được tổ chức lại rất cao, và có sự trao đổi thông tin hai chiều
giữa server và trình duyệt. Những website đã hỗ trợ đăng ký, đăng nhập, giao dịch
tài chính, tìm kiếm, và thay đổi nội dung động theo từng người sử dụng. Phần lớn
các thông tin xử lý là cá nhân và rất nhạy cảm. Do đó, bảo mật là một vấn đề lớn:
không ai muốn sử dụng một ứng dụng web nếu họ tin rằng thông tin của họ sẽ
được tiết lộ cho bên thứ ba một cách trái phép cũng như môi trường web động làm
phát sinh thêm nhiều lỗ hổng ứng dụng web. Môi trường phát triển web hiện nay
cũng tạo cơ hội cho nhiều lỗ hổng được phát sinh như: các ứng dụng được phát
triển in-house, một số ứng dụng Web được phát triển bởi người có quá ít kinh
nghiệm về an ninh và bảo mật, và nếu một trang web bị lỗi thì những trang web có
đặc điểm chung cũng sẽ có lỗi tương tự. Khái niệm web security ra đời cho mọi
người cái nhìn chung và thấy được sự quan trọng của vấn đề an ninh và bảo mật
trên ứng dụng web.
Web security là tập hợp những tiêu chuẩn, những nguyên tắc về bảo mật và lập
trình nhằm giúp những ứng dụng web trở nên an toàn hơn. Từ đó đưa ra tiêu
chuẩn để đánh giá mức độ an toàn của trang web.

2.2.Tổng quan về web server
Web Server là server có dung lượng lớn, tốc độ cao, được dùng để lưu trữ

thông tin như một ngân hàng dữ liệu, chứa những website được thiết kế cùng với
những thông tin liên quan khác (các mã Script, các chương trình, các file
Multimedia).

GVHD: TS.Phạm Văn Tính

3

SVTH: Diễn-Hiếu-Long-Thành


Chương 2: Tổng Quan

Web Server có khả năng gửi đến client những trang web thông qua môi trường
internet (intranet) qua giao thức HTTP (giao thức được thiết kế để gửi các file đến
trình duyệt web). Nó cho phép nhiều client khác nhau kết nối với các server cung
cấp mà không gặp bất kì một trở ngại nào trong vấn đề tương thích.
Hầu hết các dữ liệu request hoặc response đều phải được định dạng bằng ngôn
ngữ HTML. HTML là một ngôn ngữ đánh dấu đơn giản được sử dụng để định
dạng văn bản. Trình duyệt thông dịch các thông tin đánh dấu và hiển thị các thông
tin cần đáp ứng này với khả năng tốt nhất. Quan trọng hơn nữa, HTML cho phép
liên kết các tài liệu và tài nguyên khác nhau. Thể hiện tính siêu văn bản của web.
Tất cả các Web Server đều có một địa chỉ IP hoặc cũng có thể có một Domain
Name.
Bất kì một máy tính nào cũng có thể trở thành một Web Server, ta chỉ việc cài
đặt lên nó một chương trình phần mềm Server và sau đó kết nối vào internet.
Tất cả các Web Server đều hiểu và chạy được các file *.htm và *.html. Tuy
nhiên, mỗi Web Server lại phục vụ một số kiểu file chuyên biệt chẳng hạn như
IIS của Microsoft: *.asp, *.aspx...; Apache: *.php...; Sun Java System Web Server
của SUN: *.jsp...

Khi máy tính của bạn kết nối đến một Web Server và gửi các thông tin yêu cầu
truy cập từ một trang web nào đó, phần mềm Web Server sẽ nhận yêu cầu và gửi
lại cho bạn những thông tin mà bạn mong muốn.
Giống như những phần mềm khác mà bạn đã từng cài đặt trên máy tính của
mình. Phần mềm Web Server cũng chỉ là một phần mềm ứng dụng. Nó được cài
đặt và chạy trên máy tính dùng làm Web Server, nhờ có chương trình này mà
người sử dụng có thể truy cập đến các thông tin của trang web từ một máy tính
khác ở trên mạng (Internet, Intranet).
Phần mềm Web Server còn có thể được tích hợp với CSDL (Database) hay
điều khiển việc kết nối vào CSDL để có thể truy cập và kết xuất thông tin từ
CSDL lên các trang web và truyền tải chúng đến người dùng.

2.3. Khái niệm về ứng dụng web
Dưới góc độ kỹ thuật, Web được định nghĩa là môi trường có khả năng thực thi
chương trình cao, cho phép tạo vô số tùy biến trên triển khai trực tiếp của một
lượng lớn các ứng dụng tới hàng triệu người dùng trên thế giới. Hai thành phần
quan trọng nhất của website hiện là trình duyệt Web và các ứng dụng Web. Tất cả

GVHD: TS.Phạm Văn Tính

4

SVTH: Diễn-Hiếu-Long-Thành


Chương 2: Tổng Quan

mọi người đều có thể sử dụng hai thành phần mà không phải trả bất cứ khoản phí
nào.
Web browser (trình duyệt web) là phần mềm ứng dụng cho phép người dùng

truy vấn dữ liệu và tương tác với nội dung nằm trong website. Các trang Web hiện
đại cho phép người dùng lấy xuống nội dung động và tham chiếu riêng. Hơn nữa,
chúng cũng có thể chạy các script trên client, có thể “thay đổi” trình duyệt Internet
thành giao diện cho các ứng dụng như thư điện tử, phần mềm ánh xạ tương tác
(Yahoo Mail, Google Maps).
Quan trọng nhất là website hiện đại cho phép đóng gói, xử lý, lưu trữ và truyền
tải dữ liệu nhạy cảm của người dùng (như thông tin cá nhân, mã số thẻ tín dụng,
thông tin bảo mật xã hội…) có thể dùng ngay hoặc dùng định kỳ về sau. Và điều
này được thực hiện qua các ứng dụng Web.
Dưới góc độ chức năng, ứng dụng Web là các chương trình máy tính cho phép
người dùng website đăng nhập, truy vấn dữ liệu qua mạng Internet trên trình duyệt
Web yêu thích của họ. Dữ liệu sẽ được gửi tới người dùng trong trình duyệt theo
kiểu thông tin động (trong một định dạng cụ thể, như với HTML thì dùng CSS) từ
ứng dụng Web qua một Web Server.
Mang tính kỹ thuật nhiều hơn có thể giải thích là: các ứng dụng Web truy vấn
server chứa nội dung và tạo tài liệu Web động để phục vụ yêu cầu của client. Tài
liệu được tạo trong kiểu định dạng tiêu chuẩn hỗ trợ trên tất cả mọi trình duyệt
(như HTML, XHTML). JavaScript là một dạng script client-side cho phép yếu tố
động có ở trên từng trang (như thay đổi ảnh mỗi lần người dùng di chuột tới).
Trình duyệt Web chính là chìa khóa. Nó dịch và chạy tất cả script, lệnh… khi hiển
thị trang web và nội dung được yêu cầu.
Một cải tiến đáng kể khác trong quá trình xây dựng và duy trì các ứng dụng
Web là chúng có thể hoạt dộng mà không cần quan tâm đến hệ điều hành hay trình
duyệt chạy trên các máy client. Ứng dụng Web được triển khai ở bất cứ nơi nào có
Internet, không tốn phí và hầu hết không đòi hỏi yêu cầu cài đặt cho người dùng
cuối.
Con số doanh nghiệp thu được lợi nhuận từ kinh doanh qua Web ngày càng
tăng. Do đó, việc sử dụng ứng dụng Web và các công nghệ liên quan khác sẽ tiếp
tục phát triển. Hơn nữa, khi các mạng Intranet và Extranet được thông qua, ứng
dụng Web trở thành “cứ điểm” lớn trong bất kỳ cơ sở hạ tầng truyền thông nào

của các tổ chức, doanh nghiệp. Phạm vi và khả năng kỹ thuật được mở rộng.

GVHD: TS.Phạm Văn Tính

5

SVTH: Diễn-Hiếu-Long-Thành


Chương 2: Tổng Quan

2.4. Mô hình và hoạt động của ứng dụng web
Hình bên dưới minh họa chi tiết mô hình ứng dụng Web ba tầng. Tầng đầu tiên
thông thường là trình duyệt Web hoặc giao diện người dùng. Tầng thứ hai là công
nghệ kỹ thuật tạo nội dung động như Java servlet (JSP) hay Active Server Pages
(ASP),.... Tầng thứ ba là cơ sở dữ liệu chứa nội dung và dữ liệu người dùng( như
username, password, mã số bảo mật xã hội, chi tiết thẻ tín dụng).

Hình 2-1: Mô hình ứng dụng Web ba tầng
Quá trình hoạt động bắt đầu với yêu cầu tạo ra từ người dùng trên trình duyệt,
gửi qua Internet tới ứng dụng web server. Ứng dụng web truy cập server chứa cơ
sở dữ liệu để thực hiện được 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.

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

GVHD: TS.Phạm Văn Tính

6


SVTH: Diễn-Hiếu-Long-Thành


Chương 2: Tổng Quan

2.5. Các vấn đề liên quan đến bảo mật ứng dụng web
Trong thực tế, phần lớn các ứng dụng web là không an toàn, dù có hoặc không
sử dụng SSL. Theo kết quả thử nghiệm hàng trăm trang web của các chuyên gia
bảo mật trong những năm gần đây cho thấy tỷ lệ của những ứng dụng web thử
nghiệm trong năm 2006 và 2007 bị ảnh hưởng bởi một số loại tổn thương phổ
biến. Dưới đây những giải thích ngắn gọn:
Broken authentication (67%): lỗi này dễ bị tổn thương bao gồm các yếu điểm
khác nhau trong cơ chế đăng nhập của ứng dụng, cho phép hacker đoán mật khẩu
yếu, khởi động một cuộc tấn công brute-force hoặc bỏ qua hoàn toàn các thông tin
đăng nhập.
Broken access controls (78%): liên quan đến trường hợp ứng dụng có cách bảo
vệ truy cập dữ liệu và chức năng của nó không đúng, cho phép hacker xem dữ liệu
nhạy cảm của người dùng khác được tổ chức trên server, hoặc thực hiện hành
động đặc quyền.
SQL injection (36%): lỗ hổng này cho phép hacker dùng câu lệnh SQL để can
thiệp vào sự tương tác của ứng dụng với cơ sở dữ liệu. Một hacker có thể lấy dữ
liệu tùy tiện từ các ứng dụng, can thiệp vào logic của nó, hoặc thực hiện lệnh trên
máy chủ cơ sở dữ liệu.
Cross-site scripting (91%): lỗ hổng này cho phép hacker tiếp cận dữ liệu của
người dùng khác, thực hiện hành động thay họ mà lẽ ra không được phép, hoặc
thực hiện các cuộc tấn công chống lại họ.
SSL là một công nghệ tuyệt vời để bảo vệ tính bí mật và tính toàn vẹn của dữ
liệu trong quá trình truyền dữ liệu giữa client và server. Vì thế mà nó bảo đảm
không cho hacker nhận dạng được server để tấn công. Nhưng hacker không ngừng

lại ở các cuộc tấn công trực tiếp vào server, như hầu hết các cuộc tấn công đã xảy
ra, hacker có thể tận dụng các lỗ hổng được liệt kê bên trên để tấn công một ứng
dụng hoặc những người dùng khác của ứng dụng đó. Vì vậy dù có sử dụng SSL
hay không, các ứng dụng web vẫn còn chứa các lỗ hổng bảo mật.

GVHD: TS.Phạm Văn Tính

7

SVTH: Diễn-Hiếu-Long-Thành


Chương 3: Cơ Sở Lý Thuyết

Chương 3: CƠ SỞ LÝ THUYẾT
3.1. Lỗi xác thực trên web
Trong một ứng dụng web, chứng thực là khái niệm đơn giản nhất của tất cả các
cơ chế bảo mật ứng dụng web. Khi người dùng cung cấp tên và mật khẩu của
mình thì ứng dụng phải xác minh rằng thông tin này là chính xác. Nếu không, nó
sẽ chặn người dùng truy cập vào hệ thống.

3.1.1 Kỹ thuật xác thực
Trong ứng dụng web, có rất nhiều công nghệ có sẵn khác nhau cho phép hiện
thực cơ chế xác thực:
 Dựa trên các hình thức xác thực HTML.
 Cơ chế Multi-factor là sự kết hợp mật khẩu và thẻ vật lý.
 Client SSL certificates và smartcards.
 HTTP basic và digest authentication.
 Chứng thực Windows-integrated sử dụng NTLM hoặc Kerberos.
 Dịch vụ chứng thực của bên thứ ba.

Hầu hết các lỗ hổng và khả năng tấn công liên quan đến chứng thực có thể
được áp dụng cho bất kỳ công nghệ nào được đề cập.

3.1.2. Thiết kế gây lỗi trong cơ chế xác thực
Sự an toàn trong quá trình xác thực tùy thuộc vào thiết kế, thiếu sót trong việc
thiết kế mô hình này có thể đưa ra những ứng dụng rất dễ bị truy cập trái phép.
Tình trạng mật khẩu yếu
Nhiều ứng dụng web không sử dụng hoặc kiểm soát không tốt mật khẩu người
dùng. Các yếu điểm khi đặt mật khẩu:
 Rất ngắn hoặc trống.
 Các từ thường gặp trong từ điển.
 Đặt giống tên người dùng.
 Vẫn còn thiết lập một giá trị mặc định.
Các bước khai thác
 Xem lại tất cả các quy tắc đặt mật khẩu.
 Cố gắng đăng ký tài khoản với một số mật khẩu yếu để xác định quy tắc
đặt mật khẩu.
 Xác định các yếu điểm trong quá trình thay đổi mật khẩu.

GVHD: TS.Phạm Văn Tính

8

SVTH: Diễn-Hiếu-Long-Thành


Chương 3: Cơ Sở Lý Thuyết

Tấn công Brute-Force
Ứng dụng có khả năng bị tấn công khi cho phép hacker lập lại bước đăng nhập

với mật khẩu khác nhau cho đến khi đoán ra kết quả.
Các giá trị thường xuyên gặp phải trong hệ thống bao gồm: Test, testuser,
admin, administrator, demo, demouser, password, password1, password123,
qwerty, test123, letmein, [tên tổ chức]…

Hình 3-1: Tấn công Brute-force thành công
Các bước khai thác
 Cố gắng đăng nhập nhiều tài khoản do bạn kiểm soát, theo dõi các thông
báo lỗi nhận được.
 Nếu ứng dụng không giới hạn số lần nhập sai thì nó có khả năng bị tấn
công brute-force.
 Nếu bạn không kiểm soát tài khoản nào, cố gắng tìm một tên tài khoản
hợp lệ và đăng nhập với tài khoản này, theo dõi thông báo lỗi về việc
khóa tài khoản.
Tiết lộ thông tin tài khoản trên đường truyền
Nếu một ứng dụng sử dụng một kết nối HTTP không được mã hóa để truyền
tải các thông tin đăng nhập, hacker có thể chờ ở một vị trí thích hợp trên mạng để
có thể bắt dữ liệu:
 Trên mạng nội bộ của người dùng
 Trong phạm vi ISP(Internet Service Provider) của người dùng
 Trên đường trục Internet
 Trong phạm vi các ISP lưu trữ các ứng dụng
 Trong bộ phận quản lý ứng dụng

GVHD: TS.Phạm Văn Tính

9

SVTH: Diễn-Hiếu-Long-Thành



Chương 3: Cơ Sở Lý Thuyết

 Chú ý:
Một số vị trí này có thể được kiểm soát bởi người có thẩm quyền nhưng cũng
có khả năng bởi hacker từ bên ngoài đã xâm nhập.
Các bước khai thác
 Khi đăng nhập thành công, theo dõi thông tin liên lạc giữa client và
server.
 Cố gắng tìm mọi phương tiện có thể can thiệp vào logic của ứng dụng để
lấy được các thông tin người dùng.
 Nếu bất kỳ thông tin nhạy cảm nào được truyền mà không mã hóa, thì rất
dễ bị đánh cắp.
 Nếu không bắt được dữ liệu không được mã hóa, xác định xem dữ liệu có
được mã hóa hay ẩn đi hay không.
Chức năng thay đổi mật khẩu
Nhiều ứng dụng web không cung cấp chức năng thay đổi mật khẩu. Mặc dù
chức năng này là cần thiết cho một cơ chế xác thực.
Có rất nhiều ứng dụng web có chức năng thay đổi mật khẩu có thể truy cập mà
không cần xác thực:
 Cho phép không hạn chế số lần đoán mật khẩu hiện tại.
 Chỉ kiểm tra mật khẩu mới và xác nhận mật khẩu mới ứng với các
trường có cùng giá trị sau khi xác nhận mật khẩu hiện có.
Các bước khai thác
 Xác định bất kỳ chức năng thay đổi mật khẩu trong ứng dụng.
 Thực hiện các yêu cầu khác nhau cho chức năng thay đổi mật khẩu, sử
dụng tên người dùng không hợp lệ, mật khẩu không hợp lệ, và "mật khẩu
mới" và "xác nhận mật khẩu mới" không phù hợp.
Tên tài khoản có thể dự đoán
Một số ứng dụng tự động tạo ra tên người dùng heo một số quy luật dự đoán

được (ví dụ, cust5331, cust5332, vv). Nếu vậy hacker có thể phân biệt các quy
luật và nhanh chóng tạo một danh sách đầy đủ tất cả các tên người dùng hợp lệ.
Mật khẩu ban đầu có thể dự đoán
Trong một số ứng dụng, người dùng được tạo ra cùng một lúc và được tự động
gán mật khẩu ban đầu. Các phương tiện tạo ra mật khẩu có thể cho phép hacker
để dự đoán các mật khẩu của người dùng khác.

GVHD: TS.Phạm Văn Tính

10

SVTH: Diễn-Hiếu-Long-Thành


Chương 3: Cơ Sở Lý Thuyết

Các bước khai thác
 Cố gắng nhanh chóng để có được mật khẩu và xác định xem có bất kỳ
chuỗi hoặc mẫu nào được sử dụng hay không.
 Ngoại suy các quy luật đặt mật khẩu để có được một danh sách mật khẩu
của người dùng khác.
 Bạn có thể thử đăng nhập bằng cách sử dụng tên tài khoản đã biết hoặc
đoán tên người dùng và suy ra mật khẩu tương ứng.
Phân bố thông tin tài khoản không an toàn
Nhiều ứng dụng phân phối các thông tin tài khoản mới tạo đến người dùng
trong nhóm, quá trình này có thể trình bày một nguy cơ bảo mật. Ví dụ, nếu các
URL gửi cho người dùng kế tiếp theo trình tự nào đó, hacker có thể suy ra các
URL kích hoạt gửi cho người dùng gần đây và sắp tới.
Các bước khai thác
 Nếu không bắt buộc phải khai báo các thông tin quan trọng trong quá

trình đăng ký, xác định cách thức mà ứng dụng phân phối chứng chỉ cho
người dùng mới.
 Nếu một URL kích hoạt tài khoản được sử dụng, hãy thử đăng ký mới
một số tài khoản và xác định những quy luật trong các URL bạn nhận
được.
 Hãy thử để tái sử dụng một URL kích hoạt nhiều lần, và xem liệu ứng
dụng cho phép điều này hay không.

3.1.3. Lỗi trong khi hiện thực quá trình xác thực
Ngay cả một cơ chế xác thực được thiết kế tốt có thể được đánh giá không an
toàn do những sai lầm được thực hiện trong quá trình xử lý. Lỗ hổng này có xu
hướng khó bị phát hiện hơn so với mật khẩu kém chất lượng.
Cơ chế đăng nhập Fail-Open
Fail-open logic là một loại lỗ hổng logic và có hậu quả đặc biệt nghiêm trọng
trong các cơ chế xác thực.
Ví dụ: nếu phương thức db.getUser() phát sinh một ngoại lệ (ví dụ, ngoại lệ
NullPointerException phát sinh do yêu cầu của người dùng không chứa tham số
tê tài khoản và mật khẩu), nhưng vẫn đăng nhập thành công. Session sẽ không
chứa danh tính người dùng, do đó có thể không thực hiện được đầy đủ chức năng
nhưng hacker vẫn có thể truy cập một số dữ liệu nhạy cảm hoặc chức năng.

GVHD: TS.Phạm Văn Tính

11

SVTH: Diễn-Hiếu-Long-Thành


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×