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

Nghiên cứu một số dạng lỗ hổng bảo mật, công cụ phát hiện chúng và ứng dụng để kiểm thử an ninh trên trang web truongnha com

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.96 MB, 25 trang )

1

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRỊNH THỊ DỊU

NGHIÊN CỨU MỘT SỐ DẠNG LỖ HỔNG BẢO MẬT, CÔNG CỤ PHÁT
HIỆN CHÚNG VÀ ỨNG DỤNG ĐỂ KIỂM THỬ AN NINH TRÊN
TRANG WEB TRUONGNHA.COM

LUẬN VĂN THẠC SĨ: CÔNG NGHỆ THÔNG TIN

Hà Nội - 2012


2

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRỊNH THỊ DỊU

NGHIÊN CỨU MỘT SỐ DẠNG LỖ HỔNG BẢO MẬT, CÔNG CỤ
PHÁT HIỆN CHÚNG VÀ ỨNG DỤNG ĐỂ KIỂM THỬ AN NINH
TRÊN TRANG WEB TRUONGNHA.COM

Ngành:

Công nghệ thông tin


Chuyên ngành:

Công nghệ phần mềm

Mã số:

60 48 10

LUẬN VĂN THẠC SĨ: CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. TRƯƠNG ANH HOÀNG

Hà Nội - 2012


5

MỤC LỤC
............................................................................................................................................................. 2

LỜI CAM ĐOAN .......................................................................................................... 3
LỜI CẢM ƠN ................................................................................................................ 4
DANH MỤC BẢNG BIỂU ............................................. Error! Bookmark not defined.
DANH MỤC HÌ NH VẼ ................................................................................................ 7
CHƯƠNG 1 GIỚI THIỆU.......................................................................................... 12
1.1.

Tính cấp thiết của đề tài ....................................................................................................... 12

1.2.


Mục tiêu đề tài ...................................................................................................................... 13

1.3.

Bố cục luận văn ..................................................................................................................... 13

1.4.

Tổng quan về vấn đề bảo mật trên nền Web ........................................................................ 13

1.5.

Một số nguyên nhân phổ biến cho ứng dụng Web mất tính an toàn ................................... 14

1.6.

Thống kê các loại tấn công .................................................................................................... 14

CHƯƠNG 2 MỘT SỐ NGUY CƠ AN NINH THƯỜNG GẶP .............................. 16
2.1.

Tấn công DoS......................................................................................................................... 16

2.1.1. Giới thiệu về DoS ......................................................................................................... 16
2.1.2. Mục đích và các dạng tấn công DoS.............................................................................. 16
2.1.3. Tấn công DDoS.............................................................................................................. 19
2.2.

Cross-Site Scripting (XSS) ....................................................................................................... 22


2.2.1. Tổng quan về XSS ......................................................................................................... 22
2.2.2. Ảnh hưởng do XSS gây ra ............................................................................................ 22
2.2.3. Phân loại ...................................................................................................................... 23
2.2.4. Cách phát hiện ra sâu XSS ............................................................................................. 26
2.2.5. Các phương pháp ngăn chặn lỗ hổng bảo mật XSS ...................................................... 26
2.3.

Tổng quan SQL Injection ....................................................................................................... 26

2.3.1. Định nghĩa .................................................................................................................... 26
2.3.2. Các kỹ thuật tấn công SQL Injection ............................................................................. 27

Bảng 2.1: Các mẫu đầu vào ........................................................................................ 28
2.3.3. Những ảnh hưởng gây ra của SQL Injection................................................................. 30
2.3.4. Các phương pháp phòng chống SQL Injection phổ biến ............................................... 31

CHƯƠNG 3 MỘT SỐ CÔNG CỤ PHÁT HIỆN NGUY CƠ AN NINH................ 32
3.1. Netsparker .................................................................................................................................. 32
3.2. Websecurify ............................................................................................................................... 34


6

3.3. Acunetix ...................................................................................................................................... 37
3.4. WebScarab ................................................................................................................................. 45
3.5. Havij ............................................................................................................................................ 46
3.6. Burp Suite ................................................................................................................................... 48
3.7. Wapiti ......................................................................................................................................... 51
3.8. Exploit-Me .................................................................................................................................. 51

3.9. W3af ........................................................................................................................................... 53
3.10. Công cụ tấn công DoS .............................................................................................................. 55

CHƯƠNG 4 THỰC NGHIỆM VÀ PHÂN TÍCH KẾT QUẢ ................................. 58
4.1.

Acunetix ................................................................................................................................. 58

4.1.1. Thực nghiệm ................................................................................................................ 58
4.1.2. Phân tích thực nghiệm ................................................................................................. 58
4.2.

BurpSuite ............................................................................................................................... 59

4.2.1. Thực nghiệm ................................................................................................................ 59
4.2.2. Phân tích thực nghiệm ................................................................................................. 61
4.3.

Netsparker ............................................................................................................................. 62

4.3.1. Thực nghiệm ................................................................................................................ 62
4.3.2. Phân tích thực nghiệm ................................................................................................. 62
4.4.

Skipfish .................................................................................................................................. 64

4.4.1. Thực nghiệm ................................................................................................................ 64
4.4.2. Phân tích thực nghiệm ................................................................................................. 66
4.5.


W3af ...................................................................................................................................... 66

4.5.1. Thực nghiệm ................................................................................................................ 66
4.5.2. Phân tích thực nghiệm ................................................................................................. 67
4.6.

Websecurify .......................................................................................................................... 69

4.6.1. Thực nghiệm ................................................................................................................ 69
4.6.2. Phân tích thực nghiệm ................................................................................................. 70
4.7.

Tổng hợp đánh giá ................................................................................................................ 70

Bảng 4.1: Danh sách các lỗ hổng trên các công cụ ................................................... 71
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ........................................... 74
TÀI LIỆU THAM KHẢO .......................................................................................... 75


2

