Ducker

Trở về

KenobiBlur image

Thu thập thông tin Samba#

img

Samba được biết với sự linh hoạt về việc truy cập file giữa các hệ điều hành và còn được gọi là file system. Nó cho phép người dùng cuối truy cập, sử dụng các file và các tài nguyên chung được sử dụng trong mạng nội bộ hoặc internet.

Samba được xây dựng trên giao thức client/server của SMB - Server Message Block. Nó chỉ được phát triển dành cho Windows, nếu không có Samba thì các nền tảng máy tính khác sẽ không thể truy cập dù cùng một mạng.


Đầu tiên, mình cần thu thập thông tin về mục tiêu có IP 10.10.78.65.

Mình tìm được 7 cổng đang mở, trong đó có SMB.

PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
2049/tcp open  nfs
bash

Sau đó, mình sửa dụng lệnh smbclient -L để thực hiện hiển thị các thư mục được share thì tìm được thư mục anonymous.

img

Kết nối vào thư mục anonymous và tìm thấy file log.txt.

img

Bên trong file log này chứa một số thông tin như:

  • SSH key được tạo ra cho người dùng Kenobi
  • ProFTPD server.

Trước đó trong kết quả scan, mình có scan ra port 111 chạy dịch vụ rpcbind.

Trong trường hợp này, port 111 truy cập vào file system.

Sử dụng lệnh nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.168.6 mình tìm được thư mục var.

PORT    STATE SERVICE
111/tcp open  rpcbind
| nfs-showmount: 
|_  /var *
shell

Chiếm quyền truy cập ban đầu với ProFtpd#

img

ProFTPD là một FTP server mã nguồn mở và miễn phí, tương thích với hệ thống Unix và Windows. Trong quá khứ nó cũng có một số phiên bản tồn tại lỗ hổng.

Mình dùng lệnh nmap -p 21 -n -Pn -sV 10.10.168.6 để xem thông tin phiên bản của ProFTPD thì đây là phiên bản 1.3.5.

PORT   STATE SERVICE VERSION
21/tcp open  ftp     ProFTPD 1.3.5
shell

Tìm trên ExploitDB, phiên bản này tồn tại một lỗ hổng dẫn tới kiểm soát quyền truy cập.

PoC sử dụng **CPFR (Copy from) **và **CPTO (Copy to) để **thao tác copy paste một file từ chỗ này sang khác bên trong FTP server.

Từ các thông tin thu thập được:

  • File log.txt => biết được SSH key của người dùng Kenobi nằm tại /home/kenobi/.ssh/id_rsa.
  • Thư mục /var mình có thể truy cập từ mạng.

Quy trình tấn công có thể hình dung như sau:

  • Dùng CPFR, CPTO copy key SSH của Kenobi vào thư mục /var.
  • Mount thư mục /var để có thể lấy SSH key về.
  • Có SSH key thì SSH vào Kenobi => lấy quyền truy cập thành công.

Đầu tiên, mình thực hiện kết nối và copy file ra /var:

img

Tiếp theo, mount thư mục /var.

img

Cuối cùng, copy SSH key ra máy tấn công và thực hiện SSH vào Kenobi.

img

Khi SSH thành công, flag sẽ nằm tại thư mục home của Kenobi.

img

Leo thang đặc quyền với biến môi trường#

img

QuyềnTrên các fileTrên các thư mục
SUID BitNgười dùng thực thi file với quyền của chủ sở hữu file-
SGID BitNgười dùng thực thi file với quyền của chủ sở hữu nhómFile tạo trong thư mục này sẽ có cùng chủ sở hữu nhóm
Sticky Bit-Chỉ chủ sở hữu hoặc root mới được xóa file bên trong

SUID Bit rất nguy hiểm, nếu một file nhị phân tồn tại SUID Bit nó sẽ có khả năng chạy với đặc quyền cao hơn.

Tại người dùng Kenobi, mình tìm các file có SUID Bit bằng cách thực thi lệnh:

find / -perm -u=s -type f 2>/dev/null
shell

Và tại đây mình thấy một file nhị phân có thể sử dụng để leo thang đặc quyền.

img

Thực thi file này thử, thì mình xác định được đây là một file do Kenobi tạo ra.

img

Mình dùng lệnh strings để trích xuất các chuỗi bên trong file nhị phân này thì có 3 lệnh ứng với 3 option.

img

Mình nhận ra các lệnh này được chạy mà không bao gồm đường dẫn, khi gọi lệnh thì máy sẽ thực thi thông qua biến môi trường.

Từ đó, mình tạo một file thực thi giả curl, bên trong thực thi gọi một shell /bin/sh và cấp quyền cho file này (Đọc - Ghi - Thực thi).

Vì mình tạo file này tại thư mục /tmp nên mình xuất biến môi trường tại đây.

img

Khi thực thi file /usr/bin/menu và với tùy chọn 1, máy này sẽ thực thi curl nhưng sẽ là curl giả và thực thi /bin/sh với quyền root.

Sau khi chiếm được quyền truy cập vào root, flag sẽ nằm tại thư mục /root.

img