KIỂM THỬ XÂM NHẬP
T- Pof?| là một nền tang honeypof| đa chức năng và linh hoạt, giúp mô phỏng
4.4 Khám phá hệ thong và tìm kiếm lỗ hổng bao mật
4.4.1 Khám phá hệ thống ở be mặt bên ngoài
Tiếp sau quá trình tìm kiếm tên mién con, bước tiếp theo chương trình cần xử lý
là khám phá hệ thống ở bề mặt bên ngoài và tìm kiếm tất cả các dịch vụ web đang chạy trong hệ thống.
Thttps:/ /crt.sh/
*https: //github.com/projectdiscovery /subfinder
Shttps: //github.com/tomnomnom/assetfinder
*https: //github.com/Findomain/Findomain
58
Chương 4. Phương pháp thực hiện
create job Host Scanning
SGLi, XSS, OS- injection, LFI, Nuclei Database
~->> Web scanning -~~” Host data
Check duplicate
Output Handler
SQLi, XSS, OS- injection, LFI, Nuclei uyewopqns 'uod ‘g]
SQLi, XSS, OS-
injection, LFI, Nuclei :
HÌNH 4.4: Khám phá hệ thống và tìm kiếm lỗ hổng bảo mật
Với mỗi địa chỉ IP, một job mới được tạo ra (gọi là Host Scanning). Trong job này, chương trình sử dụng công cụ nmap để tìm kiếm các cổng và dịch vụ đang chạy trên máy chủ có IP đó. Đồng thời, chương trình cũng sử dụng công cụ shodan để
bổ sung kết quả thu được từ công cu nmap.
4.4.2 Tìm kiếm lỗ hổng bảo mật
Sau khi các job Host Scanning đã thực thi xong, một job mới sẽ được kích hoạt có
tên là "Web Control". O đây, chương trình tổng hop dữ liệu trả về từ các job Host
Scanning, xóa các dữ liệu trùng lặp và lưu chúng xuống cơ sở dit liệu.
59
Chương 4. Phương pháp thực hiện
Tiếp theo, để tìm kiếm các đường dẫn URL của các dịch vụ web chương trình lấy các dữ liệu từ cơ sở dữ liệu bao gồm: tên miễn con, địa chỉ IP và cổng tương ứng. Nhờ những dữ liệu này, chương trình sử dụng công cụ HTTPX để lọc ra các dịch
vụ web trong số các dịch vụ đang mở. Từ đó có thể tạo ra một danh sách các URL
hoàn chỉnh.
Với mỗi đường dẫn URL, chương trình tạo năm job mới để tìm kiếm lỗ hổng
bảo mật như Hình|4.4|bao gồm:
* SQli: Job SQLi có nhiệm vụ tìm kiếm các lỗ hổng SQL Injection (SQLi).
© XSS: Job XSS có nhiệm vụ tìm kiếm các lỗ hổng Cross-Site Scripting (XSS).
* Command-Injection: Job OS-Injection có nhiệm vụ tìm kiếm các lỗ hổng
Command Injection.
¢ LFI: Job LFI có nhiệm vụ tìm kiếm các lỗ hổng local file inclusion (LFI).
* Nuclei: Job Nuclei sử dung công cu Nuclei để tìm kiếm các lỗ hổng CVE va
một số lỗ hổng khác.
Ngoài công cụ nuclei đã được giới thiệu ở phần cơ sở lý thuyết. Các job SOIi, XSS,
Command-Injection, và LFI có chung luồng hoạt động như sau (Hinh{4.5):
Bruteforce
hidden path Input:
URL | |
Find path from
Output:
Vulnerability details
javascript
HINH 4.5: Luéng hoạt động để tìm kiếm lỗ hổng bảo mật web
Với ý tưởng tìm kiếm lỗ hổng bảo mật dựa trên hành vi của máy chủ, tức là đưa các input (dữ liệu đầu vào) đặc biệt tới máy chủ và xem xét hành vi phản hồi của
60
Chương 4. Phương pháp thực hiện
máy chủ để xác định xem có lỗi bảo mật hay không. Hệ thống cần biết các thư mục và các tham số đầu vào tương ứng trong các thư mục đó trên các đường dẫn
URL.
Dé tìm kiếm các thư mục trong một đường dẫn URL, tác giả đã áp dung hai cách
sau:
¢ Bruteforce thu mục: Sử dung danh sách thư mục phổ biến, hệ thống thử lần
lượt gửi các yêu cầu HTTP tới các thư mục đó và xem xét mã phản hồi trả về
từ máy chủ để xác định thư mục đó có tồn tại hay không. Tác giả sử dung công cụ Dirsearch để thực hiện hóa tính năng này.
* Tìm các thư mục và đường dẫn có trong các tệp javascript và html: Việc
phân tích và tìm kiếm thư mục và đường dẫn trong các tệp javascript và html là không thể bỏ qua, với phương pháp này chương trình thậm chí tìm kiếm được những thư mục và các tham số đầu vào bí mật mà không thể tìm thấy trên giao diện người dùng. Để thực hiện tính năng này, tác giả sử dụng
công cụ Gospider.
Sau khi đã có danh sách các thư mục, hệ thống xóa các thành phần trùng lặp và loại bỏ một số tài nguyên tĩnh như các tệp png, jpeg, txt, pdf,... Sau đó hệ thống tìm kiếm các tham số đầu vào cho mỗi thư mục bằng hai phương pháp như sau:
se Tìm kiếm và phân tích dữ liệu trong các thẻ form: Chương trình tìm kiếm
các form có trong dữ liệu phản hồi của máy chủ.
© Tìm kiếm tham số đầu vào trong các thẻ <a>: Chương trình tìm kiếm tất cả
các thẻ <a> có trong dữ liệu phản hồi của máy chủ, từ đó phân tích và tim
ra các tham số đầu vào.
Sau khi đã có đầy đủ các thông tin về thư mục và các tham số đầu vào, bước tiếp theo đó chính là kiểm tra các lỗ hổng bảo mật. Với phương pháp kiểm thử dựa trên hành vi, hệ thống đưa các dữ liệu đặc biệt là các payloads vào các tham số đầu vào. Dựa vào việc phân tích hành vi phản hồi của máy chủ, hệ thống có thể xác định được máy chủ có đang tổn tại lỗ hổng bảo mật hay không. Đối với mỗi loại lỗ hổng bảo mật đều có các payloads và các hành vi tương ứng khác nhau
như sau:
61
Chương 4. Phương pháp thực hiện
° Lỗ hổng SQL Injection (SQLi): Hệ thống phát hiện lỗ hổng này bằng cách
xem xét hành vi thời gian phản hồi của máy chủ. Bằng cách chèn các mã SQL có tính năng khiến máy chủ bị trì hoãn trong một khoảng thời gian khi được thực thi, hệ thống kiểm tra xem liệu thời gian phản hồi của máy chủ
có vượt quá thời gian chờ đợi (thời gian mà trọng tải yêu cầu làm cho máy chủ bị trì hoãn) hay không. Nếu thời gian phản hồi vượt quá ngưỡng này, chương trình có thể kết luận rằng có lỗ hổng tiêm mã SQL. Ví dụ, hệ thống
sử dụng một payload như aa' and sleep(5)-- -. Nếu máy chủ thực sự tồn tại lỗ hổng và ham sleep được thực thi, thời gian phản hồi của máy chủ sẽ
vượt quá 5 giây.
© Lỗ hổng Cross-Site Scripting (XSS): Dé phát hiện lỗ hổng này, hệ thống gửi
các payloads là các đoạn mã HTML đặc biệt tới máy chủ. Với mỗi trọng tải được gửi đi, trong đó chứa một mã ID để định danh trọng tải. Nếu trọng tải được thực thi như một thành phần của trang, ta có thể phân tích phản hồi của máy chủ và gọi đồi tượng có ID là mã định danh đã truyền vào. Phương pháp này có độ chính xác cao khi kết quả cho ra không có dương tính giả.
¢ Lỗ hổng Command Injection: Để xác định lỗ hổng này ta có thể gây ra nhiều
loại hành vi trên máy chủ như: Đọc tệp hệ thống, khiến hệ thống trì hoãn, tạo một yêu cầu HTTP hoặc DNS tới một máy chủ ngoại vi và nhiều hành
vi khác. Hệ thống sử dung các payloads để tạo hành vi đọc tệp hệ thống kết hợp với tạo thời gian trễ trong hệ thống vì điều này dé nhận ra và không làm ảnh hưởng tới hệ thống. Ví dụ hệ thống sử dụng payload ;cat /etc/passvd, nếu máy chủ sử dụng hệ điều hành linux và có tổn tại lỗ hổng chèn lệnh hệ thống, rất có thé dữ liệu của tệp /etc/passwd sẽ được lộ ra trong phản hồi
của máy chủ.
© Lỗ hổng local file inclusion (LFI): Hệ thống sử dung các payloads để đọc
một tệp hệ thống nhất định và xem xét tệp đó có được đính kèm trong phản hồi của máy chủ hay không.
62
Chương 4. Phương pháp thực hiện