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: Wfuzz và Ffuf.
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:
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:
wfuzz -c -w wordlist/dict.txt -u http://target.domain/FUZZ --sc 200
Tìm các file ẩn:
wfuzz -c -w wordlist/dict.txt -u http://target.domain/FUZZ.php --sc 200
Tìm các tham số:
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ụ:
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:
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:
sudo apt-get install golang
- Cài đặt Ffuf: Sau khi cài đặt Golang, dùng lệnh sau để cài đặt Ffuf:
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:
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:
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:
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ư Wfuzz và Ffuf. 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