bobby13689
VIP Members
-
27/04/2017
-
44
-
46 bài viết
Web Pentest - Bài 2: Sử dụng kỹ thuật Brute force để dò tìm đường dẫn và password
Chào các bạn,
Tiếp theo nội dung của bài 1, hôm nay mình sẽ giới thiệu cho các bạn cách áp dụng kỹ thuật Brute force vào các nhiệm vụ cơ bản khi pentest, như tìm các thư mục ẩn, mò password, ...
Như các bạn biết, việc thu thập thông tin (Information Gathering) của một ứng dụng là một việc rất quan trọng trong việc pentest, cho chúng ta có một cái nhìn tổng quan hơn về ứng dụng, từ đó nhận dạng được các điểm có thể tồn tại lỗ hổng (attack surface) trong ứng dụng và đi đến việc nên tấn công theo các lỗ hổng nào, nên đi theo hướng nào đầu tiên. Một số thông tin có thể thu thập được như:
Các bài khác trong cùng chủ đề:
Bài 1: https://whitehat.vn/threads/web-pentest-bai-1-burp-academy-va-gioi-thieu-ve-burp-suite.14724/
Bài 3: https://whitehat.vn/threads/web-pentest-bai-3-thu-thap-thong-tin-cua-ung-dung.14792/
Bài 4: https://whitehat.vn/threads/web-pen...hia-client-cac-co-che-bao-ve-va-bypass.14817/
Các bạn có câu hỏi gì cần giải đáp thì cứ hỏi vào bài viết này nhé. Hẹn gặp lại các bạn ở bài 3.
Happy Hacking.
Thank you.
Tiếp theo nội dung của bài 1, hôm nay mình sẽ giới thiệu cho các bạn cách áp dụng kỹ thuật Brute force vào các nhiệm vụ cơ bản khi pentest, như tìm các thư mục ẩn, mò password, ...
Như các bạn biết, việc thu thập thông tin (Information Gathering) của một ứng dụng là một việc rất quan trọng trong việc pentest, cho chúng ta có một cái nhìn tổng quan hơn về ứng dụng, từ đó nhận dạng được các điểm có thể tồn tại lỗ hổng (attack surface) trong ứng dụng và đi đến việc nên tấn công theo các lỗ hổng nào, nên đi theo hướng nào đầu tiên. Một số thông tin có thể thu thập được như:
- Các công nghệ đang được sử dụng.
- Phiên bản của các công nghệ đang được sử dụng
- Ngôn ngữ lập trình làm nên ứng dụng
- Các cơ chế bảo vệ ứng dụng
- Có các trang quản trị ứng dụng cho phép người dùng truy cập không
- Các đường dẫn bị ẩn đi (không có giao điện cho người dùng gọi).
- ...
- Yêu cầu:
a. Cài đặt Gobuster- Đầu tiên các bạn cài đặt Gobuster (ở Kali mới đã có sẵn Gobuster, các bạn không cần cài), riêng các bạn sử dụng các hệ điều hành chưa có sẵn (Mac, Ubuntu, Windows) thì các bạn tiến hành cài đặt nó theo trang chủ của Gobuster trên github tại (https://github.com/OJ/gobuster/releases/tag/v3.1.0)
- Các bạn tải bản cài tương ứng với hệ điều hành của mình và giải nén ra.
- Sau khi giải nén xong, nạn lấy đường dẫn của Gobuster đã giải nén, thêm vào biến PATH cho Linux, và Mac như sau:
Mã:export PATH=$PATH:<đường dẫn đến gobuster trên máy bạn>
Lưu ý là các bạn cần phân quyền cho file gobuster có quyền thực thi
Mã:chmod +x gobuster
- Đối với Windows, thì bạn sử dụng lệnh set
Mã:set PATH=%PATH%;C:\\đường\\dẫn\\đến\\gobuster
- Để test việc cài đặt Gobuster đã thành công hay chưa, bạn có thể sử dụng lệnh sau để kiểm tra.
Mã:gobuster --help
Nếu ra kết quả tương tự, thì đã cài đặt thành công Gobuster.
- Các bạn tải bản cài tương ứng với hệ điều hành của mình và giải nén ra.
- Đầu tiên các bạn cài đặt Gobuster (ở Kali mới đã có sẵn Gobuster, các bạn không cần cài), riêng các bạn sử dụng các hệ điều hành chưa có sẵn (Mac, Ubuntu, Windows) thì các bạn tiến hành cài đặt nó theo trang chủ của Gobuster trên github tại (https://github.com/OJ/gobuster/releases/tag/v3.1.0)
b. Tải một bộ từ điển thư mục
2. Chạy Bruteforce- Để thực hiện brute force, chúng ta cần một bộ từ điển để Gobuster có thể chạy.
- Ở đây, chúng ta sẽ sử dụng một bộ từ điển khá phổ biến, đó là bộ từ điển của Dirbuster. Các bạn tiến hành tải ở đây https://raw.githubusercontent.com/d...DirBuster-Lists/directory-list-2.3-medium.txt và copy vào thư mục bạn mong muốn
Tải ở đây: https://github.com/danielmiessler/S...tials/10-million-password-list-top-100000.txt
Lưu ý đây là bộ từ điển password đơn giản, đối với các ứng dụng đặc thù, bạn sẽ cần tự tạo một bộ từ điển mật khẩu riêng nếu cần thiết.
Lưu ý đây là bộ từ điển password đơn giản, đối với các ứng dụng đặc thù, bạn sẽ cần tự tạo một bộ từ điển mật khẩu riêng nếu cần thiết.
Sau khi đã cài đặt xong Gobuster, và tải từ điển, chúng ta sẽ bắt đầu chạy để tìm kiếm.
Ban đầu, chúng ta sẽ sử dụng những tham số mặc định của Gobuster, để xem kết quả tìm được ra sao.
Ở đây, mình sử dụng target được cho phép việc test này (http://demo.testfire.net/). Các bạn lưu ý chạy các tool này trên những ứng dụng cho phép việc này nhé, để tránh các vấn đề về pháp lý.
Đây là kết quả sau khoảng 2 phút tìm chạy ứng dụng:
Với hiện trạng process, chúng ta có thể thấy rằng, sẽ mất khoảng vài giờ đồng hồ để chạy xong việc brute force này.
Vậy có cách nào để đẩy nhanh quá trình này lên không? Câu trả lời là có.
Điểm mạnh của Gobuster so với các công cụ khác, là nó được viết trên Go, được tối ưu cho việc multithread, do đó kết quả chạy sẽ rất nhanh. Đồng thời Gobuster cũng cho phép chúng ta có thể thay đổi số threads.
Đối với các máy tính với cấu hình mạnh, chúng ta có thể nâng số threads mặc định thừ 10 lên 70, thử xem kết quả như thế nào nhé:
Sau chưa đến 1 phút, kết quả của chúng ta đã khá hơn rất nhiều so với mặc định
Các bạn thử thay đổi số threads này (thông qua tham số -t) để tìm xem bao nhiêu sẽ nhanh nhất nhé.
Đợi một chút (khoảng 5-10 phút), gobuster sẽ chạy xong bộ từ điển này (các bạn có thể thấy nó là nó nhanh hơn nhiều so với 10 threads mặc định) .
Để ý thấy có đường dẫn admin, chúng ta thử vào đó xem sao
Khi truy cập /admin, chúng ta được redirect về /login.jsp
Ở đây chúng ta thử một số tài khoản phổ biến, như admin, root, bob, ...
Chúng ta đi tìm mật khẩu cho tài khoản admin
Thử đăng nhập bằng tài khoản admin, và mật khẩu là (có cấu hình gửi request sang Burp Suite).
Ta có request như sau được ghi nhận trong Burp Proxy History
Bây giờ, chúng ta sẽ sử dụng request này, để tận dụng Brute force password của user admin.
Ở request này, bạn nhấn chuột phải, chọn Sent to Intruder (hoặc nhấn Control + I trên Windows, hoặc Command + I trên Mac).
Sau đó chúng ta chuyển sang tab Intruder trên Burp để vào giao diện cấu hình Intruder
Mặc định, Intruder sẽ xử lý request này như sau
Ở đây, Intruder đã detect một số trường cần chạy, do chúng ta chỉ cần brute force trường Password, do đó sẽ clear toàn bộ, và add trường passw mà thôi, bằng cách nhấn Clear $, phía bên tay phải của hình, sau đó bôi đen giá trị 1 (phía sau passw) và nhấn Add $
Tiếp theo, chúng ta chuyển qua tab Payload (ở trong tab Intruder)
Ở đây, chúng ta sẽ thêm các giá trị cần brute force, vào bên trong ô Payload Options.
Hoặc các bạn có thể chọn file đã tải ban đầu và chọn Add file
Sau đó chọn Start attack
Kết quả scan sau một thời gian chạy sẽ tương tự như sau
Các bạn có thể để ý thấy, là đa số các request đều có length trả về là 145 (như trên hình), duy chỉ có một request duy nhất, trả về length khác với số đó.
Đó chính là request có mật khẩu đúng của chúng ta.
(Tip cho các bạn: Khi nhấn 2 lần vào cột Length, Burp sẽ thực hiện sắp xếp theo thứ tự giảm dần/tăng dần theo length), chúng ta sẽ tìm thấy nó nhanh hơn.
Và cuối cùng thì chúng ta cũng đã tìm được mật khẩu của tài khoản admin, chính là admin.
Để kiểm tra, ở trên trình duyệt, bạn login với tài khoản này và vào được bên trong ứng dụng.
Có thể bạn sẽ nhập admin:admin ngay từ đầu và tìm ra, tuy nhiên bài này của mình hướng đến một cách làm chung cho nhiều trường hợp khác nhau, bao gồm trường hợp mật khẩu không phải là admin.
Và thế là chúng ta đã xong bài 2 này rồi.Ban đầu, chúng ta sẽ sử dụng những tham số mặc định của Gobuster, để xem kết quả tìm được ra sao.
Ở đây, mình sử dụng target được cho phép việc test này (http://demo.testfire.net/). Các bạn lưu ý chạy các tool này trên những ứng dụng cho phép việc này nhé, để tránh các vấn đề về pháp lý.
- Cú pháp mặc định
Mã:
gobuster dir --url <http://demo.testfire.net/> -w directory-list-2.3-medium.txt
Với hiện trạng process, chúng ta có thể thấy rằng, sẽ mất khoảng vài giờ đồng hồ để chạy xong việc brute force này.
Vậy có cách nào để đẩy nhanh quá trình này lên không? Câu trả lời là có.
Điểm mạnh của Gobuster so với các công cụ khác, là nó được viết trên Go, được tối ưu cho việc multithread, do đó kết quả chạy sẽ rất nhanh. Đồng thời Gobuster cũng cho phép chúng ta có thể thay đổi số threads.
Đối với các máy tính với cấu hình mạnh, chúng ta có thể nâng số threads mặc định thừ 10 lên 70, thử xem kết quả như thế nào nhé:
Mã:
gobuster dir --url <http://demo.testfire.net/> -w directory-list-2.3-medium.txt -t 70
Sau chưa đến 1 phút, kết quả của chúng ta đã khá hơn rất nhiều so với mặc định
Các bạn thử thay đổi số threads này (thông qua tham số -t) để tìm xem bao nhiêu sẽ nhanh nhất nhé.
Đợi một chút (khoảng 5-10 phút), gobuster sẽ chạy xong bộ từ điển này (các bạn có thể thấy nó là nó nhanh hơn nhiều so với 10 threads mặc định) .
Để ý thấy có đường dẫn admin, chúng ta thử vào đó xem sao
Khi truy cập /admin, chúng ta được redirect về /login.jsp
Ở đây chúng ta thử một số tài khoản phổ biến, như admin, root, bob, ...
Chúng ta đi tìm mật khẩu cho tài khoản admin
Thử đăng nhập bằng tài khoản admin, và mật khẩu là (có cấu hình gửi request sang Burp Suite).
Ta có request như sau được ghi nhận trong Burp Proxy History
Bây giờ, chúng ta sẽ sử dụng request này, để tận dụng Brute force password của user admin.
Ở request này, bạn nhấn chuột phải, chọn Sent to Intruder (hoặc nhấn Control + I trên Windows, hoặc Command + I trên Mac).
Sau đó chúng ta chuyển sang tab Intruder trên Burp để vào giao diện cấu hình Intruder
Mặc định, Intruder sẽ xử lý request này như sau
Ở đây, Intruder đã detect một số trường cần chạy, do chúng ta chỉ cần brute force trường Password, do đó sẽ clear toàn bộ, và add trường passw mà thôi, bằng cách nhấn Clear $, phía bên tay phải của hình, sau đó bôi đen giá trị 1 (phía sau passw) và nhấn Add $
Tiếp theo, chúng ta chuyển qua tab Payload (ở trong tab Intruder)
Ở đây, chúng ta sẽ thêm các giá trị cần brute force, vào bên trong ô Payload Options.
Hoặc các bạn có thể chọn file đã tải ban đầu và chọn Add file
Sau đó chọn Start attack
Kết quả scan sau một thời gian chạy sẽ tương tự như sau
Các bạn có thể để ý thấy, là đa số các request đều có length trả về là 145 (như trên hình), duy chỉ có một request duy nhất, trả về length khác với số đó.
Đó chính là request có mật khẩu đúng của chúng ta.
(Tip cho các bạn: Khi nhấn 2 lần vào cột Length, Burp sẽ thực hiện sắp xếp theo thứ tự giảm dần/tăng dần theo length), chúng ta sẽ tìm thấy nó nhanh hơn.
Để kiểm tra, ở trên trình duyệt, bạn login với tài khoản này và vào được bên trong ứng dụng.
Có thể bạn sẽ nhập admin:admin ngay từ đầu và tìm ra, tuy nhiên bài này của mình hướng đến một cách làm chung cho nhiều trường hợp khác nhau, bao gồm trường hợp mật khẩu không phải là admin.
Hy vọng là nội dung trong bài này sẽ giúp ích phần nào đó trong công việc của các bạn, đặc biệt là những bạn mới bước chân vào con đường pentest này.Các bài khác trong cùng chủ đề:
Bài 1: https://whitehat.vn/threads/web-pentest-bai-1-burp-academy-va-gioi-thieu-ve-burp-suite.14724/
Bài 3: https://whitehat.vn/threads/web-pentest-bai-3-thu-thap-thong-tin-cua-ung-dung.14792/
Bài 4: https://whitehat.vn/threads/web-pen...hia-client-cac-co-che-bao-ve-va-bypass.14817/
Các bạn có câu hỏi gì cần giải đáp thì cứ hỏi vào bài viết này nhé. Hẹn gặp lại các bạn ở bài 3.
Happy Hacking.
Thank you.
Chỉnh sửa lần cuối: