1. Trang chủ
  2. » Luận Văn - Báo Cáo

Kiểm thử tự động tính bảo mật ứng dụng web

60 1,2K 17

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 2,45 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đó là lý do em chọn đề tài “Nghiên cứu phương pháp và công cụ kiểmthử tự động tính bảo mật ứng dụng web” Mục tiêu đặt ra khi thực hiện đề tài này gồm: - Tìm hiểu tổng quan về lỗ hổng, đư

Trang 1

BAN CƠ YẾU CHÍNH PHỦ

Mã số: 52.48.02.01

Hà Nội, 2016

Trang 3

BAN CƠ YẾU CHÍNH PHỦ

Trang 4

Hà Nội, 2016

Trang 5

Ý KIẾN CỦA GIẢNG VIÊN

Trang 6

MỤC LỤC

Ý KIẾN CỦA GIẢNG VIÊN ii

MỤC LỤC iii

DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT vi

DANH MỤC HÌNH VẼ vii

DANH MỤC BẢNG viii

LỜI CẢM ƠN ix

LỜI NÓI ĐẦU x

CHƯƠNG 1 TỔNG QUAN VỀ LỖ HỔNG BẢO MẬT 12

1.1 Khái niệm lỗ hổng bảo mật 12

1.2 Một số lỗ hổng bảo mật phổ biến 12

1.2.1 SQL Injection 12

1.2.1.1 Khái niệm SQL Injection 12

1.2.1.2 Các dạng tấn công SQL Injection 12

1.2.2 Cross Site Scripting (XSS) 15

1.2.2.1 Giới thiệu chung về XXS 15

1.2.2.2 Các phương thức XSS 16

1.2.3 Cross-site Request Forgery (CSRF) 18

1.2.3.1 Giới thiệu chung về CSRF 18

1.2.3.2 Ngữ cảnh tấn công 19

1.2.3.3 Các dạng tấn công 19

1.2.4 Một số lỗ hổng phổ biến khác 22

1.2.4.1 Lỗi Heartbleed 22

1.2.4.2 Khai thác qua Phishing 22

CHƯƠNG 2 NGHIÊN CỨU CÁC PHƯƠNG PHÁP KIỂM THỬ TỰ ĐỘNG TÍNH BẢO MẬT ỨNG DỤNG WEB 24

2.1 Phân tích tĩnh 24

2.1.1 Phân tích từ vựng 24

Trang 7

2.1.2 Phân tích cú pháp 25

2.1.3 Phân tích mã nguồn 26

2.2 Phân tích động 27

2.2.1 Phương pháp tiêm lỗi 27

2.2.1.1 Giới thiệu 27

2.2.1.2 Các cách thực hiện tạo lỗi 27

2.2.1.3 Các phương pháp tiêm lỗi 28

2.2.2 Kiểm thử Fuzzing 30

2.2.2.1 Giới thiệu 30

2.2.2.2 Ưu điểm và nhược điểm của kiểm thử Fuzzing 30

2.2.2.3 Cách xây dựng các bộ giá trị đầu vào 31

2.3 So sánh phân tích tĩnh và phân tích động 33

2.4 Kiểm thử thâm nhập 34

2.4.1 Định nghĩa và lợi ích của kiểm thử thâm nhập 34

2.4.2 Cách điều khiển kiểm thử thâm nhập 35

CHƯƠNG 3 NGHIÊN CỨU VÀ THỰC NGHIỆM CÔNG CỤ KIỂM THỬ TỰ ĐỘNG TÍNH BẢO MẬT ỨNG DỤNG WEB 37

3.1 Công cụ kiểm thử tự động 37

3.1.1 Acunetix Web Vulnerability Scanner 37

3.1.1.1 Giới thiệu 37

3.1.1.2 Hoạt động của chương trình 38

3.1.1.3 Kết quả quét của Acunetix với trang web cụ thể 40

3.1.2 SecuBat 41

3.1.2.1 Giới thiệu 41

3.1.2.2 Hoạt động của công cụ 42

3.1.2.3 Kết quả quét của SecuBat với trang web cụ thể 43

3.2 Thực nghiệm 44

Trang 8

3.2.2 Kiến trúc tấn công của SecuBat 46

3.2.3 Luồng dữ liệu 48

3.2.4 Luồng làm việc đối với lỗ hổng XSS 49

3.2.4.1 Simple Reflected XSS Attack 49

3.2.4.2 Encoded Reflected XSS Attack 51

3.2.4.3 Form-Redirecting XSS Attack 52

KẾT LUẬN 55

1 Tiếng Việt 56

2 Tiếng Anh 56

Trang 9

DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT

Trang 10

DANH MỤC HÌNH VẼ

Hình 1.1 Quy trình tấn công Stored XSS 16

Hình 1.2 Quy trình tấn công CSRF 18