CHƢƠNG 1 GIỚI THIỆU
Nội dung của chương 1 trình bày về tính cấp thiết, mục tiêu, bố cục của đề tài và tìm hiểu
chung những vấn đề về bảo mật anh ninh trên nền Web, đưa ra một vài nguyên nhân gây ra
mất an toàn an ninh trên các ứng dụng Web và các lỗ hổng thường thấy nhiều nhất hiện nay.
1.1. Tính cấp thiết của đề tài
Với sự phát triển rất nhanh của các ứng dụng trên nền Web , việc bảo mật an ninh an toàn
cho các trang Web là một lĩnh vực đặc biệt quan vì nó đư ợc truy cập mọi lúc mọi nơi và bất
kỳ ai. Tuy vậy không phải bất kỳ nhà phát triển phần mềm Web nào cũng chú tâm đến việc
bảo mật anh ninh, vì vậy nhiều ứng dụng Web vẫn tồn tại với các nguy cơ an ninh/an toàn/bảo

mật (security vularability) và gây ra nhiều thiệt hại khi bị tấn công. Tuy nhiên việc tì m kiếm
và phát hiện ra các nguy cơ an ninh thủ công khá khó khăn trong khi đó có nhiều nguy cơ an
ninh có thể phát hiện được bằng các công cụ tự động.
Bên cạnh đó, các loại nguy cơ an ninh không ít, và cũng có rất nhiều công cụ tự động phát
hiện nguy cơ bảo mật nên người phát triển phần mềm khi muốn kiểm tra mức độ an ninh an
toàn của trang web của mình cũng gặp phải nhiều khó khăn. Chính vì vậy đề tài này nghiên
cứu một số kiểu tấn công đang phổ biến và các công cụ tự động phát hiện nguy cơ an ninh an
toàn đồng thời thử nghiệm chúng vào phần mềm “Trường Nhà” ở trang web
. Ứng dụng “Trường Nhà” là một trang Web quản lý trường học phổ
thông và hiện đang được xây dựng bởi một đội phát triển phần mềm. Chính vì vậy, đề tài sẽ đi
thử nghiệm vào ứng dụng này để đưa ra lỗ hổng và một vài khuyến cáo cho đội phát triển
phần mềm và từ đó kiểm tra được tính đúng đắn của kết quả cũng như các khuyến cáo của
luận văn đưa ra.
1.2. Mục tiêu đề tài
Mục tiêu của đề tài là trình bày được tổng quan và cập nhật về các nguy cơ bảo mật, các
cách thức tấn công và các cách phát hiện lỗ hổng bảo mật trên các hệ thống Web và đi sâu vào
một vài loại xâu trên nền Web nổi tiếng và nguy hiểm hiện nay . Từ đó luận văn khảo sát một
số công cụ phần mềm nhằm phát hiện các nguy cơ bảo mật để giúp người lập trình có thể
ngăn chặn sự tấn công của chúng, giảm thiểu khả năng các ứng dụng web bị ảnh hưởng bởi
những lỗ hổng đó. Cuối cùng luận văn đi sâu vào p hát hiện lỗ hổng cho ứng dụng hệ thống
quản lý trường học: dựa trên các công cụ đó.
1.3. Bố cục luận văn
Luận văn bao gồm các chương sau:
Chƣơng 1: Tổng quan an toàn bảo mật trên nền Web: Chương này giới thiệu về vấn
đề bảo mật, vai trò quan trọng của bảo mật trên nền web và các nguy cơ gây ra bởi việc
thiếu an toàn bảo mật cho ứng dụng web.


3


Chƣơng 2: Tấn công an toàn thông tin trong ứng dụng Web: Chương này mô tả về
một vài kỹ thuật tấn công an toàn Web phổ biến (DoS/DDoS, XSS, SQL injection), ví dụ
và cách thức tấn công của chúng.
Chƣơng 3: Giới thiệu một vài công cụ tìm kiếm lỗ hổng bảo mật: Chương này gi ới
thiệu một vài công cụ hỗ trợ trong việc tìm kiếm lỗ hổng trên nền Web . Bên cạnh đó ,
chương này cũng nêu lên cách thức làm việc và các lỗ hổng mà các ứng dụ ng này có thể
phát hiện ra, đưa ra được nhận xét về các công cụ.
Chƣơng 4: Thực nghiệm và phân tích kết quả: Thực nghiệm chạy một số công cụ ở
chương 3 vào việc tìm các lỗ hổng c ho ứng dụng Web là và phân
tích cách thức phương pháp chạy để tìm ra lỗi. Chương 4 cũng đưa ra được một vài
khuyến cáo cho các nhà phát triển phần mềm.
Chƣơng 5: Kết luận và hƣớng phát triển: Chương này đi trình bày những kết qu ả đạt
được của luận văn và hướng phát triển trong tương lai.
1.4. Tổng quan về vấn đề bảo mật trên nền Web
Ngày nay, với sự phát triển mạnh mẽ của công nghệ thông tin và đặc biệt là sự ra đời hàng
loạt của các trang Web đã mang l ại cho con người rất nhiều tiện ích cho các doanh nghiệp .
Các hoạt động giao dịch trực tuyến như thương mại điện tử hay thanh toán trực tuyến ngày
càng phổ biến và được thực hiện thông qua các ứng dụng Web . Ở bất kỳ đâu, khi một máy
tính có nối mạng internet, con người có thể thực hiện các giao dịch của mình một cách thuận
tiện và nhanh chóng. Mọi thông tin của người dùng sẽ được lưu trên Web . Nếu như thông tin
đó bị sửa đổi với ý đồ xấu, câu truy vấn cơ sở dữ liệu có thể bị thay đổi cấu trúc, từ đó kết quả
trả về sẽ khác với ý muốn của người lập trình, hoặc những kẻ lạc danh có thể đánh cắp thông
tin, gây lên những thiệt hại lớn . Có thể thấy việc xây dựng các trang Web động cho phép xây
dựng câu truy vấn động từ đầu vào do người sử dụng cung cấp, chúng tiềm ẩn một nguy cơ
mất an toàn cao nếu như không có một cơ chế kiểm tra dữ liệu đầu vào một cách chặt chẽ.
Tóm lại, các ứng dụng Web luôn luôn tiềm ần và có nguy cơ bị tấn công bởi các kẻ tấn công
với ý đồ xấu, vậy nên vấn đề bảo mật trên nền Web luôn là cấp thiết.
1.5. Một số nguyên nhân phổ biến cho ƣ́ng dụng Web mất tí nh an toàn
Dưới đây là một vài nguyên nhân có thể gây ra những điểm yếu đó cho ứng dụng Web:
o Thiếu nhận thức về an toàn cho ứng dụng Web của người dùng và người lập trì nh

o Thiếu các giải pháp bảo mật sẵn có.
o Sự thúc ép sản phẩm nhanh chóng, dẫn đến các nhà lập trì nh làm nhanh và ẩu, quên đi
việc áp dụng các giải pháp cho bảo mật.
1.6. Thống kê các loại tấn công
Vấn đề an toàn b ảo mật cho một ứng dụng Web là m ột vấn đề hết sức quan trọng, bởi nó
ảnh hưởng tới chất lượng an ninh của cả một hệ thống cơ quan. Với tình trạng hiện tại khi


4

hàng loạt các kẻ tấn công lợi dụng sơ hở của phần mềm để tấn công vào hệ thống nhằm phá
hủy, ăn cắp dữ liệu thì việc làm này lại càng cấp bách và cần thiết.
Nhìn biểu đồ Error! Reference source not found. chúng ta thấy rằng rất nhiều loại tấn
công tồn tại nhưng trong đó có tấn công liên trang (XSS), tấn công từ chối dịch vụ (Denial of
Service) và SQL Injection là chủ yếu. Tiếp theo chúng ta sẽ đi nghiên cứu chi tiết về 3 loại tấn
công này trong chương 2 và một vài lỗ hổng ít được chú ý hơn, chúng sẽ được miêu tả tại
chương 4 khi thực thi các công cụ trên ứng dụng “Trường Nhà”.


5

CHƢƠNG 2 MỘT SỐ NGUY CƠ AN NINH THƢỜNG GẶP
Chương này mô tả về một vài kỹ thuật tấn công an toàn Web phổ biến như: DoS/DDoS, XSS,
SQL injection, đưa ra ví dụ và cách thức tấn công của chúng.
2.1. Tấn công DoS
2.1.1. Giới thiệu về DoS
Một trong những cách thức tấn công trang web có từ lâu nhưng đến giờ vẫn tồn tại và gây
ra nhiều thiệt hại cho các tổ chức mạng mà các kẻ tấn công thường sử dụng rất nhiều hiện nay
là dạng tấn công từ chối dịch vụ (DoS). DoS là một phương pháp tấn công làm tê liệt hoàn
toàn máy chủ, khiến người dùng không thể truy cập được.

Gần đây có rất nhiều trang web hay các tổ chức bị nhiễm dạng tấn công DoS, ví dụ như
trang web của Bkav đã bị tê liệt trong suốt mấy ngày vì bị tin tặc tấn công từ chối dịch vụ
DDoS. Microsoft (15 tháng 8 năm 2003) đã chịu đợt tấn công DoS cực mạnh [1]. Gây ra
những thiệt hại không nhỏ. Cuộc chiến chống lại những cuộc tấn công từ chối dịch vụ DDoS
được coi là vô cùng khó khăn.
2.1.2. Mục đích và các dạng tấn công DoS
Tấn công theo phương pháp DoS nhằm mục đích sau:
 Chiếm băng thông mạng và làm hệ thống mạng bị quá tải, khi đó hệ thống mạng sẽ
không có khả năng đáp ứng những dịch vụ khác cho người dùng bình thường.
 Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập vào dịch vụ.
 Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy cập vào.
 Khi tấn công DoS xảy ra người dùng có cảm giác khi truy cập vào dịch. Các tài nguyên
mà kẻ tấn công thường sử dụng để tấn công như là: Băng thông của hệ thống mạng, bộ
nhớ, ổ đĩa, và CPU hay cấu trúc dữ liệu đều là mục tiêu của tấn công DoS.
2.1.3. Tấn công DDoS
2.1.3.1 Khái niệm về DDoS
Tấn công DDoS là sự tấn công từ một mạng máy tính được thiết kế để tấn công tới một
đích cụ thể nào đó. Dạng tấn công này cũng nhằm mục đích giống như DoS, tuy nhiên nó
được thiết lập trên nhiều địa chỉ IP khác nhau và cùng tấn công vào một đích.
2.1.3.2 Phân loại tấn công DDoS
Có rất nhiều kỹ thuật tấn công DDoS, dựa trên mục đích của kiểu tấn công này, ta có thể
chia DDoS thành hai loại dựa trên mục đích tấn công: Làm cạn kiệt băng thông và làm cạn
kiệt tài nguyên hệ thống. Error! Reference source not found. dưới đây là sơ đồ mô tả sự
phân loại các kiểu tấn công DDoS [4].


6

2.2. Cross-Site Scripting (XSS)
2.2.1. Tổng quan về XSS

XSS là một trong những loại tấn công Web phổ biến nhất, mục đính của chúng là nhúng
các kịch bản (script) chứa mã độc vào trong một trang web và thực thi chúng ở phía máy
khách. Một trang Web có khả năng dễ bị tấn công XSS nhất là khi ứng dụng không kiểm tra
dữ liệu vào và tạo ra một đầu ra ngoài tầm kiểm soát của trang đó. Lỗ hổng này dẫn tới rất
nhiều loại tấn công, ví dụ: đánh cắp các thông tin mật. Ngay cả những nhà an toàn thông tin
lớn nhât như: McAfee, Symantec, Verisign cũng đã có ít nhất 30 lỗ hổng XSS trên trang
Web của họ [2].
2.2.2. Phân loại
Dưới đây là một vài kiểu tấn công dạng XSS:
 Tấn công liên trang dạng lưu trữ (Stored Cross site scripting)
 Tấn công liên trang dạng phản chiếu (Reflected Cross site scripting)
 Tấn công liên trang dựa trên DOM (DOM-based Cross site scripting)
a) Stored XSS
Stored Cross site scripting: Là một loại tấn công nguy hiểm nhất của XSS. Các ứng dụng
Web cho phép người sử dụng lưu trữ dữ liệu có tiềm năng gây ra loại tấn công này. Stored
XSS là cách tấn công mà mã độc được lưu lại trên máy chủ Web thông qua cách chèn một
đoạn script nguy hiểm (thường Javascript) vào ứng dựng Web thông qua một chức năng nào
đó như là gửi bài, viết lời bình. Sau đó những người dùng sau đó khi truy cập vào các chức
năng này sẽ bị dính mã độc từ website có chèn mã của kẻ tấn công đó giống như mô tả ở Hình
2.1 sau.

Hình 2.1: Mô hình tấn công XSS


7

Ngày nay thì các ứng dụng web không còn là các trang web tĩnh nữa, mà thay vào đó là
các trang web động với dữ liệu được lấy và thay đổi từ rất nhiều nguồn khác nhau. Dữ liệu
này chứ đựng hỗn hợp như là: text, hình ảnh và các thẻ HTML như

, <img>, <script>. Kẻ
tấn công sẽ sử dụng tính năng „comment‟ của ứng dụng web để chèn các bình luận (comment)


có chứa các thẻ script. Mỗi người dùng ghé thăm sẽ tải về đoạn bình luận đó và thực thi nó
trên trình duyệt của họ. Giống như chức năng bình luận của Facebook hoặc những diễn đàn,
kẻ tấn công có thể sử dụng để tấn công theo phương pháp này.
b) Reflected XSS
Kiểu tấn công Reflected XSS được biết đến như kiểu loại 1 (non-persistent XSS), là loại
tấn công XSS thường thấy nhất ngày nay. Khi một ứng dụng có thể bị nhiễm loại tấn công
này, nó sẽ không kiểm tra các đầu vào thông qua yêu cầu của máy khách. Chương trình của
kẻ tấn công được viết bởi Javascript, hoặc ActionScript, VBScript. Những kẻ tấn công dạng
này thường làm cho những lỗ hổng được cài đặt, ăn trộm cookies của nạn nhận, thay đổi nội
dung của trang web. Một trong những vấn đề quan trọng về việc khai thác các điểm yếu lỗ
hổng XSS đó là việc mã hóa các ký tự. Trong một số trường hợp, các máy chủ Web hoặc ứng
dụng Web không thể lọc được một vài ký tự mã hóa. Ví dụ, ứng dụng Web có thể lọc được
thẻ <script> nhưng lại không thể lọc được '%3cscript%3e'.

Hình 2.2: Mô hì nh tấn công Reflected XSS
Trong trường hợp này, kẻ tấn công gửi một email cho nạn nhân có chứa mã độc là một
đường liên kết để lấy cookie. Nạn nhân sau khi nhận mail, kích lên liên kết đó và từ đó khởi
tạo một yêu cầu HTTP tới ứng dụng Web và gây nhiễm cho ứng dụng. Đoạn JavaScript có
chứa mã độc sau đó được gửi trở lại trình duyệt của nạn nhân.
2.2.3. Cách phát hiện ra sâu XSS
Trong những trang Web bị dính sâu XSS, thường là khi người sử dụng đăng nhập hoặc
gửi một vài thông tin nào đó tớ máy chủ, mà kết quả được gửi về có liên quan tới thông tin
của chuỗi người dùng đã nhập thì khả năng cao là đã bị dính sâu XSS. Kẻ tấn công thường


8

dùng thẻ <script> để nhúng vào các form của ứng dụng hoặc cũng có thể đưa vào URL. Bạn
có thể thử đăng nhập với chuỗi: <script>alert(“XSS found”)</script>, nếu thấy xuất hiện một
popup thì ứng dụng đó đã bị nhiễm XSS, hoặc tương tự khi nhúng nó vào URL.

2.2.4. Các phƣơng pháp ngăn chặn lỗ hổng bảo mật XSS
Để các trang Web có thể tránh được việc tấn công XSS, những nhà phát triển phần mềm
nên kiểm tra cẩn thận hơn:
 Kiểm tra và chỉ chấp nhận những dữ liệu hợp lệ
 Có chức năng nắm giữ và từ chối nhận các dữ liệu hỏng.
 Thực hiện kiểm tra và sàng lọc dữ liệu một cách liên tục
2.3. Tổng quan SQL Injection
2.3.1. Định nghĩa
SQL injection là một kỹ thuật được sử dụng cho việc muốn tìm ra những điểm yếu kém
của ứng dụng về cơ sở dữ liệu. Nó thường được sử dụng trên các ứng dụng Web, khi mà yêu
cầu nhập thông tin từ người dùng để xử lý. Kỹ thuật này thường thấy trong các trường hợp
yêu cầu đăng nhập vào các ứng dụng hay bất kỳ một khung đăng thông tin từ người dùng mà
ứng dụng sử dụng câu truy vấn. SQL injection có thể xuất hiên hiện trên bất kỳ ứng dụng web
có sử dụng các công nghệ như: ASP, ASP.NET và PHP với SQL. Ví dụ như khi người sử
dụng nhập thông tin vào trang đăng nhập và yêu cầu được gửi đi những thông tin về người
dùng và mật khẩu sẽ được mang đi để so sánh với một tập hợp các người dùng hợp pháp trong
cơ sở dữ liệu [9].
2.3.2. Các kỹ thuật tấn công SQL Injection
Có 4 loại tấn công thuộc SQL Injection: Đăng nhập không cần mật khẩu, sử dụng câu
lệnh SELECT, sử dụng các Stored-procedures, sử dụng câu lệnh INSERT [8].
2.3.3. Những ảnh hƣởng gây ra của SQL Injection
Một khi kẻ tấn công đã nhận ra hệ thống có điểm yếu và có thể tiêm mã độc SQL
Injection vào, chúng sẽ đưa vào các câu lệnh hoặc truy vấn SQL thông qua một trường nhập
đầu vào nào đó. Điều đó tương đương với việc giao cơ sở dữ liệu của bạn cho kẻ tấn công và
cho phép kẻ tấn công thực thi bất kỳ một lệnh SQL nào đó bảo gồm cả câu lệnh “DROP
TABLE” để xóa hẳn cơ sở dữ liệu của bạn đi.
Kẻ tấn công có lẽ thực thi những trạng thái SQL một cách tùy ý trên các hệ thống có khả
năng tiêm nhiễm đó. Điều này gây nguy cho toàn bộ cơ sở dữ liệu của bạn hoặc làm phơi bày
ra những thông tin nhạy cảm. Phụ thuộc vào back-end của cơ sở dữ liệu, khả năng tiêm nhiễm
SQL Injection dẫn đến nhiều mức độ của việc truy cập dữ liệu/hệ thống của kẻ tấn công. Nó

có khả năng thực thi những truy vấn tồn tại, UNION các dữ liệu một các tùy ý, sử dụng các
lựa chọn con hoặc thêm vào các truy vấn theo sau.


9

2.3.4. Các phƣơng pháp phòng chống SQL Injection phổ biến
Các loại tấn công SQL Injection đều dựa trên những điểm yếu về cơ sở dữ liệu. Thông
thường các nhà lập trình thường quên đi việc ngăn chặn lỗi bảo mật khi lập trình dẫn đến
những sơ hở này.


10

CHƢƠNG 3 MỘT SỐ CÔNG CỤ PHÁT HIỆN NGUY CƠ AN NINH
Chương 3 sẽ miêu tả các công cụ phát hiện lỗ hổng bảo mật, với chiến lược là các công cụ dễ
sử dụng, có khả năng phát hiện tốt và được sử dụng nhiều hiện nay mà các nhà kiểm thử có
thể dễ dàng áp dụng và chạy hoàn toàn tự động, không tốn công sức con người. Đó là các
công cụ như: Acunetix, Netsparker, WebScarab, Websecurify, W3af, Havij, Wapiti, BurpSuite,
Exploit-Me, Rcvalle-rapache.
3.1. Netsparker
Netsparker là một công cụ duyệt tìm lỗ hổng do SQL injection và XSS gây ra, là một
phần mềm miễn phí cho tất cả các trang web muốn tìm lỗ hổng. Công cụ này sẽ phát hiện
những vấn đề về bảo mật trong ứng dụng Web, Netsparker có thể kiểm tra và phát hiện ra một
số lượng điểm yếu lớn về SQL injection như: Error Based, Blind và Time Based SQL
Injections. Sau khi xác nhận ra các lỗ hổng đó, công cụ này có khả năng thực thi kiểm tra
rộng hơn để xác định rõ nếu người sử dụng ứng dụng có quyền của người quản lý. Trong
trường hợp này Netsparker sẽ báo cáo một vấn đề riêng biệt được gọi là “Admin User DB
Connection”.
Netsperker tìm và khai thác rất nhiều tầng back-end của các cơ sở dữ liệu khác nhau, có

khả năng tìm thấy 98.53% của tất các SQL injection. Ví dụ chạy trên ứng dụng:
http://localhost/topman và kết quả khi chạy công cụ này được mô tả trong Hình 3.1 như sau:

Hình 3.1: Thực nghiệm công cụ Netsparket

Bên cạnh đó, còn rất nhiều lỗ hổng ở mức độ ảnh hưởng trung bình và thấp như: hiển thị
thông tin một vài trường, lộ thông tin về ngôn ngữ lập trình. Những thông tin mà rất hữu ích


11

cho kẻ muốn tấn công. Dựa trên các công cụ này, nó đã giúp phát hiện được các lỗ hổng, từ
đó các nhà phát triển biết được và khắc phục trước khi bị tấn công gây ra hậu quả.
3.2. Websecurify
Websecurify là một công cụ kiểm thử phần mềm tự động có khả năng quét các thông số
an ninh khác nhau trên trang web và đưa ra phân tích thống kê toàn diện giúp bạn có thể tìm
thấy lỗ hổng an ninh để giữ cho trang web tránh được sự tấn công của kẻ tấn công [14].
Cũng tương tự như bản trên desktop, Websecurify là một đuôi mở rộng của firefox và
chrome. Bạn có thể cài đặt và sử dụng một cách dễ dàng để sử dụng.
3.3. Acunetix
Acunetix là một công cụ bảo mật mới, nó cho phép chúng ta x ác nhận tìm ra rất nhiều
tính yếu điểm cho bất kỳ một ứng dụng Web nào.
Việc nâng cao độ chính xác đạt được bởi việc kết hợp giữa những kỹ thuật quét hộp đen
với phản hồi từ các phần tử nhạy cảm được đặt bên trong mã nguồn của nó được thực thi.
Việc quét hộp đen thì không biết cách mà ứng dụng sẽ tác động trở lại và việc phân tích mã
nguồn không thể hiểu được ứng dụng sẽ có hành vi như thế nào trong khi nó đang bị tấn công.
Do vậy việc kết hợp những kỹ thuật đó với nhau để đạt được những kết quả tương xứng hơn
việc sử dụng các bộ phân tích mã nguồn và quét hộp đen một cách độc lập [5].
Hình 3.2 dưới đây là ví dụ khi chạy trên một trang web:


Hình 3.2: Ví dụ về Acunetix
Trang web quản lý dự án, được cài đặt tại máy localhost: http://localhost/topman.
Chương trình chạy đơn giản bạn chỉ cần đưa đường địa chỉ trang Web vào và bắt đầu chạy,
màn hình kết quả như sau:


12

Trang web cần quét

Mức
động
uy
hiểm
của lỗ
hổng

Hình 3.3: Kết quả chạy Acunetix
Kết quả cho thấy có 4 lỗi có khả năng tấn công bởi XSS. Dựa vào kết quả trên và độ nguy
hiểm, chúng ta có thể đi tới phân tích từng lỗ hổng như sau:
Miêu tả chi tiết về lỗ
hổng
Kích lên
các
lỗ
hổng
để
xem
chi
tiết

Hình 3.4: Phân tí ch chi tiết kết quả
Một REQUEST trên chứa mã độc, khi thực thi di chuột qua login_name, nó sẽ thực thi
câu lệnh và hiển thị ra một hộp thoại thông báo lỗi như trên hình vẽ. Đối với một kẻ tấn công,
nó sẽ cài đặt một đoạn mã xấu nhằm lấy cookies của người sử dụng khi hộp thoại đó được
hiển thị ra, lúc đó hệ thống sẽ bị nhiễm sâu XSS. Một ứng dụng khi bị nhiễm sâu này, nó có
khả năng bị chỉnh sửa nội dung của trang web, thực thi chức năng sai lệch, và có khả năng
gây phá hủy hệ thống dưới quyền của một người sử dụng hợp pháp của ứng dụng, bởi tài
khoản của người sử dụng đã bị đánh cắp. Để ngăn chặn lỗi này xảy ra, người phát triển có thể
ngăn chặn bằng cách kiểm tra lọc kỹ những dữ liệu đầu vào, nhằm tránh những mã độc.


