Ducker

Trở về

SkynetBlur image

Thu thập thông tin#

Nmap scan#

Kết quả scan từ nmap mình thu được các thông tin như sau:

Website#

Truy cập vào website mục tiêu thì ở trang chủ không có gì đặc biệt, giao diện không thực hiện được chức năng gì.

img

Samba#

Mình kiểm tra dịch vụ Samba có thư mục anonymous có thể truy cập được và bên trong có file attention.txt và thư mục logs.

img

Bên trong file attention.txt có nội dung như sau:

Một sự cố hệ thống gần đây đã khiến nhiều mật khẩu bị thay đổi. Tất cả nhân viên Skynet được yêu cầu đổi mật khẩu sau khi thấy thông báo này.

– Miles Dyson

Tại thư mục logs có 3 file log1.txt, log2.txt, log3.txt.

Trong đó, log2.txtlog3.txt là file trống. Còn log1.txt có nội dung như sau:

Nhìn vào danh sách này thì mình suy đoán khả năng là mật khẩu.

Gobuster scan#

Sử dụng công cụ gobuster để scan thư mục, mình tìm thấy một số thông tin như sau:

/admin                (Status: 301) [Size: 312] [--> http://10.201.47.98/admin/]
/css                  (Status: 301) [Size: 310] [--> http://10.201.47.98/css/]
/js                   (Status: 301) [Size: 309] [--> http://10.201.47.98/js/]
/config               (Status: 301) [Size: 313] [--> http://10.201.47.98/config/]
/ai                   (Status: 301) [Size: 309] [--> http://10.201.47.98/ai/]
/squirrelmail         (Status: 301) [Size: 319] [--> http://10.201.47.98/squirrelmail/]
bash

Trong đó, tất cả đều trả về mã 403 (Không có quyền truy cập) nhưng chỉ có /squirrelmail truy cập được.

img

Từ các thông tin thu thập được, mình đã thử sử dụng username milesdyson là tên thư mục share lúc đầu tìm được và kết hợp với mật khẩu trong file log1.txt để brute force trang đăng nhập vào SquirrelMail.

img

Khi đăng nhập vào, mình phát hiện một mail phản hồi về khi người dùng này yêu cầu reset mật khẩu dịch vụ SMB.

img

Sử dụng thông tin đăng nhập này đăng nhập vào thư mục share milesdyson lúc đầu, bên trong là một số file PDF và thư mục notes.

img

Và trong thư mục notes có một đống file khác…

Nhưng đương nhiên, cái gì quan trọng thì mình ưu tiên.

img

Nội dung bên trong như sau:

1. Add features to beta CMS /45kra24xxx28v3yd
2. Work on T-800 Model 101 blueprints
3. Spend more time with my wife
plaintext

Truy cập vào đường dẫn như file ghi, mình được chuyển tới trang như sau.

img

Tiếp tục sử dụng gobuster scan tiếp xem bên trong có gì, thì mình phát hiện trang /administrator.

/administrator        (Status: 301) [Size: 341] [--> http://10.201.47.98/45kra24xxx28v3yd/administrator/]
bash

Truy cập vào đường dẫn này, mình được chuyển tới một trang đăng nhập cho administrator.

img

Flag 1#

Lỗ hổng Remote File Inclusion#

Tìm trên ExploitDB thì nền tảng CMS này từng có một lỗ hổng Remote File Inclusion.

img

Lỗ hổng này được giải thích như sau:

Một kẻ tấn công có thể bao gồm (include) các file PHP cục bộ hoặc từ xa, hoặc đọc các file không phải PHP bằng lỗ hổng này. Dữ liệu do người dùng kiểm soát được dùng để tạo tên file sẽ được include vào file hiện tại. Mã PHP trong file đó sẽ được thực thi, mã không phải PHP sẽ được nhúng vào đầu ra. Lỗ hổng này có thể dẫn tới chiếm toàn bộ server.

Nói đơn giản thì máy mục tiêu sẽ lấy file PHP mà mình host và thực thi nó.

Truy cập www-data và flag#

Lỗ hổng này khai thác từ URL http://target/cuppa/alerts/alertConfigField.php?urlConfig=.

Phía sau đó sẽ là Remote file hoặc Local file.

Tại đây, mình host một HTTP Server chứa file PHP độc hại với mục đích mở một reverse shell và thực thi lệnh sau để gửi request đến serser (Hoặc cũng có thể thao tác trên browser):

img

Khi request được gửi, tại listener netcat mình mở sẽ nhận được kết nối ngược lại, mình có quyền truy cập vào www-data và tìm thấy flag tại thư mục /home của người dùng milesdyson.

img

Flag 2#

Cấu hình sai ở dịch vụ crontab#

Sau một lúc kiểm tra thì mình tìm thấy dịch vụ crontab đang thực thi một file backup.sh dưới quyền root mỗi phút một lần.

Đây là một lỗ hổng giúp mình leo thang đặc quyền.

img

Đối với file này, mình không có quyền ghi nên không thể ghi vào file này để leo thang đặc quyền được.

img

Nhưng có một điều mà người quản lý server này làm rất ẩu, cụ thể file backup.sh có nội dung như sau:

#!/bin/bash
cd /var/www/html
tar cf /home/milesdyson/backups/backup.tgz *
bash

File này có nhiệm vụ di chuyển sang thư mục /var/www/html, sau đó thực thi lệnh tar để nén tất cả mọi thứ trong này lại thành file backup.tgz.

Vấn đề nằm ở dấu * - có nghĩa là tất cả, mình có thể lợi dụng nó để thực thi file mà mình tạo với mục đích …

Khi tar bắt đầu thực thi, nếu trong thư mục thực thi (ở đây là /var/www/html) tồn tại file có tên chứa -- thì nó sẽ coi như đây là một option thay vì một file.

Truy cập người dùng root và flag#

Lợi dụng lỗ hổng này, mình tạo một file reverse shell về listener netcat mình đang mở và tạo 2 file chứa -- với mục đích thực thi file rev-shell.sh.

img

Đợi crontab thực thi, mình sẽ có được quyền truy cập vào người dùng root và tìm thấy flag tại thư mục /root.

img