"Đào" sâu thông tin về ứng dụng web với công cụ GoBuster
Trong quy trình pentest một ứng dụng web, bước đầu tiên luôn là thực hiện trinh sát mục tiêu để khai thác nhiều thông tin có thể nhất về mục tiêu kiểm thử. Reconnaissance (viết tắt là recon), thể hiện cho công việc trinh sát ứng dụng web mục tiêu. Recon đề cập đến quá trình tin tặc và người kiểm thử xâm nhập đào sâu vào một ứng dụng để thu thập thông tin và khám phá các nội dung mà người dùng thông thường không tiếp cận được.
Một trong những bước quan trọng trong quá trình recon là khám phá các nội dung ẩn như subdomain, thư mục, tập tin ẩn và máy chủ ảo. Trong bài viết này, mình sẽ giới thiệu đến các bạn một công cụ mã nguồn mở giúp chúng ta thực hiện các công việc trên. Công cụ đó có tên là GoBuster.
Theo mô tả từ dự án Gobuster trên Github thì đây là một công cụ dùng để brute-force:
- URI (thư mục và tệp) trong các trang web.
- Tên miền phụ DNS (có hỗ trợ ký tự đại diện).
- Tên máy chủ ảo trên các máy chủ web mục tiêu.
- Amazon S3 bucket công khai
- Google Cloud bucket công khai
- Máy chủ TFTP
Cài đặt công cụ GoBuster
Đầu tiên, hãy bắt đầu bằng việc cài đặt công cụ này. Bạn có thể xem qua mã nguồn của công cụ này thông qua project được công khai trên Github tại đây.
Trên thực tế, chúng ta không cần phải cài đặt công cụ này từ nguồn. Trên hầu hết các bản phân phối hệ điều hành Linux, chúng ta có thể cài đặt nó thông qua lệnh apt-get
với cú pháp:
apt-get install gobuster
Mặt khác, nếu máy tính của bạn đã cài đặt sẵn môi trường ngôn ngữ Go, thì bạn có thể sử dụng câu lệnh:
go install github.com/OJ/gobuster/v3@latest
Lưu ý: phiên bản tối thiểu của Go phải là 1.19 để biên dịch được GoBuster.
Sử dụng công cụ GoBuster
Sau khi đã cài đặt xong chương trình, hãy cùng mình thực hiện trinh sát bằng GoBuster.
GoBuster có ba chế độ khả dụng: “dns”, “dir” và “vhost”. Chúng được sử dụng để tìm kiếm tên miền phụ, thư mục và tệp ẩn cũng như máy chủ ảo tương ứng.
Chế độ DNS
Chế độ DNS được sử dụng để brute-force tên miền phụ DNS. Chúng ta có thể sử dụng nó để tìm tên miền phụ cho một tên miền nhất định. Trong chế độ này, chúng ta có thể sử dụng cờ -d
để chỉ định miền muốn brute-force và -w
để chỉ định danh sách từ điển muốn sử dụng.
gobuster dns -d <tên miền mục tiêu> -w <danh sách từ điển>
Bạn có thể sử dụng danh sách từ điển tùy chỉnh của riêng mình cho việc này, nhưng một lựa chọn tốt là sử dụng danh sách từ điển có sẵn. Ví dụ: Kho lưu trữ Seclist trên Github cung cấp danh sách từ điển khá phong phú cho việc brute-force tên miền phụ: SecLists.
Chế độ dir
Chế độ dir được sử dụng để tìm nội dung bổ sung trên một tên miền hoặc tên miền phụ cụ thể. Điều này bao gồm các thư mục và tập tin ẩn.
Trong chế độ này, bạn có thể sử dụng cờ -u
để chỉ định tên miền mục tiêu mà bạn muốn brute-force và -w
để chỉ định danh sách từ điển bạn muốn sử dụng.
gobuster dir -u <tên miền mục tiêu> -w <danh sách từ điển>
Bạn có thể tìm thấy danh sách từ điển các nội dung web để sử dụng tại đây: SecList.
Chế độ vhost
Cuối cùng, chúng ta có thể sử dụng chế độ Vhost để tìm máy chủ ảo của máy chủ mục tiêu.
Lưu trữ ảo là khi một tổ chức lưu trữ nhiều tên miền trên một máy chủ hoặc cụm máy chủ. Điều này cho phép một máy chủ chia sẻ tài nguyên của nó với nhiều tên máy chủ. Tìm tên máy chủ ảo trên máy chủ có thể tiết lộ thêm nội dung web thuộc về một tổ chức.
gobuter vhost -u <tên miền mục tiêu> -w <danh sách từ điển>
Để brute-force máy chủ ảo, chúng ta có thể sử dụng cùng một danh sách từ như khi brute-force tên miền phụ thông qua chế độ DNS.
Các tùy chọn nâng cao
Ví dụ: trong chế độ dir, chúng ta có thể brute-force các tệp có phần mở rộng cụ thể bằng cách sử dụng cờ -x
.
gobuster dir -u <tên miền mục tiêu> -w <danh sách từ điển> -x .php
Đối với chế độ dir và vhost, chúng ta có thể sử dụng -k
để bỏ qua xác thực chứng chỉ SSL và khắc phục lỗi SSL.
gobuster dir -u <tên miền mục tiêu> -w <danh sách từ điển> -k
Và đối với cả chế độ dir và vhost, chúng ta thậm chí có thể sử dụng cờ -c
để phân loại các cookie đi kèm với yêu cầu của mình.
gobuster dir -u <tên miền mục tiêu> -w <danh sách từ điển> -c 'sssion=123456'
Lời kết
Vậy là mình vừa giới thiệu xong sơ lược về công cụ mã nguồn mở GoBuster phục vụ cho việc khai thác thông tin bao gồm tên miền phụ, thư mục, tập tin bị ẩn và các máy chủ ảo cho bước đầu tiên khi thực hiện pentest một ứng dụng web. Bên cạnh đó, mình cũng đã cung cấp một số tuỳ chọn của công cụ tương ứng với từng mục đích khác nhau khi sử dụng.
Thông qua bài viết này, hi vọng các bạn pentester sẽ bỏ túi thêm cho mình một công cụ hữu ích trong quá trình pentest các dự án. Chúc các bạn thực hiện thành công và đón chờ những công cụ khác mà mình sẽ giới thiệu trong các bài viết kế tiếp nhé!
All Rights Reserved