13

3.4. WebScarab
a) Khái niệm
WebScarab là một công cụ kiểm tra các ứng dụng Web, là một khung làm việc dùng cho
việc phân tích các ứng dụng, giao tiếp sử dụng giao thức HTTP và HTTPs. Nó được viết bởi
Java và có khả năng chạy trên rất nhiều nền tảng. WebScarab thao tác giống như một proxy,
cho phép thao tác này kiểm tra và chỉnh sửa các yêu cầu được tạo ra bởi trình duyệt trước khi
chúng được gửi tới máy chủ và cũng kiểm tra, chỉnh sửa các đáp trả từ máy chủ trước khi
chúng được nhận về bởi trình duyệt. WebScarab có hai phần [10]:


Lite mode: Phần này có khả năng chặn và chỉnh sửa yêu cầu (cả giao tiếp HTTP và
HTTPs).



Full mode: Phần này có khả năng thêm vào các yêu cầu đó.


3.5. Havij
a) Khái niệm
Havij là một công cụ tìm kiếm SQL injection, giúp như người kiểm thử thâm nhập và tìm
thấy những lỗ hổng về SQL injection trên các trang web bằng cách tìm cơ sở dữ liệu hiện tại
của ứng dụng và thâm nhập vào để lấy thông tin của cơ sở dữ liệu đó, có thể thực thi chạy
những câu lệnh SQL, truy cập vào các tệp hệ thống và chạy chúng nhằm phá hủy hoàn toàn
hệ thống. Sức mạnh của Havij khác so với các công cụ khác ở phương pháp tiêm nhiễm của
nó.
Sau khi đã lấy được thông tin về người dùng, kẻ tấn công có thể dùng tên người sử dụng
và mật khẩu để đăng nhập vào hệ thống một cách hợp lệ.
b) Những đặc tính của Havij
 Phát hiện ra điểm yếu của cơ sở dữ liệu
 Lấy thông tin về bảng và cột, lấy dữ liệu từ cơ sở dữ liệu, chạy các câu lệnh SQL và thậm
chí truy cập hệ thống tập tin cơ sở và thực hiện lệnh trên hệ điều hành.
 Havij đơn giản và dễ sử dụng cho người dùng.
 Hỗ trợ nhiều loại cơ sở dữ liệu.
3.6. W3af
W3af là một công cụ mã nguồn mở, áp dụng cho việc kiểm tra an ninh cho các ứng dụng
Web, tìm kiếm và khai thác các lỗ hổng. Nó cung cấp thông tin về lỗ hổng an ninh và hỗ trợ
trong việc kiểm thử bằng cách thâm nhập vào trang Web đó. W3af được bắt đầu bởi Andres
Riancho vào tháng 3 năm 2007, sau đó rất nhiều năm phát triển.


14

W3af sử dụng chiến thuật khai thác để tì m ra URL mới và các lỗ hổng . Chúng ta xem
chương tiếp theo để biết được những lỗ hổng mà công cụ này phát hiện ra cho ứng dụng phần
mềm Trường Nhà.
Kết luận, chương này giới thiệu tới một vài loại công cụ mà được dùng phổ biến trong
lĩnh vực an ninh cho ứng dụng Web hiện nay . Dưới đây là một vài đánh giá và kết luận thu

được khi khảo sát tìm hiểu các công cụ trên:


Trong các trường hợp không đủ thời gian kiểm thử và muốn thực thi một kiểm thử
nhanh chóng mà vẫn phát hiện được những lỗ hổng cơ bản mà một trang Web hay gặp
phải, người dùng có thể sử dụng những công cụ Websecurify , Netsparker, W3af.. Bên
cạnh đó việc cài đặt và giao diện rất dễ sử dụng cho nh ững người mới vào nghề làm
kiểm thử không cần mất thời gian nhiều để học cách sử dụng công cụ , Ngoài ra nếu
muốn đánh giá độ an toàn trong công tác đánh giá hệ thống, người dùng có thể sử dụng
công cụ Netsparker, công cụ này rất hữu hiệu trong việc kiểm thử “Penetration testing”
– chính là phương pháp đánh giá độ an toàn bằng cách tấn công (đánh trận giả).



Các công cụ Acunetix, WebScarab, BurpSuite phát hiện nhanh và sâu hơn , áp dụng
cho những người kiểm thử hiểu sâu hơn về công cụ và có khả năng tối ưu hóa cao để
quét. Công cụ này cũng tì m ra rất nhiều những lỗ hổng áp dụng tốt trong trường hợp
muốn đảm bảo an ni nh cho một ứng dụng Web . Exploit-Me cũng là một công cụ
nhanh gọn và dễ sử dụng, tuy nhiên khả năng phát hiện ra lỗ hổng thường kém hơn các
ứng dụng khác.



Trong trường hợp những trang web có nhu cầu muốn chuyên sâu vào tì m nhữ ng lỗ
hổng dạng SQL injection. Công cụ Havij có thể tì m được rất mạng và chí nh xác.



Đối với các ứng dụng Web có sử dụng Apache server, kiểm thử viên muốn phát hiện ra
lỗ hổng có khả năng tấn công DoS . Kiểm thử viên c ó thể sử dụng công cụ Rcvale rapache để phát hiện một cách nhanh chóng bằng cách thử tấn công.




Công cụ Exploit-Me là một tập hợp các công cụ cho việc kiểm tra bảo một của các ứng
dụng Web trên Firefox. Nó được thiết kế đơn giản, dễ cài đặt và sử dụng, nó tương tác
trực tiếp với Firefox.

Mỗi công cụ đều có những ưu điểm phù hợp với các ứng dụng khác nhau và bên cạnh đó
cũng có một vài nhược điểm . Người dùng có thể tham khảo để biết phù hợp nhất với hoàn
cảnh và ứng dụng của mì nh để áp dụng mang lại hiểu quả cao nhất.


15

CHƢƠNG 4 THỰC NGHIỆM VÀ PHÂN TÍCH KẾT QUẢ
Chương 4 sẽ đi sâu vào thực nghiệm một vài công cụ đã được giới thiệu trong chương 3 trên
ứng dụng quản lý trường học mang tên “Trường Nhà”. Đó là những công cụ có khả năng
phát hiện lỗ hổng an ninh cho ứng dụng Web rất cao, giao diện dễ sử dụng và đều là mã
nguồn mở như: Acunetix, Websecurify, Burp suite, Skipfish, W3af và Netsparker. Dựa trên kết
quả thực nghiệm, cuối chương sẽ tổng quát hóa và đưa ra những khuyến cáo nhằm giúp các
ứng dụng Web khác có thể nâng cao được vấn đề bảo mật an ninh cho ứng dụng Web.
4.1.Acunetix
4.1.1. Thực nghiệm
Thực nghiệm công cụ trên ứng dụng quản lý trường học tại:

Hình 4.1: Kết quả chạy công cụ Acunetix
Hình trên mô tả kết quả của việc quét trang . Công cụ này đã phát
hiện ra một vài lỗ hổng về Web server và mạng.
4.1.2. Phân tích thực nghiệm
Với lỗ hổng trên Web server

Apache HTTP có khả năng bị tấn công bởi từ chối dịch vụ (DoS), khả năng kẻ tấn công
sẽ truy cập từ xa và tấn công vào dưới dạng làm tràn bộ nhớ hoặc chiếm hết quyền sử dụng
trên CPU, điều này sẽ gây ra tấn công từ chối dịch vụ dưới dạng tấn công Apache.
Session Cookie không được dùng với cờ bảo mật : Với dạng lỗ hổng này, ứng dụng sẽ không
an toàn khi chúng không được thiết lập cờ bảo mật
. Giải pháp được đưa ra bởi công cụ
Acunetix là các nhà phát triển nên thiết lập cờ bảo mật cho chúng dưới dạng HTTPOnly.


16

4.2.Netsparker
4.3.1. Thực nghiệm
Chúng ta chạy trên ứng dụng :

Hình 4.2: Thực nghiệm công cụ Netsparker
4.3.2. Phân tích thực nghiệm
Lỗ hổng xảy ra tại: />

Lỗi mật khẩu được truyền ngang qua HTTP: Khi tồn tại lỗi này xảy ra, kẻ tấn công có
thể lợi dụng và làm chặn lại giao thông mạng và ăn trộm chứng thực của người sử
dụng hợp pháp. Để tránh được lỗ hổng này xảy ra, các dữ liệu nhảy cảm, hay các form
hoặc trang nên được truyền ngang qua HTTPs thay thì truyền qua HTTP không an
toàn.



Lỗ hổng Django Stack Trace Disclosure: là khả năng hiển thị chi tiết trang web lỗi tại
những ứng dụng web mục tiêu.


Những thông tin này giúp cho kẻ tấn công có thể chống lại hệ thống, khai thác các lỗ
hổng của hệ thống dựa trên các thông tin đã biết, từ đó thực thi khai thác chúng, có thể dẫn
đến phá hủy hệ thống. Để khắc phục lỗi này, nhà phát triển phần mềm nên thay đổi cấu hình
của Django là: thay đổi lựa chọn DEBUG tới false.
Bên cạnh đó có rất nhiều những lỗi với mức độ thấp hơn như:


Lỗi bên trong máy chủ : Máy chủ đáp trả lại về một HTTP với trạng thái 500, điều đó
chỉ ra lỗi về phía máy chủ . Thông tin này sau đó sẽ được phân tí ch một cách cẩn th ận.
Sự ảnh hưởng của lỗ hổng này phụ thuộc vào nhiều điều kiện nhưng nó có khả năng sẽ
gây ra tấn công dưới dạng SQL Injection . Để ngăn chặn lỗ hổng này xảy ra , nhà phát
triển phần mềm nên xem xét lại mã chương trì nh để ngăn chặn những lỗi không mong


17

đợi, để không làm lộ những thông tin ra ngoài , các lỗi nên được xử lý ở phía máy chủ .
Lỗ hổng này xảy ra tại: />

Cookie không được đánh dấu như HTTPOnly : HTTPOnly là một cơ chế bảo mật
cookie. Nếu một khi cookie được đánh dấu như HTTPOnly thì cookie không có khả
năng truy cập được từ máy khách . Do đó nó có khả năng tạo thêm một tầng bảo vệ
chống lại tấn công XSS. Trang web này sẽ có khả năng bị kẻ tấn công truy cập cookie
một cách dễ dàng . Để ngăn chặn các lỗi này , nhà phát triển phần mềm nên đánh dấu
cookie với cờ HTTPOnly để tạo một tầng bảo mật chống lại XSS cho các trang Web
của mình.

4.3.Websecurify
4.6.1. Thực nghiệm
Chúng ta thực thi quét trang web với công cụ Websecurify và có kết quả như sau:


Hình 4.3: Kết quả chạy công cụ Websecurify
4.6.2. Phân tích thực nghiệm
Dưới đây là các lỗ hổng được tì m thấy bởi công cụ này


Error Disclosure: khi lộ thông tin này, kẻ tấn công biết thêm về ứng dụng, phiên bản và
cấu hì nh hiện tại của ứng dụng giúp í ch cho việc khai thác các điểm yếu đó.



Autocomplete Enable: khi những trường thông tin nhạy cả m được hiển thị , kẻ tấn công
có thể truy cập vào bộ đệm có thể lấy được các thông tin đó và tấn công bởi các thông
tin như mật khẩu, cookies…



Email Disclosure: Máy chủ hoặc ứng dụng bị lộ địa chỉ email . Điều này sẽ gây r a một
cuộc spam thư, hay lộ thông tin của người dùng nào đó.


18



Banner Disclosure: Máy chủ và ứng dụng bị lộ các thông tin về phiên bản và kiểu.

4.4.Tổng hợp đánh giá
Chương này thực hiện việc kiểm thử an ninh cho ứng dụng quản lý trường học phổ thông
mang tên “Trường Nhà” () và phát hiện ra các lỗ hổng bảo mật giúp ứng

