Trong quá trình kiểm thử xâm nhập (pentest), fuzzing là một kỹ thuật quan trọng giúp phát hiện lỗ hổng trong mã nguồn. Bài viết này sẽ cung cấp một số thông tin về fuzzing, cách hoạt động, và giới thiệu về hai công cụ mã nguồn mở phổ biến: wfuzz và ffuf.
1. Kỹ thuật Fuzzing
- Fuzzing là một phương pháp kiểm thử hộp đen (blackbox testing) trong đó ứng dụng được kiểm tra từ bên ngoài vào, giống như khi một hacker cố gắng đột nhập mà không có quyền truy cập vào mã nguồn.
- Kỹ thuật fuzzing tự động tạo ra các đầu vào hoán vị và phân tích kết quả để tìm ra các lỗ hổng bảo mật trong phần mềm.
- Fuzzing là một phần quan trọng của quy trình kiểm thử bảo mật và giúp cải thiện khả năng phục hồi an ninh mạng.
2. Công cụ Wfuzz
Wfuzz là một công cụ mã nguồn mở giúp tự động hóa kiểm thử bảo mật ứng dụng web. Nó có thể giúp pentester tìm ra và khai thác các lỗ hổng trong ứng dụng web. Dưới đây là hướng dẫn cài đặt và sử dụng Wfuzz:
2.1. Cài đặt Wfuzz:
Wfuzz được tích hợp sẵn trong Kali Linux. Nếu chưa được cài đặt, hãy thực hiện lệnh sau để cài đặt:
sudo apt update -y
sudo apt install wfuzz -y
2.2. Sử dụng Wfuzz:
Dưới đây là một số thao tác thường dùng với Wfuzz:
Tì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 param:
wfuzz -c -w wordlist/dict.txt -u http://target.domain/get.php?FUZZ=test --sc 200
Giải thích:
-c
: Hiển thị kết quả màu mè.-w
: Chỉ định từ điển (word list).--sc
: Chỉ hiển thị HTTP status code 200. Nếu có nhiều, sử dụng ví dụ:--sc 200,301,....
2.3. Fuzzing POST request:
Wfuzz cũng có thể dùng trong việc fuzzing POST request. Ví dụ:
wfuzz -c -w wordlist/dict.txt -d "uname=FUZZ&pass=FUZZ" --hc 302 -u http://target.domain/userinfo.php
2.4. Fuzzing Basic Authentication:
Sử dụng Wfuzz tấn công basic authentication:
wfuzz -c -w wordlist/dict.txt --basic FUZZ:FUZZ -u http://target.domain/admin.php --sc 200
3. Công cụ ffuf
Ffuf (Fuzz Faster U Fool) là một công cụ mã nguồn mở được viết bằng Go, được sử dụng cho fuzzing trong quá trình kiểm thử bảo mật. Dưới đây là hướng dẫn cài đặt, cách sử dụng, và một ví dụ về việc sử dụng ffuf.
3.1. Cài đặt
- Cài đặt Golang:
Ffuf được viết bằng Go, vì vậy ta cần cài đặt Golang trước. Trên Ubuntu, sử dụng lệnh sau để cài đặt:
sudo apt-get install golang
- Cài đặt Ffuf: Sau khi đã cài đặt Golang, cài đặt ffuf bằng lệnh:
go get github.com/ffuf/ffuf
Hoặc có thể sao chép mã nguồn từ repository GitHub và biên dịch bằng lệnh:
git clone https://github.com/ffuf/ffuf
cd ffuf
go build
Để kiểm tra xem việc cài đặt đã thành công hay chưa, hãy chạy lệnh:
ffuf -V
3.2. Sử dụng
Các tùy chọn quan trọng:
-u
hoặc--url
: URL mục tiêu.-w
hoặc--wordlist
: Danh sách từ (wordlist) để fuzz.-X
: Phương thức HTTP (mặc định là GET).-H
: Header (ví dụ:-H "Authorization: Bearer token"
).-d
: Dữ liệu POST.-o
: Lưu kết quả vào tệp.-t
: Số luồng (threads) để thực hiện (ví dụ:-t 50
).
Ví dụ:
Fuzz các tham số URL:
ffuf -u https://example.com/FUZZ -w common.txt
Trong ví dụ này, ffuf sẽ thay thế từ khóa FUZZ trong URL bằng các từ trong danh sách common.txt
.
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về kỹ thuật fuzzing trong quá trình kiểm thử bảo mật (pentest). Fuzzing là một phương pháp quan trọng giúp phát hiện lỗ hổng bảo mật trong mã nguồn ứng dụng. Ngoài ra, chúng ta cũng đã khám phá cách hoạt động của fuzzing thông qua hai công cụ mã nguồn mở phổ biến: wfuzz và ffuf.