II. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
4. Phân tích và thiết kế chi tiết
4.4.2. Thiết kế dữ liệu Fuzzing
Hình : Thiết kế bộ dữ liệu fuzzing
Với các scanner thông thường như wapiti, nikto... sẽ chỉ lưu dữ liệu fuzzing dưới dạng text thông thường dẫn đến tính trạng các fuzzing mà ngay từ khởi tạo các fuzzing request đã biết rằng kết quả trả về là không có ý nghĩa. Cụ thể do với mỗi nền tảng sẽ có những cách phát hiện và khai thác các lỗ hổng riêng biêt.
Trong phần này tôi đề xuất thiết kế bộ dữ liệu fuzzing dưới dạng xml. Cụ thể, trong mỗi bản ghi (chính là dữ liệu trong thẻ fuzz) của dữ liệu fuzzing sẽ chứa các giá trị liên quan tới nền tảng mà nên dùng loại dữ liệu đó. Khi đó, thực hiện với các dữ liệu fuzzing chúng ta sẽ chỉ lấy ra các dữ liệu fuzzing phù hợp với các nền tảng đã phát hiện được. Điều này giúp giảm đáng kể số lượng các fuzzing request cần gửi tới hệ thống.
Hình : Module Fuzzing – Biểu đồ lớp
Lớp Attack
Kế thừa
Thuộc tính
Name Tên của loại lỗ hổng.
Payload Các dữ liệu fuzzing tương ứng với loại lỗ hổng cần phát hiện.
Result Giá trị kết quả thu được của quá trình fuzzing.
Urls Các giá trị url thu được sau quá tình collector.
Phương thức
Attack() Là phương thức chính được gọi đến khi thực hiện fuzzing hệ thống.
AttackGET() Phương thức attack hệ thống qua việc gửi url.
AttackPOST() Phương thức attack hệ thống qua việc gửi các dữ liệu POST.
Lớp Mod_attack (attack – xss, sqli, ..)
Kế thừa Kế thừa từ lớp attack
Thuộc tính
Name Tên của loại lỗ hổng.
Payload Các dữ liệu fuzzing tương ứng với loại lỗ hổng cần phát hiện.
Result Giá trị kết quả thu được của quá trình fuzzing.
Urls Các giá trị url thu được sau quá tình collector.
Forms Là giá trị thu được sau quá trinh collector.
Phương thức
Attack() Là phương thức chính được gọi đến khi thực hiện fuzzing hệ thống.
AttackGET() Phương thức attack hệ thống qua việc gửi url.
AttackPOST() Phương thức attack hệ thống qua việc gửi các dữ liệu POST.