dụng này có thể giảm thiểu phần nào các thiệt hại gây ra . Dưới đây là danh sách các công cụ
thực thi trên ứng dụng “Trường Nhà”, và các lỗ hổng đã đư ợc miêu tả chi tiết trong khi thực
thi từng công cụ trong các phần thực nghiệm trên:
Bảng 4.1: Danh sách các lỗ hổng trên các công cụ
Công cụ
Lỗ hổng

W3af

Lộ thông tin địa chỉ
Email
XSS

Acunetix

Websecurify

X

X

X

DOS/DDOS

X

Lộ đường dẫn

X


Lộ ngôn ngữ ứng
dụng
Tấn công liên trang
giả mạo

Netsparker

X
X

X

X

Mật khẩu truyền
qua HTTP

X

Mật khẩu tự động
hiển thị

X

Lộ thông tin máy
chủ

X


Hiển thị cookies

X

Khả năng tự động
hiện thị các trường

X

X
X

X
X

X

X

Toàn bộ chương này tập trung đi sâu vào quét lỗ hổng bảo mật bởi các công cụ hiện đại
được sử dụng nhiều hiện nay trên ứng dụng quản lý trường học tại
.
Thêm vào đó , chương này đưa ra một vài khuyến cáo để giúp ứng dụng có thể giảm thiểu các


19

lỗ hổng an ninh nhằm ngăn chặn tấn công của kẻ tấn công vào ứng dụng . Những khuyến cáo
này cũng có thể áp dụng với những ứng dụng Web khác . Dựa vào việc thực nghiệm trên, luận
văn cũng đưa ra một qui trình áp dụng cho việc sử dụng các công cụ một cách hiệu quả như

sau:
o Đầu tiên, chúng ta nên sử dụng công cụ Websecurify vì công cụ cài đặt rất đơn giản,
không mất thời gian và có khả năng tìm được những lỗ hổng cơ bản và quan trọng
như: SQL Injection, XSS, các thông số bị lộ.
o Sau đó, khi đã phát hiện được những lỗ hổng cơ bản, người dùng muốn phát hiện rộng
thêm các lỗ hổng khác, chúng ta có thể áp dụng các công cụ như Acunetix và
Netsparker vì chúng có nhiều lựa chọn và nhiều cấu hình hơn cho người dùng để quét
toàn bộ cấu trúc trang Web, từ đó có khả năng phát hiện ra các lỗ hổng như DOS, các
cổng thông tin mở và mật khẩu được truyền một cách không an toàn.
o Cuối cùng, đối với người dùng quen dùng chế độ dòng lệnh có thể sử dụng thêm các
công cụ như W3af và Skipfish để quét lại một lượt để phát hiện thêm một vài lỗ hổng
như dạng tấn công liên trang giả mạo.
Với việc áp dụng một quy trình như vậy, ứng dụng Web cũng sẽ phần nào giảm thiểu
được các mối nguy hại do các lỗ hổng gây ra mà bất kỳ một ứng dụng Web nào cũng có thể
áp dụng được.


20

CHƢƠNG 5 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Chương 5 tổng kết lại những k ết quả mà luận văn đã làm và đưa ra những hướng phát triển
trong thời gian tới.
Vấn đề bảo mật an ninh trên nền Web luôn là vấn đề quan trọng và cần thiết bởi sự phát
triển rất nhanh của các ứng dụng trên nền Web , những nguy cơ và thiệt hại gây ra bởi các lỗ
hổng là không nhỏ. Tuy vậy không phải bất kỳ nhà phát triển phần mềm Web nào cũng chú
tâm đến việc bảo mật anh ninh, vì vậy nhiều ứng dụng Web vẫn tồn tại các nguy cơ về tính an
toàn bảo mật (security vularability) và liên tục vẫn có các cuộc tấn công xảy ra. Việc tì m kiếm
và phát hiện ra các nguy cơ an ninh một cách thủ công khá khó khăn trong khi đó có nhi ều
nguy cơ an ninh có thể phát hiện được bằng các công cụ tự động . Bên cạnh đó thì các loại
nguy cơ an ninh và các công cụ tự động phát hiện ra các nguy cơ đó ngày càng nhiều, khiến

cho người dùng khó khăn trong việc lựa chọn công cụ nào là phù hợp nhất với ứng dụng của
mình. Chính vì vậy đề tài này nghiên cứu m ột số kiểu tấn công đang phổ biến và các công cụ
tự động phát hiện nguy cơ an ninh an toàn
và thử nghiệm chúng vào phần mềm quản lý
trường học phổ thông với tên gọi “Trường Nhà” ở trang web .
Kế hoạch trong tương lai của luận văn , đề tài sẽ tiếp tục đi sâu nghiên cứu thêm các kĩ
thuật tấn công, có thể sử dụng phần mềm mã nguồn mở để mở rộng thêm chức năng cho công
cụ để đưa ra phương pháp và triển khai chương trình phát hiện lỗ hổng bảo mật ứng dụng
Web ở mức độ sâu hơn.


21

TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Vnexperts Research Department, DOS và DDOS toàn tập.
Tiếng Anh
2. Acunetix (2012), Web Vulnerability Scanner V8, User manual v.1 2012
3. CEH – Certified Ethical Hackers, Hacking Web Applications – Module 13.
4. Craig Shue, Brian Kopecky, Chris Weilemann, Denial of Service Attack Detection using
Extended Analog Computers.
5. MSI::Labs (2006), Acunetix Web Vulnerability Scanner.
6. L. Garber (2000), Denial-of-service attacks rip internet, IEEE Computer.
7. OWASP, .
8. OWASP, SQL Injection, />9. Hakipedia, SQL Injection, />10. Holger Peine Dr, The interactive HTTP proxy WebScarab – Installation and basic use,
Fraunhofer IESE.
11. Sector Toronto (2009), A framework to Own the Web – part I.
12. SpiderLaps,
Web
Hacking

Incident
Database,
by
SpiderLaps,
/>13. Web Application Security Scanner Evaluation Criteria –2009 Web Application Security
Consortium.
14. Websecurify, />

Thank you for evaluating AnyBizSoft PDF Splitter.
A watermark is added at the end of each output PDF file.

To remove the watermark, you need to purchase the software from

/>

×