Wget script dan jalankan


Jawaban:


51

Cermat

Sebelum menjalankan skrip, apakah Anda mempercayai orang yang menulisnya?

Misalnya, apakah Anda mengharapkan skrip berisi ini?

echo "brain1" > /etc/hostname

Itu akan mencoba mengubah nama host Anda.


Untuk referensi di masa mendatang, jika, setelah memverifikasi skrip itu benar dan tidak berbahaya, Anda dapat menjalankannya dalam satu baris seperti ini:

wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash

Tetapi unduh secara terpisah dan bacalah sebelum menjalankannya pertama kali.

Perhatikan juga bahwa petunjuk interaktif di dalam skrip yang diunduh mungkin tidak berfungsi dengan baik menggunakan metode ini.


9
+1 untuk menunjukkan masalah keamanan (penting) dengan ini. Pastikan Anda mempercayai sumbernya. Itu echo "brain1" > /etc/hostnamebisa saja dengan mudah rm -rf /.
Christopher Cashell

2
+1 Terima kasih teman-teman, skrip itu dari saya, aman .. Suka one-liner, tapi, ada beberapa baris interaktif yang tidak berjalan .. tidak tahu kenapa?
Fabiano Soriani

1
apt-get installGaris Anda ? Jika apt-getakan menginstal dependensi tambahan, ia akan bertanya kepada Anda, dan jika tidak bisa, ia akan keluar dengan aman. Tambahkan semua paket dependen ke argumen baris perintah, atau pertimbangkan untuk menambahkan -y, misalnyaapt-get -y install...
Mikel

masalah ini tidak terkait dengan dependensi, itu ada hubungannya dengan apt flushing stdin.
Zoredache

1
Anda sebenarnya tidak dapat mempercayai sumbernya meskipun Anda memang "mempercayai sumbernya" karena manusia di tengah serangan. Yang mengatakan, url pribadi acak dengan skrip bash harus menjadi vektor serangan yang cukup sempit sehingga tak seorang pun dengan kemampuan untuk menariknya cukup peduli untuk melakukannya.
SpamapS

9

Skrip Non-Interaktif

wget -O - http://website.com/my-script.sh | bash

Perhatikan bahwa saat menggunakan metode ini, skrip interaktif tidak akan berfungsi.


Script Interaktif

Agar skrip interaktif berfungsi, Anda dapat menggunakan ini:

bash <(wget -qO- http://website.com/my-script.sh)

Script Interaktif yang perlu dijalankan sebagai root

Peringatan: Ini sangat berbahaya. Tidak direkomendasikan.

sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root

Perhatikan bahwa Anda tidak dapat menggunakan sederhana sudo bashkarena menggunakan <(...)akan membuat file virtual dan deskriptor file itu tidak akan dapat diakses dari instance root bash. Itu harus dijalankan pada pengguna yang sama yang perlu membaca file virtual, jadi itu harus dikirim sebagai perintah itu sendiri di dalam shell pengguna root.


1
Ini jawaban terbaik. Ini mencakup aspek-aspek penting dari eksekusi interaktif vs non-interaktif vs istimewa.
Leonid Makarov

5

Script itu dari saya, aman .. Suka one-liner, tapi, ada beberapa baris interaktif yang tidak berjalan .. Entah kenapa?

Ketika dpkg berjalan, dipanggil oleh apt-get, ia mem-flush stdin. Jika Anda menggunakan perintah seperti curl blah | bash, maka pada dasarnya Anda mengirim konten halaman untuk di-bash melalui STDIN. Jika salah satu perintah Anda tepat, lalu jalankan, yang lainnya akan memerah.

Caranya adalah dengan menggunakan perintah seperti ini apt-get install --yes denyhosts </dev/null. Ini memberi apt-get input yang berbeda, dan itu hanya mem-flush / dev / null alih-alih sisa skrip Anda.

Jika Anda ingin melihat contoh lengkap menginstal sesuatu melalui skrip jarak jauh, Anda mungkin ingin melihat skrip ini untuk menyiapkan denyhosts

Sebagai catatan, saya lebih suka meringkuk daripada wget untuk ini, tetapi wget juga harus baik-baik saja.


Saya Mencoba dengan skrip dummy dengan beberapa interaktif, itu berhasil Bung .. Saya tidak mendapatkannya xD dl.dropbox.com/u/11210438/lala.sh
Fabiano Soriani

4
#!/bin/sh
if [ ! -f "/tmp/flockonus-stack.sh" ]
then
    wget -O /tmp/flockonus-stack.sh http://dl.dropbox.com/u/11210438/flockonus-stack.sh
fi

sh /tmp/flockonus-stack.sh

4

Semua contoh ini kehilangan poin yang cukup penting. Jika Anda menggunakan url http://dl.dropbox.com/u/11210438/flockonus-stack.sh, Anda perlu mengaudit skrip setiap kali Anda mengunduhnya, karena itu dapat dimodifikasi oleh siapa saja di jalur jaringan antara Anda dan dropbox. Jika Anda beralih ke http s : //dl.dropbox.com/u/11210438/flockonus-stack.sh , Anda tidak akan memiliki sumber rasa tidak aman itu.

(Dropbox mencoba mengalihkan URL http ke https, tetapi dalam kasus serangan jaringan, wget tidak akan pernah bisa berbicara dengan dropbox asli, dan tidak akan pernah melihat pengalihan)


2
Ini mungkin lebih baik dibiarkan sebagai komentar pada pertanyaan, bukan jawaban, karena tidak tepat menjawab pertanyaan. Masih layak untuk ditunjukkan!
Bill Weiss

2

Coba unduh saja seperti yang Anda tentukan dengan wget dan kemudian jalankan secara langsung. Anda bisa mendapatkan mewah dan menggunakan variabel untuk skrip yang ingin Anda unduh dll, tetapi ini akan membantu

Sebagai contoh:

!#/bin/bash

#Change to temp directory
cd /tmp

#Download file using wget
wget http://dl.dropbox.com/u/11210438/flockonus-stack.sh

#Execute the file

sh flockonus-stack.sh

Bagaimana saya memberi tahu sistem saya untuk benar-benar melakukan ini pada saat startup?
Metallkiller
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.