Hình 1.3 Mô hình tấn công CSRF theo phương thức POST 20

Hình 2.1 Mô hình phân tích từ vựng 24

Hình 2.2 Mô hình phân tích cú pháp 25

Hình 2.3 Đoạn mã khi bấm nút đăng ký 26

Hình 2.4 Các giai đoạn kiểm thử thâm nhập 35

Hình 3.1 Giao diện công cụ Acunetix WVS 39

Hình 3.2 Kết quả sau khi quét bằng Acunetix 40

Hình 3.3 Lỗ hổng XSS được quét bởi Acunetix 41

Hình 3.4 Chi tiết về lỗ hổng XSS quét bởi Acunetix 41

Hình 3.5 Giao diện công cụ SecuBat 42

Hình 3.6 Kết quả sau khi quét bằng SecuBat 43

Hình 3.7 Lỗ hổng XSS được quét bởi SecuBat 43

Hình 3.8 Thành phần thu thập dữ liệu 44

Hình 3.9 Thành phần tấn công 45

Hình 3.10 Thành phần phân tích 46

Hình 3.11 Kiến trúc tấn công 47

Hình 3.12 Luồng dữ liệu của SecuBat 48

Hình 3.13 Quy trình làm việc của một cuộc tấn công XSS 49

Hình 3.14 Simple Reflected XSS Attack Response trang A 50

Hình 3.15 Simple Reflected XSS Attack Response trang B 50

Hình 3.16 Encoded XSS Attack Injection String 52

Hình 3.17 Automatically-Generated Reflected XSS Exploit URL 54

Trang 11

DANH MỤC BẢNG

Bảng 2.1 Bảng phân tích từ vựng 25

Bảng 2.2 Bảng so sánh phân tích tĩnh và phân tích động 33

Bảng 3.1 Danh sách các lỗ hổng có thể tìm thấy bởi Acunetix 37

Bảng 3.2 Bảng mã hóa các ký tự HTML 51

Trang 12

LỜI CẢM ƠN

Trong quá trình thực hiện đồ án tốt nghiệp này, em đã nhận được sựgiúp đỡ tận tình của cán bộ hướng dẫn là ThS Lê Bá Cường – Giảng viênKhoa Công nghệ thông tin Học viện Kỹ thuật Mật mã, sự động viên củangười thân và bạn bè

Xin cảm ơn tất cả mọi người đã tạo những điều kiện tốt nhất để emhoàn thành đồ án tốt nghiệp này!

SINH VIÊN THỰC HIỆN ĐỒ ÁN

Phạm Thị Ngọc Trâm

Trang 13

LỜI NÓI ĐẦU

Ngày nay, rất nhiều website gặp các lỗi nghiêm trọng, đặc biệt là lỗibảo mật, điều này có thể tạo ra sự ngưng trệ của dịch vụ, thêm quyền đối vớingười sử dụng hoặc cho phép các truy nhập không hợp pháp vào hệ thống Theo báo cáo của VNISA – Hiệp hội an toàn thông tin Việt Nam, vào cuốinăm 2012, gần 3.700 lỗi đã được tìm thấy trên 100 website gov.vn, trong khi80% các website này không có biện pháp bảo mật tối thiểu

Để tạo ra một sản phẩm công nghệ thông tin hay phần mềm có chấtlượng, hoạt động kiểm thử phần mềm đóng vai trò rất quan trọng Tuy nhiênviệc kiểm thử thủ công sẽ rất tốn thời gian, bởi đối với mỗi lần bàn giao,người kiểm thử vẫn phải thực hiện lại một tập hợp các testcase đã chạy, dẫntới việc lãng phí công sức

Hiện nay, theo em tìm hiểu, tại nước ta có rất ít các nghiên cứu về vấn

đề này, thường chỉ chú trọng về kiểm thử tự động, hoặc kiểm thử bảo mật,thay vì tìm hiểu kết hợp về kiểm thử tự động tính bảo mật Ví dụ đề tài

“Nghiên cứu và ứng dụng công cụ kiểm thử tự động trong kiểm thử phầnmềm” – Mai Thị Nhi; hay “Nghiên cứu kiểm thử bảo mật website” – ĐinhThị Thiên Anh, mà chưa hề đi sâu vào việc nghiên cứu về các phương phápkiểm thử tự động tính bảo mật website

Đó là lý do em chọn đề tài “Nghiên cứu phương pháp và công cụ kiểmthử tự động tính bảo mật ứng dụng web”

Mục tiêu đặt ra khi thực hiện đề tài này gồm:

- Tìm hiểu tổng quan về lỗ hổng, đưa ra một số loại lỗ hổng bảo mậtphổ biến hiện nay

- Nghiên cứu các phương pháp kiểm thử tự động tính bảo mật ứngdụng web, bao gồm các kỹ thuật và cách thức sử dụng để phát hiện

