0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Đặc điểm và công cụ hỗ trợ kỹ thuật Fuzzing trong Kiểm thử Xâm nhập (Pentest)

Đăng vào 3 tuần trước

• 3 phút đọc

Tìm hiểu kỹ thuật Fuzzing trong Kiểm thử Xâm nhập (Pentest)

Fuzzing là một trong những phương pháp quan trọng nhất trong lĩnh vực kiểm thử xâm nhập (pentest), giúp phát hiện các lỗ hổng bảo mật trong mã nguồn của ứng dụng. Bài viết này sẽ minh họa rõ ràng về kỹ thuật fuzzing, cách thức hoạt động của nó và giới thiệu hai công cụ mã nguồn mở nổi bật: WfuzzFfuf.

1. Kỹ thuật Fuzzing là gì?

  • Fuzzing là kỹ thuật kiểm thử hộp đen (black box testing) trong đó ứng dụng được kiểm tra từ bên ngoài mà không cần truy cập vào mã nguồn. Phương pháp này mô phỏng hành vi của một hacker nhằm tìm ra những điểm yếu trong hệ thống.
  • Fuzzing tự động tạo ra các đầu vào ngẫu nhiên (random inputs) và phân tích phản hồi của ứng dụng để xác định liệu có lỗ hổng bảo mật nào hay không.
  • Việc áp dụng kỹ thuật fuzzing trong quy trình kiểm thử bảo mật không chỉ giúp phát hiện lỗ hổng mà còn gia tăng độ bền vững của ứng dụng trước các cuộc tấn công mạng.

2. Giới thiệu về công cụ Wfuzz

Wfuzz là một công cụ mã nguồn mở mạnh mẽ được thiết kế để tự động hóa quá trình kiểm thử bảo mật cho ứng dụng web, giúp người kiểm thử (pentester) tìm ra và khai thác các lỗ hổng. Dưới đây là hướng dẫn cài đặt và sử dụng Wfuzz:

2.1. Cài đặt Wfuzz

Wfuzz thường được tích hợp sẵn trong Kali Linux. Nếu bạn chưa安装, hãy chạy lệnh sau trên terminal:

Copy
sudo apt update -y
sudo apt install wfuzz -y

2.2. Các lệnh cơ bản sử dụng Wfuzz

Tìm kiếm URI:

Copy
wfuzz -c -w wordlist/dict.txt -u http://target.domain/FUZZ --sc 200

Tìm các file ẩn:

Copy
wfuzz -c -w wordlist/dict.txt -u http://target.domain/FUZZ.php --sc 200

Tìm các tham số:

Copy
wfuzz -c -w wordlist/dict.txt -u http://target.domain/get.php?FUZZ=test --sc 200
  • Trong đó, -c để hiển thị kết quả màu sắc, -w chỉ định từ điển, và --sc chỉ hiển thị mã trạng thái HTTP 200.

2.3. Thực hiện Fuzzing trên POST request

Wfuzz cũng có khả năng fuzzing trên các yêu cầu POST. Ví dụ:

Copy
wfuzz -c -w wordlist/dict.txt -d "uname=FUZZ&pass=FUZZ" --hc 302 -u http://target.domain/userinfo.php

2.4. Fuzzing với Basic Authentication

Để sử dụng Wfuzz cho tấn công cả cơ chế xác thực cơ bản:

Copy
wfuzz -c -w wordlist/dict.txt --basic FUZZ:FUZZ -u http://target.domain/admin.php --sc 200

3. Giới thiệu về công cụ Ffuf

Ffuf, viết tắt của Fuzz Faster U Fool, là công cụ mã nguồn mở được phát triển bằng ngôn ngữ Go, phục vụ cho fuzzing trong môi trường kiểm thử bảo mật. Dưới đây là hướng dẫn cài đặt và cách sử dụng Ffuf:

3.1. Cài đặt Ffuf

  • Cài đặt Golang: Đầu tiên, cài đặt Golang cần thiết cho Ffuf:
Copy
sudo apt-get install golang
  • Cài đặt Ffuf: Sau khi cài đặt Golang, dùng lệnh sau để cài đặt Ffuf:
Copy
go get github.com/ffuf/ffuf

Hoặc bạn có thể sao chép mã nguồn và biên dịch như sau:

Copy
git clone https://github.com/ffuf/ffuf
cd ffuf
go build
  • Để kiểm tra xem Ffuf đã được cài đặt thành công chưa, hãy chạy lệnh:
Copy
ffuf -V

3.2. Hướng dẫn sử dụng Ffuf

Một số tùy chọn quan trọng khi sử dụng Ffuf:

  • -u hoặc --url: URL mục tiêu.
  • -w hoặc --wordlist: Danh sách từ (wordlist) dùng để fuzz.
  • -X: Phương thức HTTP (mặc định là GET).
  • -H: Tiêu đề yêu cầu (như -H "Authorization: Bearer token").
  • -d: Dữ liệu gửi trong POST.
  • -o: Lưu kết quả vào tệp.
  • -t: Định số luồng (threads) trong quá trình thực hiện (ví dụ: -t 50).

Ví dụ sử dụng Ffuf để fuzz các tham số URL:

Copy
ffuf -u https://example.com/FUZZ -w common.txt

Trong trường hợp này, Ffuf sẽ thay thế từ FUZZ trong URL bằng các từ từ danh sách common.txt.

Kết luận

Trong bài viết này, chúng ta đã cùng nhau tìm hiểu về kỹ thuật fuzzing trong kiểm thử bảo mật (pentest) và tầm quan trọng của nó trong việc phát hiện các lỗ hổng bảo mật trong ứng dụng. Hơn nữa, chúng ta cũng đã khám phá cách thức hoạt động của fuzzing và các công cụ hỗ trợ mạnh mẽ như WfuzzFfuf. Hy vọng bài viết sẽ giúp bạn có thêm kiến thức và kinh nghiệm trong lĩnh vực kiểm thử bảo mật.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào