Cơ chế phát hiện lỗ hổng dựa trên kỹ thuật fuzzing

Một phần của tài liệu Xây dựng hệ thống kiểm thử bảo mật website dựa trên kỹ thuật fuzzing (Trang 38 - 41)

I. CÁC GIẢI PHÁP XÂY DỰNG HỆ THỐNG

4. Cơ chế phát hiện lỗ hổng dựa trên kỹ thuật fuzzing

Sau khi đã thu thập được các điểm đầu vào của hệ thống chương trình thực hiện việc fuzzing các lỗ hổng tương ứng.

4.1. Cơ chế chèn các dữ liệu fuzzing vào các URL trước khi gửi request

- Kiểu 1: URL có chứa phần truy vấn kèm theo các biến tương ứng.

- Kiểu 2: URL không có phần truy vấn, chỉ có đường dẫn đến tài nguyên hệ thống.

Với mỗi loại lỗi về kiểm duyệt dữ liệu chúng ta sẽ có những tập dữ liệu fuzzing riêng. Để thực hiện việc phát hiện các lỗ hổng này chúng ta cần chèn tất cả các dữ liệu fuzzing vào tất cả các URL mà hệ thống thu được trước khi thực hiện việc gửi yêu cầu. Cơ chế chèn fuzzing vào các URL

Kiểu URL 1 URL http://fuzzing.vn/index.php?var1=a URL Fuzzing http://fuzzing.vn/index.php?var1=__fuzzing___ Ví dụ (XSS) http://fuzzing.vn/index.php?var1=”onmouseover=alert(“signature”) foo=” Kiểu URL 2 URL http://fuzzing.vn/index.php URL Fuzzing http://fuzzing.vn/index.php?__fuzzing___ hoặc Đoán biến (id, act, page... ):

http://fuzzing.vn/index.php?id=__fuzzing___ Ví dụ (XSS) http://fuzzing.vn/index.php?”onmouseover=alert(“signature”)foo= ” http://fuzzing.vn/index.php?id=”onmouseover=alert(“signature”) foo=” http://fuzzing.vn/index.php?act=”onmouseover=alert(“signature”) foo=”

Bảng : Cơ chế chèn fuzzing data vào các URL

Với các POST FORM (sử dụng phương thức POST để truyền dữ liệu) chúng ta có thể thực hiện hoàn toàn tương tự như việc chèn dữ liệu vào các biến trong URL kiểu 1.

4.2. Cơ chế phát hiện các lỗi do cấu hình sai

Trong một ứng dụng web khi triển khai hệ thống luôn có những thành phần rất quan trọng ảnh hưởng nhiều tới hệ thống như:

- Thành phần trang quản trị - Các tệp tin dự phòng…

- Các đường dẫn tới tệp tin cấu hình hệ thống.

- Các dường dẫn mặc định trong các nền tảng ứng dụng (phpMyadmin, manager/html…).

- Đường dẫn tới các tệp tin thường gặp. - Cấu hình tài khoản mặc định.

Chúng ta có một tập dữ liệu fuzz là các đường dẫn mặc định của hệ thống. Bao gồm các đường dẫn quản trị (admin), các tệp tin mở rộng dự phòng (extension back-up file), các đường dẫn tới các tệp tin cấu hình, mặc định của hệ thống…

Khi đó để phát hiện những lỗi về cấu hình này chúng ta chỉ cần gửi các yêu cầu kèm theo theo các đường dẫn này sau đó kiểm tra mã trả về của hệ thống và mã nguồn HTML. Sau đó hoàn toàn có thể đánh giá việc tồn tại hay không của các lỗi cấu hình mặc định này dựa trên các thông tin thu được. Một số cách phân tích kết quả trả về để phát hiện các lỗi cấu hình mặc định

Kiểu lỗi Cách phát hiện

Liệt kê thư mục

(Directory Listing)

Thực hiện việc kiểm tra các đường trỏ đến các thư mục (URL kết thúc bằng đấu “/”).