lỗ hổng, cách xây dựng các bộ giá trị đầu vào

- Giới thiệu, triển khai và tìm hiểu một công cụ kiểm thử tự động tínhbảo mật ứng dụng web đang được sử dụng phổ biến trên thế giới.Bao gồm cách sử dụng, kiến trúc và luồng làm việc của ứng dụngTrong quá trình thực hiện Đồ án, đồ án không thể tránh khỏi những saisót Rất mong nhận được sự góp ý của các thầy, cô giáo và các bạn để đồ ánđược hoàn thiện hơn Em xin chân thành cảm ơn sự hướng dẫn, giúp đỡ tận

Trang 14

– Học viện Kỹ thuật Mật mã đã giúp đỡ em trong quá trình học tập cũng nhưtrong quá trình làm Đồ án.

SINH VIÊN THỰC HIỆN ĐỒ ÁN

Phạm Thị Ngọc Trâm

Trang 15

CHƯƠNG 1 TỔNG QUAN VỀ LỖ HỔNG BẢO MẬT

1.1 Khái niệm lỗ hổng bảo mật

Các lỗ hổng bảo mật trên một hệ thống là các điểm yếu có thể tạo ra sựngưng trệ của dịch vụ, thêm quyền đối với người sử dụng hoặc cho phép cáctruy nhập không hợp pháp vào hệ thống Các lỗ hổng cũng có thể nằm ngaycác dịch vụ cung cấp như sendmail, web, ftp Ngoài ra các lỗ hổng còn tồntại ngay chính tại hệ điều hành như trong Windows NT, Windows 95, UNIX;hoặc trong các ứng dụng mà người sử dụng thường xuyên sử dụng như Wordprocessing, các hệ cơ sở dữ liệu [1]

1.2 Một số lỗ hổng bảo mật phổ biến

1.2.1 SQL Injection

1.2.1.1 Khái niệm SQL Injection

SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗhổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thôngbáo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" và thi hành các câu lệnhSQL bất hợp pháp (không được người phát triển ứng dụng lường trước) Hậuquả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện cácthao tác xóa, hiệu chỉnh, do có toàn quyền trên cơ sở dữ liệu của ứng dụng,thậm chí là server mà ứng dụng đó đang chạy Lỗi này thường xảy ra trên cácứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu nhưSQL Server, MySQL, Oracle, DB2, Sysbase

1.2.1.2 Các dạng tấn công SQL Injection

Có bốn dạng tấn công thường gặp, bao gồm: vượt qua kiểm tra lúc đăngnhập (authorization bypass), sử dụng câu lệnh SELECT, sử dụng câu lệnhINSERT, sử dụng các stored-procedures

a Dạng tấn công vượt qua kiểm tra đăng nhập

Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăngnhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu củaứng dụng web Thông thường để cho phép người dùng truy cập vào các trangweb được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầungười dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng

Trang 16

nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệhay không để quyết định cho phép hay từ chối thực hiện tiếp.

Trong trường hợp này, có thể dùng hai trang, một trang HTML để hiểnthị form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phíangười dùng

strSQL = "SELECT * FROM T_USERS " & _

"WHERE USR_NAME=' " & vUsrName & _

" ' and USR_PASSWORD=' " & vPassword & " ' "

Set objRS = Server.CreateObject("ADODB.Recordset")

Set objRS = Nothing %>

Nếu người dùng nhập chuỗi trong ngoặc sau vào trong cả 2 ô nhập liệuusername/password của trang login.htm là:('OR=') Lúc này, câu truy vấn sẽđược gọi thực hiện là:

SELECT FROM T_USERS WHERE USR_NAME = ''OR'' = '' and USR_PASSWORD =

''OR'' = ''

Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS

và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như làngười dùng đăng nhập hợp lệ

b Dạng tấn công sử dụng câu lệnh SELECT

Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này,

kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báolỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công

Ví dụ, trong các trang tìm kiếm Các trang này cho phép người dùngnhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thường gặp là:

Trang 17

Set objRS = Nothing %>

Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL

để nhập vào trường tên tác giả bằng chuỗi giá trị:

' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*)

Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽthực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa Giả sử đoạn mã nhậpvào là:

' DROP TABLE T_AUTHORS

Câu truy vấn sẽ thực hiện việc xóa bảng

c Dạng tấn công sử dụng câu lệnh INSERT

Thông thường các ứng dụng web cho phép người dùng đăng kí một tàikhoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công,người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection cóthể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhậpvào Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:

INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value

Three')

Nếu đoạn mã xây dựng câu lệnh SQL có dạng:

<%

strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', '

" _ & strValueTwo & " ', ' " & strValueThree & " ') "

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN= "

Trang 18

Set objRS = Nothing %>

Thì chắc chắn sẽ bị lỗi SQL injection, bởi vì nếu ta nhập vào trường thứnhất ví dụ như:

' + (SELECT TOP 1 FieldName FROM TableName) + '

Lúc này câu truy vấn sẽ là:

INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM

TableName) + ' ', 'abc', 'def')

Khi đó, lúc thực hiện lệnh xem thông tin, xem như ta đã yêu cầu thựchiện thêm một lệnh nữa đó là:

SELECT TOP 1 FieldName FROM TableName

d Dạng tấn công sử dung stored-procedures

Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứngdụng được thực thi với quyền quản trị hệ thống 'sa' Ví dụ, nếu ta thay đoạn

mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmd.exe dir C: ' Lúc này hệ thống

sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C: \ cài đặt server Việc phá hoạikiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe

1.2.2 Cross Site Scripting (XSS)

1.2.2.1 Giới thiệu chung về XXS

Cross-Site Scripting hay còn được gọi tắt là XSS là một kĩ thuật tấncông bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ) nhữngđoạn mã script nguy hiểm để thực thi 1 câu lệnh nào đó 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-SiteScript như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML

Trình duyệt của người dùng cuối không có cách nào để phát hiện kịchbản không tin tưởng và đã được chèn mã độc đó, và sẽ thực thi kịch bản Kịchbản độc hại có thể truy cập bất kỳ tập tin cookie, session tokens, hoặc cácthông tin nhạy cảm khác được giữ lại bởi trình duyệt và sử dụng với trangweb đó Các kịch bản thậm chí có thể ghi lại các nội dung của trang HTML.Khi người sử dụng click vào những link đó thì toàn bộ cookies, mật khẩu lưu

Trang 19

trên trình duyệt được gửi về cho hacker qua email hoặc một file nào đó trênhost đã được thiết lập từ trước hoặc bị dẫn tới một trang fishing mà hacker đãthiết lập từ trước Các kịch bản này cũng có thể cài đặt tự động các chươngtrình virus, trojan, backdoor trên máy victim tùy vào mệnh lệnh của hacker.

Khác với SQL Injection tấn công vào CSDL của website, XSS tấn côngtrực tiếp vào người dùng Lợi dụng lỗi XSS, hacker có thể lừa đảo quản trịcủa website, ăn cắp cookie, chiếm session… từ đó có thể đăng nhập chiếmquyền điều khiển website

1.2.2.2 Các phương thức XSS

a Persistent XSS (Stored XSS)

Stored XSS là dạng tấn công mà hacker chèn trực tiếp các mã độc vào

cơ sở dữ liệu của website Dạng tấn công này xảy ra khi các dữ liệu được gửilên server không được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu.Khi người dùng truy cập vào trang web này thì những đoạn script độc hại sẽđược thực thi chung với quá trình load trang web

Hình 1.1 Quy trình tấn công Stored XSS

Quá trình tấn công được thể hiện như Hình 1 1:

- Trước tiên, hacker sẽ khai thác lỗi Stored XSS trên website bằng cáchtìm những form (khung đăng ký, khung comment, khung liên hệ …)không được kiểm tra kỹ dữ liệu đầu vào và tiến hành chèn các đoạn mãđộc vào cơ sở dữ liệu

Trang 20

- Sau đó khi người dùng truy cập vào trang web có chứa dữ liệu liênquan đến cơ sở dữ liệu này thì ngay lập tức, các đoạn script độc hại sẽđược chạy chung với trang web.

- Khi các đoạn script được thực thi, tuỳ vào mục đích của hacker, cácđoạn script sẽ gửi về cho hacker những thông tin như cookie, sessiontoken … Đến đây, xem như quá trình tấn công của hacker đã thànhcông

b Non-persistent XSS (Reflected XSS)

Reflected XSS là dạng tấn công thường gặp nhất trong các loại hìnhXSS Khác với Stored-XSS, với Reflected-XSS hacker không gửi dữ liệu độchại trên server nạn nhân, mà gửi trực tiếp link có chứa mã độc cho ngườidùng, khi người dùng click vào link này, trang web sẽ được load chung vớicác đoạn script độc hại Kịch bản điển hình nhất khi khai thác XSS là hackerchèn đoạn javascript như sau vào website:

Một iframe với kích thước 0×0 được chèn vào trang web và sẽ tự động

load trang lấy cookie của hacker tại địa chỉ http://hacker.com/getcookie.php.

Khi có được cookie, hacker có thể dễ dàng đăng nhập mà không cần biết mậtkhẩu của người dùng

c Dom-Based XSS

Dom-Based XSS là một dạng tấn công XSS làm thay đổi cấu trúc củatrang web bằng cách thay đổi cấu trúc HTML Đối với dạng tấn công này,hacker sẽ chèn các đoạn script nhằm thay đổi giao diện mặc định của trangweb thành một giao diện giả

