Hướng dẫn khai thác thông tin trên các dịch vụ trong quá trình pentest (Phần 1)

tuantran

Moderator
Thành viên BQT
27/04/2017
29
76 bài viết
Hướng dẫn khai thác thông tin trên các dịch vụ trong quá trình pentest (Phần 1)
Hallo toàn thể anh em,

Quá trình pentest cần rất nhiều thông tin, hy vọng hai bài viết trước của mình: Hướng dẫn thu thập thông tin trước khi thực hiện pentest - Phần 1Phần 2 hữu ích với các bạn.

Nhưng đó mới chỉ là những bước đi đầu tiên, tiếp theo chúng ta sẽ phải tiếp cận sâu hơn vào mục tiêu cần pentest. Lúc này, công tác thu thập thông tin về các dịch vụ đang sử dụng trên mục tiêu và các công cụ hỗ trợ khai thác dịch vụ đó sẽ rất cần thiết.

Hãy cùng mình tìm hiểu tiếp nhé

upload_2021-9-3_17-52-49.jpeg

Trong series này mình sẽ chỉ tập trung vào các dịch vụ được dùng phổ biến trong máy chủ hiện nay như FTP, SMTP, SMB, RPC, Mysql, SQL-Server... Xuyên suốt chuỗi bài viết, ta sẽ tập trung tìm hiểu theo cấu trúc như sau:

  1. Định nghĩa về dịch vụ
  2. Các cách xác định và công cụ để thu thập thông tin
Bây giờ thì cùng bắt tay vào tìm hiểu dịch vụ đầu tiên - File Transfer Protocol (FTP) - với mình nhé!

File Transfer Protocol (FTP) là gì?

Định nghĩa ngắn gọn, FTP là một giao thức mạng được dùng để truyền file từ server đến client thông qua mạng. FTP server có thể truy cập thông qua ftp command-line hoặc là một chương trình thứ 3 như là Filezila. Mặc định, dịch vụ FTP chạy trên cổng 21 của máy mục tiêu.

Với những cách dưới đây có thể giúp chúng ta tìm kiếm được những lỗ hổng hoặc FTP server bị cấu hình sai.

Xác định mục tiêu có đang sử dụng FTP hay không?

Sử dụng nmap để xác định xem FTP server có đang được chạy trên máy mục tiêu hay không thông qua lệnh:

Mã:
nmap –p 21 $IP

upload_2021-9-3_17-54-49.png

Với kết quả như thế này thì mục tiêu đang chạy FTP trên cổng 21.

Để xác định version hiện tại đang được dùng trên đó. Sử dụng lệnh sau:

Mã:
nc –nv $IP 21
upload_2021-9-3_17-54-49.png

Vậy là chúng ta đã xác định được là mục tiêu đang dùng version vsFTPd 3.0.3.

Thông qua đó, ta có thể sử dụng searchsploit để kiểm tra xem bản đang dùng có những lỗ hổng bảo mật nào đã được biết tới hay không?

upload_2021-9-3_17-54-49.png


Trong trường hợp không tìm thấy khả năng tấn công vào những lỗ hổng đã biết, thì next thôi.

Sau khi chúng ta đã xác định được mục tiêu đang sử dụng FTP, bước tiếp theo chúng ta sẽ triển khai thu thập nhiều hơn. Ở đây mình chia ra thành 2 loại đó là khái thác thủ công và tự động. Nếu các bạn là 1 người mới thì mình prefer chọn thủ công để có thể hiểu sâu hơn. Còn nếu bạn đã có kinh nghiệm và lười làm thủ công (như mình :D), muốn có kết quả ngay thì hãy chọn ngay quá trình khai thác tự động. Còn chần chừ gì nữa, mình cùng tiếp tục tìm hiểu kỹ hơn nào!

Khai thác thủ công

Anonymous Authentication (Xác thực người dùng nặc danh)

Một điểm đặc biệt của FTP chính là cho phép remote user đăng nhập mà không cần phải có tài khoản trên đó.
Nếu như tính năng này được bật trên FTP server, người dùng có thể đăng nhập dưới dạng anonymous user với bất kì mật khẩu nào, ví dụ như:


Mã:
ftp $IP
# nhập username:  anonymous
# nhập mật khẩu: anonymous hoặc để trống bằng cách nhấn enter


upload_2021-9-3_17-56-14.png

Trong trường hợp bạn đã kết nối được ftp, đây là các command line thông dụng để download, upload, chỉnh sửa, xóa file trên FTP:

upload_2021-9-3_17-56-14.png


Brute forcing credentials

Với cách này, chúng ta có thể đoán username và mật khẩu để kết nối với FTP server. Để làm được điều này, chúng ta sử dụng công cụ Hydra (https://github.com/vanhauser-thc/thc-hydra).

Mã:
hydra [-L users.txt or -l user_name] [-P pass.txt or -p password] -f [-S port] ftp://$IP

upload_2021-9-3_18-0-21.png

Với credentials phía trên thì bạn có thể kết nối vào FTP server.

Nếu như bạn không muốn phải thực hiện các cách trên bằng tay, thì nmap cũng cung cấp các script để bạn tự động hóa quá trình này.

Khai thác tự động

Nmap script

Nmap scripting engine (NSE) cho phép người dùng có thể viết hoặc chia sẻ script đơn giản để tự động hóa các quá trình trên.
Nmap cung cấp các FTP script liên quan như:

  • Ftp-bounce - kiểm tra xem nếu FTP server cho phép scan port hay không
  • Ftp-non - Kiểm tra nếu FTP server cho phép anonymous đăng nhập
  • Ftp-brute - Thực hiện đoán mật khẩu để đăng nhập FTP server.
Để chạy nmap với script. Ta dùng:

Mã:
nmap –p 21 –script [scriptname] $IP

Vậy là đã xong quá trình khai thác, chúng ta cùng chuyển sang bước tiếp theo nhé.

Thu thập File và Folders

Khi đã đăng nhập thành công, ta nên thực hiện các bước tiếp theo dưới đây:

  • Kiểm tra thư mục hiện tại.
  • Kiểm tra xem FTP có cấp quyền truy cập vào các thư mục đang được các dịch vụ khác sử dụng hay không
  • Các tệp và thư mục mà người dùng hiện tại có quyền truy cập để đọc/ghi hay không.
Các bước thu thập trên là chìa khóa cho phép chúng ta khai thác thành công FTP.

Ví dụ, trường hợp FTP server có cấp quyền truy cập vào folder được dùng bởi web server, a malicous script có thể upload và thực thi từ browser. Sau đó, kẻ tấn công có thể chiếm quyền kiểm soát máy chủ.

Phòng chống nó như thế nào?

Như vậy là chúng ta đã đi qua tất cả các cách để thu thập thông tin từ FTP rồi. Vậy còn cách phòng chống những bước trên thì sao nhỉ? Đơn giản như đan rổ, các bạn chỉ cần tuân thủ các cách dưới đây:

  • Nên tắt Anonymous authentication.
  • Đặt mật khẩu mạnh để tránh brute forcing
  • Luôn luôn cập nhật FP thường xuyên
Đến đây thì bài cũng đã kết thúc, các bạn đã nắm được cách khai thác thông tin trên các dịch vụ trong quá trình pentest chưa? Hãy tìm ngay một máy chủ để thực hiện thu thập nào!!! Nếu có thắc mắc thì đừng quên đặt câu hỏi cho mình ở phần comment nhé

Happy Hacking !!!
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
enumeration ftp pentest
Bên trên