Hak eskalasi penulisan / etc / passwd tetapi tanpa izin SUID pada su
Ini bukan latihan, mungkin tidak ada solusi.
Kami memproduksi image Docker (berdasarkan CentOS) yang dirancang untuk dijalankan oleh pengguna non-root. Namun, pengguna ini memiliki akses tulis ke / etc / passwd karena dia berada di grup "root". Berikut adalah izin / etc / passwd:
-rw-rw-r-- 1 root root 692 Dec 16 14:35 /etc/passwd
Ini adalah kelemahan kritis dan seharusnya memungkinkan eskalasi hak istimewa yang mudah. Saya dapat menambahkan pengguna ke / etc / passwd.
Tetapi saya tidak dapat beralih ke pengguna ini, karena su tidak memiliki izin SUID:
-rwxr-xr-x 1 root root 32128 Sep 30 17:46 /bin/su
Akibatnya, pengguna tidak memiliki cukup izin untuk eksekusi su yang berhasil:
su: cannot set groups: Operation not permitted
Seperti yang saya pahami, di kebanyakan Linux, perintah su dikonfigurasi dengan izin SUID. Artinya siapa pun yang menjalankan su, itu dianggap dijalankan oleh pengguna root. Alternatif lain mungkin bermain dengan kemampuan. Saya kira CAP_SETGID dan CAP_SETUID diperlukan dan mungkin beberapa lainnya. Jika su dikonfigurasi dengan kemampuan tersebut, izin SUID mungkin tidak diperlukan. Tapi di image Docker kami, tidak ada kapabilitas di su. Jadi sepertinya hanya root yang dapat mengeksekusi su dengan benar.
Juga, sudo tidak diinstal dan tidak ada sshd / telnetd yang berjalan.
Jadi bagaimana saya bisa menggunakan kredensial yang ditambahkan ke / etc / passwd? Curl tersedia jika itu bisa membantu.
Jawaban
Pada host Linux standar (VM atau server) jika Anda memiliki akses ke /etc/passwd
atau /etc/shadow
kemudian Anda dapat mengubah atau menambahkan kredensial ke akun, yang jelas akan menjadi masalah serius (ada detail tentang konsekuensi mengizinkan modifikasi /etc/passwd
dalam jawaban ini
Dalam wadah Docker, biasanya perangkat lunak yang menggunakan file-file ini tidak diinstal, jadi tidak ada PAM Linux, tidak ada SSHD, atau perangkat lunak lain yang akan menggunakan database otentikasi.
Tanpa jenis perangkat lunak yang diinstal, tidak banyak yang dapat Anda lakukan, karena tidak ada program yang beroperasi pada file tersebut.
Tentu saja, jika aplikasi yang berjalan di penampung memanfaatkannya, /etc/passwd
maka memodifikasinya dapat berdampak, tetapi itu akan bersifat situasional tergantung pada apa yang dilakukan penampung.