Ví dụ, ta có một URL như sau: http://www.victim.com/hello/php

Trang 21

Đoạn code trên dùng để hiển thị nội dung chào mừng người dùng khiđược chuyển hướng tới, tên của người dùng được lấy từ tham số name trênURL

URL trên sẽ chào mừng người dùng có tên tram

Xem xét source code của hello.php, ta thấy không có sự ràng buộc dữ liệu nào, vì vậy, thay vì truyền tham số là tram, ta có thể thay bằng:

Khi đó, giao diện sẽ thay đổi thành:

Khi người dùng nhập mật khẩu vào và nhấn Submit thì lập tức script sẽđược thực thi và gửi về cho hacker mật khẩu của người dùng

1.2.3 Cross-site Request Forgery (CSRF)

1.2.3.1 Giới thiệu chung về CSRF

CSRF là kĩ thuật tấn công bằng phương pháp sử dụng quyền chứngthực của người dùng đối với một website, hacker có thể lợi dụng nó để thựcthi những request với quyền chứng thực của người dùng

Trang 22

Hình 1.2 Quy trình tấn công CSRF

Lợi dụng sự không chú ý của người dùng, hacker có thể gửi nhữngđường link mà trong đó chứa mã độc thông qua email, đính kèm trên trangweb…Khi nạn nhận click vào đường link hay mở email, thì những mã độc

sẽ được thực thi quyền xác thực của nạn nhân, gây hậu quả cho nạn nhân mà

họ không thể biết lúc click Loại tấn công sử dụng kỹ thuật này thường dànhcho người am hiểu về hệ thống, có thể là người từng phát triển ứng dụng đó,hoặc một mã nguồn mở, hoặc một mã nguồn nào đó đã được công khai code

1.2.3.2 Ngữ cảnh tấn công

Cross-site request forgery (CSRF) đánh lừa nạn nhân load một page mà

nó có chứa những request độc hại Request độc hại này là những request đượcthừa kế định danh và quyền hạn của nạn nhân nhằm mục đích thực thi một sốchức năng (function)

Ở một số Site, browsers có những request liên kết trực tiếp với site, như

là user’s session cookie, basic authen credentials, IP address, Windowsdomain credentials… Vì thế, nếu người dùng đã được xác thực ở tại một thờiđiểm nhất định thì site sẽ không xác định hay phân biệt được đâu là requestcủa người dùng hợp lệ

Ở một số trường hợp, CSRF có thể được lưu trữ (tồn tại) sẵn trong một

số trang website bị lỗi Những lỗi đó được gọi là stored CSRF flaws Nó cóthể tồn tại trong những thẻ <IMG> hay <IFRAME> trong một trang HTMLhay là một số kiểu tấn công cross-site scripting attack Nếu tấn công CSRF là

có sẵn trong site thì tính nghiêm trọng được tăng thêm gấp nhiều lần

1.2.3.3 Các dạng tấn công

Có 2 dạng tấn công: theo phương thức POST và GET

Trang 23

a Ví dụ tấn công theo phương thức GET

Trong CSRF, hacker sẽ đợi người dùng kết nối và thực hiện xác thựcvới một trang web mà họ tin tưởng (trusted server), và lừa người dùng clickvào những đường link độc hại có đính kém những mã độc vào Khi ngườidùng click vào những đường link độc thì những mã độc sẽ được thực thi trêntrusted server Ở đây, hacker đã sử dụng email mà trong đó đính kèm nhữngđoạn script độc hại đến nạn nhân Khi nạn nhận đã xác thực với một trangweb và mở mail lên thì những đoạn script được đính kèm trong đó sẽ thực thitrên máy nạn nhân

Bước 1: Attacker sẽ gửi đường link có chứa mã độc tới cho User Đoạn

mã độc để thực hiện một hành vi xấu của Attacker, nó được chứa trong mộtfile HTML, và User sẽ không biết được có mã độc trong file hay không Mãđộc thường là một đường link được giấu trong thẻ img, với thuộc tính width

và height của thẻ img đều là 0

Bước 2: Sau khi Attacker gửi và “dụ” được User click vào được link,thì trên máy của User sẽ thực hiện request theo yêu cầu trong đường link có

mã độc mà User không hề hay biết

Bước 3: Khi User “bị gửi” yêu cầu trong link có mã độc đến Server thìServer vẫn đáp ứng bình thường, vì User đã được Server cấp cho session đểthực hiện request Và request chứa mã độc được thực hiện một cách hợp lệ

mà User không hề hay biết

b Ví dụ tấn công theo phương thức POST

Trang 24

Hình 1.3 Mô hình tấn công CSRF theo phương thức POST

Hình 1 3 mô tả mô hình tấn công CSRF theo phương thức POST, chitiết các bước như sau:

Bước 1: Hacker chờ đợi nạn nhân xác thực với vunerability webapplication

