Xin chào,
Trong bài cuối cùng của series Kali Linux Căn Bản này, chúng ta sẽ cùng nhau chinh phục thử thách cuối cùng của phòng CC:Pen Testing. Vì đây là một thử thách rất dễ, các công cụ chúng ta cũng đã đều học qua ở các bài trước, nên mình sẽ không hướng dẫn chi tiết nữa. Do đó, bạn nào quên cách sử dụng công cụ nào thì xin xem lại các bài trước nhé.
Chúng ta cùng vào bài.
1 – Performing reconnaissance (Thu thập thông tin từ bên ngoài)
1A – Kiểm tra kết nối
B1: Các bạn bấm vào nút Start Machine màu xanh lá cây ở task 24, chờ tầm 2 phút để hệ thống khởi động và sẽ xuất IP của hệ thống cần tấn công cho chúng ta.

B2: Chúng ta ping đến mục tiêu để kiểm tra liệu chúng ta có thể kết nối được đến hệ thống mục tiêu hay không?

Ping thành công. Nghĩa là máy Kali Linux và hệ thống cần tấn công ở trong cùng 1 mạng và có thể giao tiếp với nhau. Chúng ta bắt đầu thăm dò mục tiêu.
1B – Nmap scans
Scan tất cả các TCP ports trong cùng hệ thống:
sudo nmap -vv -Pn -T4 -p- -oN tcp-scan 10.10.102.75

Nmap phát hiện ra hệ thống mục tiêu hiện đang chạy 2 dịch vụ mạng ở port 22 và port 80. Theo mình dự đoán, hệ thống đang chạy SSH trên port 22 và HTTP web service trên port 80. Trong lúc chờ Nmap chạy, chúng ta sẽ dùng trình duyệt Firefox trên Kali Linux để truy cập thử vào web service của mục tiêu (các bạn chuyển đến phần 1C nhé).
Sau khoản 10 phút chạy, thì chúng ta có được kết quả Nmap scan đầu tiên như sau:

Scan tất cả UDP ports trong hệ thống:
sudo nmap -vv -Pn -T4 -sU -oN udp-scan 10.10.102.75

Có vẻ như tất cả các ports UDP đều đã bị tường lửa chặn. Chúng ta sẽ chuyển sang Nmap scan cuối cùng.
Scan services’ version, hệ điều hành và chạy scripts tìm lỗi trên máy mục tiêu:
sudo nmap -vv -p 22,80 -Pn -T4 -sC -sV -O -oN script-scan 10.10.102.75
Sau khoản 20 phút, chúng ta có được kết quả như sau

Đúng như chúng ta đã dự đoán, mục tiêu cần tấn công hiện đang chạy dịch vụ SSH ở port 22 và Apache webserver ở port 80. Chúng ta cũng biết được mục tiêu chạy hệ điều hành Ubuntu.
1C – HTTP webservice
Sau khi đăng nhập vào port 80 của mục tiêu, chúng ta có được giao diện web như sau:

Đây là trang mặc định của Apache web service, cho biết Apache service đang hoạt động bình thường.
Chúng ta sẽ tiến hành chạy Gobuster để tìm file và directory ẩn, và trong lúc Gobuster đang chạy chúng ta cũng sẽ xem qua front end source code của trang mặc định để xem có đoạn comment nào bị bỏ lại hay không.
1C-1 – Gobuster
Chúng ta sẽ dùng lại wordlist đã từng dùng khi tất công server Pickle Rick và RootMe, bạn nào chưa có thì xin download tại đây nhé:
gobuster dir -u 10.10.102.75 -w common-web-content.txt

Dựa vào kết quả của Gobuster, chúng ta thấy có một directory tên secret. Khi đăng nhập vào directory này bằng firefox, chúng ta nhận được kết quả như sau:

Một trang trắng hoàn toàn. Không có bất cứ nội dung nào. Kiểm tra source code cũng không thấy bất cứ nội dung nào.

Mình nghĩ có thể bên trong directory secret có thể chứa file hay directory ẩn, để chắc ăn, mình quyết định chạy Gobuster bên trong directory secret. Câu lệnh của chúng ta lần này sẽ là:
gobuster dir -u 10.10.102.75/secret/ -w common-web-content.txt -x py,txt,sh
Mình sẽ chọn một vài extension file thường hay gặp trên Linux webserver như .py, .txt, và .sh để chạy thử xem sao nhé.

Kết quả quét Gobuster bên trong directory secret cho thấy, bên trong có chứa 1 text file khả nghi:
- secret.txt
Truy cập vào file secret.txt trên Firefox, chúng ta được kết quả như sau:

Có vẻ như đây là username và password dùng để đăng nhập vào hệ thống. Chúng ta đã quét Gobuster 2 lần và không tìm thấy bất kỳ trang đăng nhập nào cả. Nên mình đoán có thể đây là username và password dùng để đăng nhập vào SSH.
1C-2: Kiểm tra source code
Khi kiểm tra front-end source code của page mặc định Apache bằng tổ hợp phím CTRL + U, đọc sơ qua mình cũng không thấy có thông tin gì đặc biệt. Nên sẽ bỏ qua phần source code của trang mặc định.

2 – Exploiting vulnerabilities (Tiến hành xâm nhập)
Chúng ta sẽ sử dụng thử username và password đã tìm được ở bên trong file secret.txt để đăng nhập thử vào dịch vụ SSH trên máy mục tiêu xem sao nhé.
ssh nyan@10.10.102.75
Mình đã thử 2 lần và đều được báo là password sai.

Mình đoán có thể password trong file secret.txt đã bị hashed. Sau khi cho chạy kiểm tra trên Hash Analyzer, mình có được kết quả sau:

Mình sử dụng crack station để crack SHA1 hash

Và có được password của username nyan.
Giờ chúng ta thử đăng nhập lại vào SSH xem sao nhé.

Với password vừa crack xong, chúng ta đã SSH thành công vào account nyan và giành được quyền kiểm soát từ xa hệ thống mục tiêu thông qua giao thức SSH.
3 – Privileges escalation (Leo thang đặc quyền)
Chúng ta dùng lệnh ls để kiểm tra HOME directory của username nyan. Chúng ta đã tìm được flag đầu tiên.

Vì chúng ta có cả password của username nyan, nên chúng ta sẽ thử dùng lệnh sudo -l để kiểm tra xem nyan có được phép dùng lệnh sudo hay có những sudo rights gì nhé.

Theo kết quả trả về, chúng ta có thể sử dụng câu lệnh /bin/su với phân quyền của root và không cần cung cấp password.
Như vậy chúng ta chỉ cần gõ câu lệnh sau:
sudo /bin/su
Là đã có thể leo thang lên root thành công. Sudo /bin/su tương đương như câu lệnh sudo su mà chúng ta đã học ở series Linux Căn Bản (xem lại mục 3a nếu bạn quên) nhé.

Vậy là chúng ta đã nắm toàn quyền kiểm soát hệ thống mục tiêu cần tấn công. Việc cuối cùng là chúng ta sẽ vào HOME directory của root để lấy flag cuối cùng thôi.

4 – Thử thách dành cho các bạn
1 – Dùng Hashcat và Johntheripper để crack đoạn hash SHA1 được tìm thấy bên trong file secret.txt.
2 – Nâng cấp shell điều khiển hệ thống lên Meterpreter shell bằng cách sử dụng Metasploit.
Cám ơn các bạn đã theo dõi và chúc các bạn thực hành thành công,
Vincent Nguyễn