Kiểm tra mã trạng thái trả về từ 200 -> 299

Trong mã nguồn HTML có chứa các từ “index of” hoặc “parent directory”.

Đường dẫn trang quản trị (Admin Path)

Thực hiện gửi các yêu cầu với các đường dẫn quản trị thông thường (/admin, /administrator, /admin123, … )

Kiểm tra mã trạng thái trả về từ 200 -> 399

Mã HTML: Trong mã HTML có chứ form đăng nhập (có trường type=”password”).

Đọc tệp tin .htaccess

Thực hiện với các đường dẫn thư tới thư mục và nối thêm /.htaccess

Kiểm tra mã trạng thái trả về từ 200->299 Tệp tin cấu

hình

Truy cập vào đường dẫn file cấu hình. Kiểm tra mã trạng thái trả về từ 200->299

Trong source HTML có chứa chữ ký tương ứng của configuration file.

Tệp tin Back-

up Nối các URL trỏ đến tệp tin các extension mặc định của update tệp tin (.back, ~, .bak... ) Kiểm tra mã trạng thái trả về từ 200->299

Bảng : Cơ chế phát hiện các lỗi do việc để cấu hình không an toàn

4.3. Phân tích kết quả trả về của mỗi request

Với mỗi loại lỗ hổng sẽ có những cơ chế phân tích kết quả trả về khác nhau nhưng ta có thể gói gọn dựa trên 5 phương pháp chính

- Dựa vào mã trả về của hệ thống (status_code).

- Dựa trên các loại lỗi của hệ thống (lỗi từ CSDL, lỗi từ ứng dụng web, lỗi từ webserver)

- Dựa vào sự xuất hiện của chữ ký từ.( chữ ký đã gửi kèm trong các dữ liệu fuzzing).

- Dựa trên việc các so sánh kết quả html nhận về từ 2 hoặc nhiều request(ví dụ như lỗ hổng blind SQL Injection – dựa trên ký thuật boolean based).

- Dựa trên thời gian xử lý của hệ thống (blind SQL injection – dựa trên kỹ thuật Time Based).

Phương pháp Lô hổng áp dụng Mô tả kỹ thuật

Mã lỗi hệ thống

File Inclusion, Configuration, …

Dựa vào thông báo lỗi của hệ thống ta có thể biết được hệ thống có thực thi đoạn fuzzing data ta gửi hay không. Hoặc URL đó có tồn tại hay không. Ví dụ như khi ta tìm một url mặc định của hệ thống. Nếu nó trả về giá trị lớn hơn hoặc bằng 200 và nhỏ hơn 300. Thì có nghĩa là URL đó là tồn tại. Dựa trên các lỗi của hệ thống SQL injection, Code Injection, Xpath Injection, File Inclusion, …

Với mỗi kiểu lỗi tương ứng ta phân tích và tìm kiếm các lỗi tương ứng với request trong các mã HTML trả về.

Dựa trên việc so sánh các kết

quả của

HTML nhận được.

Blind SQLi, Blind Xpath Injection, Blind Command Injection, …

Ví dụ như lỗi Blind SQLi chúng ta có thể so sánh kết quả của 2 URL khi thực hiện chèn 2 đoạn dữ liệu fuzzing:

-1’ or 1=1 -- - -1’ or 1=2 -- - Dựa trên việc

kiểm tra thời gian thực hiện hệ thống.

Blind SQL

Injection

Ví dụ như ta kiểm tra thời gian đáp ứng khi chèn dữ liệu fuzzing:

' and sleep(10) -- -

Với việc chèn vào đoạn fuzzing trên nếu ứng dụng có lỗi Blind SQL injection trong biến này thì hệ thống sẽ bị sleep(10) giây.

Bảng : Cơ chế phát hiện các lỗ hổng hệ thống

Một phần của tài liệu Xây dựng hệ thống kiểm thử bảo mật website dựa trên kỹ thuật fuzzing (Trang 38 - 41)

Tải bản đầy đủ (DOCX)

(68 trang)
w