Bước 2: Hacker dụ dỗ, dùng mọi biện pháp khác nhau để đánh lừa nạnnhân khởi tạo một request Request này có chứa session id của nạn nhân (do

đã được xác thực), hacker sửa đổi Request này theo mục đích của mình vàchuyển đến cho vunerability web application

Trang 25

Bước 3: Vunerability web application thấy request này có session idhợp lệ nên sẽ thực thi hành động được ghi trong request

Như vậy Hacker đã có thứ họ muốn, đó chính là hành động được ghitrong request được thực hiện bởi vunerability web application nhân danh nạnnhân

1.2.4 Một số lỗ hổng phổ biến khác

1.2.4.1 Lỗi Heartbleed

Heartbleed là một lỗ hỏng nguy hiểm của OpenSSL mới được công bốcho phép hacker có thể từ xa đọc được dữ liệu trên máy chủ có cài đặtOpenSSL phiên bản 1.0.1 đến 1.0.1.f OpenSSL là một thư viện mã hóa, được

sử dụng cho mã hóa dữ liệu trao đổi giữa máy chủ và client Các máy chủ sửdụng OpenSSL như các máy chủ web chạy apache hoặc ngix, các máy chủemail, VPN, Instant Message,

Khi khai thác được lỗ hổng Heartbleed, hacker có thể lấy được privatekey của server, sử dụng để mã hóa các dữ liệu trao đổi giữa server và client

Từ đó hacker có thể đọc được toàn bộ thông tin được trao đổi giữa client vàserver như chưa hề được mã hóa (plain text) Có thể nói như hacker có thểđọc được username, password,… ở dạng plain text Như vậy, mục tiêu củahacker là các site thanh toán trực tuyến như: ngân hàng điện tử, chứng khoánđiện tử, thương mai điện tử,… Ngoài ra, các mail server và một số dịch vụ sử

Trang 26

Cách phòng chống lỗi Heartbleed là kiểm tra phiên bản OpenSSL hiệntại và cập nhật phiên bản OpenSSL Với các giao dịch điện tử, tốt nhất là nên

sử dụng one-time password có giới hạn thời gian sử dụng ngắn

1.2.4.2 Khai thác qua Phishing

Phishing là một hình thức gian lận để có những thông tin nhạy cảm nhưusername, password, credit card … bằng cách giả mạo như là một thực thểđáng tin cậy trong các giao tiếp trên mạng Quá trình giao tiếp thường diễn ratại các trang mạng xã hội nổi tiếng, các trang web đấu giá, mua bán hàngonline…mà đa số người dùng đều không cảnh giác với nó Phishing sử dụngemail hoặc tin nhắn tức thời, gửi đến người dùng, yêu cầu họ cung cấp thôngtin cần thiết Người dùng vì sự chủ quan của mình đã cung cấp thông tin chomột trang web, thoạt nhìn có vẻ hợp pháp, nhưng lại là trang web giả mạo docác hacker lập nên

Phishing là một ví dụ của Social Engineering được sử dụng để lừa đảongười dùng và khai thác lỗ hổng trong việc sử dụng công nghệ kém an ninhcủa các website hiện hành Những nỗ lực mạnh mẽ trong thời gian qua đểchống lại Phishing bao gồm việc ứng dụng các công nghệ an ninh mới đếnviệc đào tạo cho nhân viên, và nâng cao ý thức cộng đồng

Do cách tấn công đơn giản nhưng lại hiệu quả cao nên phishing nhanhchóng trở thành một trong những kiểu lừa dảo phổ biến nhất trên mạng – cóđến gần 70% các vụ tấn công trên mạng năm 2003 có liên quan đến phishing

Trang 27

CHƯƠNG 2 NGHIÊN CỨU CÁC PHƯƠNG PHÁP KIỂM THỬ TỰ

ĐỘNG TÍNH BẢO MẬT ỨNG DỤNG WEB

Kiểm thử bảo mật là một trong những loại quan trọng nhất của kiểmthử phần mềm Mục tiêu chính của kiểm thử bảo mật là để tìm các lỗ hổngcủa hệ thống và xác định dữ liệu và tài nguyên được bảo vệ từ các yếu tố cóthể xâm nhập

Ngày nay, giao dịch trực tuyến ngày một gia tăng nhanh chóng, kiểmthử bảo mật trên ứng dụng web là một trong những điều quan trọng nhất cầnđược thực hiện khi thử nghiệm các ứng dụng web

Các phương pháp kiểm thử tự động tính bảo mật ứng dụng web có thểđược chia làm hai loại: phân tích tĩnh và phân tích động

2.1 Phân tích tĩnh

2.1.1 Phân tích từ vựng

Phân tích từ vựng là quá trình phân tích dòng ký tự tạo nên mã nguồnđược đọc từ trái qua phải và được nhóm lại thành các token Thường chỉ cómột số nhỏ các token cho một ngôn ngữ lập trình gồm: các hằng số (integer,double, char, string ), các toán tử (số học, quan hệ, logic), dấu chấm câu, vàcác từ dùng riêng [2]

Hình 2.4 Mô hình phân tích từ vựng

Bộ phân tích từ vựng đọc từng ký tự từ dòng nhập, nhóm chúng lạithành các lexeme và chuyển các token xác định bởi lexeme này cùng với cácthuộc tính của nó đến những giai đoạn sau của trình biên dịch như Hình 2 4.Trong một vài tình huống, bộ phân tích từ vựng phải đọc vượt trước một số

ký tự mới xác định được một token để chuyển cho bộ phân tích cú pháp Ví

dụ, trong Pascal khi gặp ký tự >, phải đọc thêm một ký tự sau đó nữa; nếu ký

tự sau là = thì token được xác định là “lớn hơn hoặc bằng”, ngược lại thìtoken là “lớn hơn” và do đó một ký tự đã bị đọc quá Trong trường hợp đó thì

Trang 28

ký tự đọc quá này phải được đẩy trả về (push back) cho dòng nhập vì nó cóthể là ký tự bắt đầu cho một trị từ vựng mới.

Token là một chuỗi các ký tự Token được định nghĩa bao gồm các từkhóa, định danh, các hằng số, các toán tử

Một lexeme là chuỗi ký tự tạo thành một token, token là lớp chung màcác lexeme nằm trong đó

Ví dụ: Phân tích từ vựng biểu thức Sum = 4 – 1;

Kết quả thu được sau khi phân tích từ vựng:

dễ dàng thực hiện hơn vì người phân tích có được cái nhìn rõ ràng và có cấutrúc hơn đối với mã nguồn đang thực hiện phân tích.

Công cụ tự động để phân tích từ vựng thường được sử dụng làLex/Yacc

2.1.2 Phân tích cú pháp

Phân tích cú pháp là quá trình phân tích một chuỗi các ký tự Phân tích

cú pháp được thực hiện để xác định xem các câu lệnh trong mã nguồn có địnhdạng, cú pháp đúng hay không từ đó phát hiện ra các lỗi và lỗ hổng tiềm ẩntrong mã nguồn của ứng dụng [2]

Hình 2.5 Mô hình phân tích cú pháp

Ví dụ: Phân tích cú pháp đoạn mã C# sau

Trang 29

Hình 2.6 Đoạn mã khi bấm nút đăng ký

Kết quả thu được: Dòng lệnh dk.ShowDialog( ) gặp lỗi sai cú pháp

bởi vì trong ngôn ngữ lập trình C# một câu lệnh phải được kết thúc bằng dấu

a Phương pháp tiếp cận từ trên xuống (Top - Down):

Phương pháp này thực hiện tìm kiếm những lỗ hổng cụ thể mà khôngcần phải biết toàn bộ chức năng của ứng dụng Phương pháp này thực hiệnnhanh chóng, tuy nhiên đối với các lỗ hổng cần hiểu sâu về hoạt động củachương trình và xuất hiện ở nhiều phần mã của chương trình thì phương phápnày không thực hiện được

b Phương pháp tiếp cận từ dưới lên (Bottom - Up):

Khác với phương pháp tiếp cận từ trên xuống, phương pháp này đòi hỏi

sự hiểu biết sâu sắc về hoạt động bên trong của một ứng dụng bằng cách đọcphần lớn mã nguồn Bắt đầu đọc từ hàm main để hiểu biết về ứng dụng từđiểm nhập đến điểm xuất của nó Phương pháp này rất tốn thời gian, nhưng

có thể phát hiện ra các lỗ hổng phức tạp mà phương pháp Top - Down khôngthực hiện được

c Phương pháp tiếp cận có chọn lọc:

Đây là phương pháp sử dụng kết hợp hai phương pháp Top - Down vàBottom - Up để đạt được hiệu quả tối đa Trong cách tiếp cận có chọn lọc,người kiểm tra sẽ xác định vị trí mà tại đó có thể đưa được dữ liệu vào, và tậptrung kiểm tra các đoạn mã của phần này Phương pháp này rất hiệu quả, tuy

Trang 30

Các kỹ sư sử dụng tiêm lỗi để kiểm thử hệ thống hoặc các thành phầnchịu lỗi Kiểm thử tiêm lỗi phát hiện lỗi, cô lập lỗi, và có khả năng cấu hìnhlại và phục hồi Một môi trường tiêm lỗi thường bao gồm các hệ thống mụctiêu cộng với một dụng cụ tiêm lỗi, thư viện lỗi, bộ tạo khối lượng công việc,thư viện khối lượng công việc, điều khiển, giám sát, thu thập dữ liệu và phântích dữ liệu Các dụng cụ tiêm lỗi tiêm lỗi vào hệ thống mục tiêu, nó thực thicác lệnh từ các bộ tạo khối lượng công việc (ứng dụng, điểm chuẩn, hoặc tổnghợp khối lượng công việc) Bộ giám sát theo dõi việc thực thi các lệnh vàkhởi tạo thu thập dữ liệu bất kì lúc nào cần thiết Các bộ thu thập dữ liệu thựchiện thu thập dữ liệu trực tuyến, và phân tích dữ liệu mà có thể được ẩn, thựchiện xử lý dữ liệu và phân tích Các dụng cụ tiêm lỗi có thể tự hỗ trợ các loạilỗi khác nhau, các vị trí lỗi, số lần lỗi, và các ngữ nghĩa thích hợp của phầncứng hoặc cấu trúc phần mềm - các giá trị trong số đó được lấy ra từ một thưviện lỗi Các thư viện lỗi là một thành phần riêng biệt, cho phép linh hoạt hơn

và di chuyển được Các bộ tạo khối lượng công việc, bộ giám sát, và cácthành phần khác có thể được thực hiện theo cùng một cách [9]

Công cụ tự động thường được sử dụng là ExhaustiF và Holodeck

2.2.1.2 Các cách thực hiện tạo lỗi

Tạo thủ công: Thực hiện tạo đầu vào bằng tay, sử dụng các trình soạnthảo để tự tạo ra dữ liệu đầu vào, tốn thời gian, nhưng thường mang lại kếtquả tốt nhất

Tạo tự động: Thực hiện bằng cách nghiên cứu các giao thức và thiết kếmột thuật toán để tạo các đầu vào tùy theo mục đích Cách này rất phù hợp

Ngày đăng: 21/09/2016, 23:45

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Quy trình tấn công Stored XSS - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 1.1 Quy trình tấn công Stored XSS (Trang 15)
Hình 1.2 Quy trình tấn công CSRF - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 1.2 Quy trình tấn công CSRF (Trang 18)
Hình 1.3 Mô hình tấn công CSRF theo phương thức POST - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 1.3 Mô hình tấn công CSRF theo phương thức POST (Trang 20)
Hình 2.4 Mô hình phân tích từ vựng - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 2.4 Mô hình phân tích từ vựng (Trang 23)
Bảng 2.1 Bảng phân tích từ vựng - Kiểm thử tự động tính bảo mật ứng dụng web
Bảng 2.1 Bảng phân tích từ vựng (Trang 24)
Hình 2.5 Mô hình phân tích cú pháp - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 2.5 Mô hình phân tích cú pháp (Trang 24)
Bảng 2.2 Bảng so sánh phân tích tĩnh và phân tích động - Kiểm thử tự động tính bảo mật ứng dụng web
Bảng 2.2 Bảng so sánh phân tích tĩnh và phân tích động (Trang 32)
Hình 2.7 Các giai đoạn kiểm thử thâm nhập - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 2.7 Các giai đoạn kiểm thử thâm nhập (Trang 34)
Hình 3.8 hiển thị giao diện công cụ Acunetix, cửa sổ bên trái cung cấp cho   ta   một   dãy   các   công   cụ:   Web   Scanner,   Site   Crawer,   Target   Finder, - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 3.8 hiển thị giao diện công cụ Acunetix, cửa sổ bên trái cung cấp cho ta một dãy các công cụ: Web Scanner, Site Crawer, Target Finder, (Trang 37)
Hình 3.8 Giao diện công cụ Acunetix WVS - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 3.8 Giao diện công cụ Acunetix WVS (Trang 38)
Hình 3.10 Lỗ hổng XSS được quét bởi Acunetix - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 3.10 Lỗ hổng XSS được quét bởi Acunetix (Trang 40)
Hình 3.11 Chi tiết về lỗ hổng XSS quét bởi Acunetix - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 3.11 Chi tiết về lỗ hổng XSS quét bởi Acunetix (Trang 41)
Hình 3.12 Giao diện công cụ SecuBat - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 3.12 Giao diện công cụ SecuBat (Trang 42)
Hình 3.13 Kết quả sau khi quét bằng SecuBat 3.1.2.3 Kết quả quét của SecuBat với trang web cụ thể - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 3.13 Kết quả sau khi quét bằng SecuBat 3.1.2.3 Kết quả quét của SecuBat với trang web cụ thể (Trang 43)
Hình 3.14  thể hiển kết quả kiểm tra lỗ hổng XSS đối với trang web http://demo.testfire.net - Kiểm thử tự động tính bảo mật ứng dụng web
Hình 3.14 thể hiển kết quả kiểm tra lỗ hổng XSS đối với trang web http://demo.testfire.net (Trang 43)

TỪ KHÓA LIÊN QUAN

w