Pertanyaan Bagaimana cara menguji apakah server saya rentan terhadap bug ShellShock?


Bagaimana saya bisa memastikan instalasi Bash saya tidak rentan terhadap ShellShock bug lagi setelah pembaruan?


77
2017-09-25 14:25




Lihat Apakah ada perintah singkat untuk menguji apakah server saya aman terhadap bug bash shellshock? - Martin Schröder
Harap dicatat ada dua kerentanan lainnya di bash masih belum dicap (CVE-2014-7186 dan CVE-2014-7187). - Deer Hunter
Patch yang memperbaiki CVE-2014-7186 dan CVE-2014-7187 tersedia tidak lama setelah Deer Hunter memposting komentarnya. Jika Anda memiliki patch disediakan distro untuk CVE-2014-7169 Anda mungkin sudah memiliki cukup untuk memblokir 7186/7187, uji sistem Anda dengan perintah di bawah dan lihat. Periksa juga pembaruan keamanan apa pun untuk distro Anda. - BeowulfNode42


Jawaban:


Untuk memeriksa kerentanan CVE-2014-6271

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

TIDAK harus menggemakan kembali kata yang rentan.


Untuk memeriksa kerentanan CVE-2014-7169
(peringatan: jika Anda gagal itu akan membuat atau menimpa file yang disebut /tmp/echo yang dapat Anda hapus setelahnya, dan perlu dihapus sebelum pengujian lagi)

cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo

itu harus mengatakan tanggal kata kemudian mengeluh dengan pesan seperti cat: echo: No such file or directory. Jika sebaliknya memberitahu Anda apa yang saat ini datetime maka sistem Anda rentan.


Untuk memeriksa CVE-2014-7186

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"

seharusnya TIDAK menggemakan kembali teks CVE-2014-7186 vulnerable, redir_stack.


Untuk memeriksa CVE-2014-7187

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"

seharusnya TIDAK menggemakan kembali teks CVE-2014-7187 vulnerable, word_lineno.


Untuk memeriksa CVE-2014-6277. Saya tidak yakin 100% untuk yang satu ini karena tampaknya bergantung pada sistem yang sebagian ditambal yang tidak dapat saya akses lagi.

env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"

Hasil pass pada yang satu ini HANYA menggemakan kembali teks testing CVE-2014-6277. Jika menjalankan perl atau jika ia mengeluh bahwa perl tidak dipasang maka pasti gagal. Saya tidak yakin pada karakteristik kegagalan lainnya karena saya tidak lagi memiliki sistem unpatched.


Untuk memeriksa CVE-2014-6278. Sekali lagi, saya tidak yakin 100% jika tes ini karena saya tidak lagi memiliki sistem unpatched.

env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"

Sebuah lulus untuk tes ini adalah bahwa itu HANYA echo kembali teks testing CVE-2014-6278. Jika Anda menggemakan kembali hi mom di mana saja yang pasti gagal.


83
2017-09-26 07:49



Bisakah kita menambahkan tes umum foo='() { echo not patched; }' bash -c foo untuk ini? Hingga ekspor fungsi dimasukkan ke ruang nama yang terpisah, kami tidak akan berhenti berjalan dari satu bug parser ke bug berikutnya. - billyw
Apakah tes itu memiliki CVE? Apakah Anda memiliki referensi untuk menjelaskan masalah ini? Juga informasi semacam ini mungkin milik salah satu pertanyaan lain tentang shellshock karena Q ini adalah tentang bagaimana menguji keberhasilan atau kegagalan patch yang ada. - BeowulfNode42
Itu dari posting blog Michal Zalewski pada beberapa Shellshock CVE yang akan datang (lcamtuf.blogspot.com/2014/09/…). Ini adalah tes yang disarankan untuk CVE-2014-6278, yang masih tidak umum. Sepertinya saya salah tentang generalitas tes itu; Saya sudah menemukan kasus di mana tes Zalewski lulus tetapi tes CVE-2014-7187 gagal. - billyw
Dan di sini adalah pengungkapan penuh pada CVE-2014-6277 dan CVE-2014-6278, bersama dengan perintah untuk memeriksanya: seclists.org/fulldisclosure/2014/Oct/9 - billyw
Satu titik catatan: bahkan jika versi BASH rentan, jika tidak ada yang menggunakannya (yaitu semua akun yang digunakan oleh daemon, seperti "www" atau "cangkir" atau apa pun) dikonfigurasi dengan BASH sebagai shell default mereka, dan tidak ada sistem panggilan kode Anda () atau sejenisnya, memiliki versi rentan mungkin kurang berisiko, tetapi tetap, tingkatkan versi BASH sesegera mungkin. - DTK


Ekspor variabel lingkungan yang dirancang khusus yang akan dievaluasi secara otomatis oleh versi rentan Bash:

$ export testbug='() { :;}; echo VULNERABLE'

Sekarang jalankan gema sederhana untuk melihat apakah Bash akan mengevaluasi kode dalam $ testbug meskipun Anda belum menggunakan variabel itu sendiri:

$ bash -c "echo Hello"
VULNERABLE
Hello

Jika itu menunjukkan string "VULNERABLE", jawabannya sudah jelas. Jika tidak, Anda tidak perlu khawatir dan versi Bash Anda yang ditambal adalah OK.

Harap dicatat beberapa patch telah dirilis oleh distribusi Linux utama dan terkadang mereka tidak memperbaiki kerentanan sepenuhnya. Terus periksa penasehat keamanan dan Entri CVE untuk bug ini.


32
2017-09-25 14:25



Selain CVE-2014-6271, perbaikan tidak lengkap dari Red Hat khususnya memiliki miliknya sendiri yang juga layak diikuti: CVE-2014-7169. - DocMax
Satu-liner yang tidak mencemari env shell Anda dan terjadi untuk bekerja bahkan jika 'Anda menggunakan shell login alternatif (yang mungkin tidak tahu tentang export): env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello" - Lloeki
Ada beberapa detail spesifik Ubuntu di sini askubuntu.com/questions/528101/… - Secara pribadi saya harus meng-upgrade dari Ubuntu 13.10 ke 14.04 untuk memperbaiki masalah ini - dodgy_coder


ShellShock secara praktis gabungan dari lebih dari satu kerentanan bash, dan pada saat ini ada juga malaware yang mengeksploitasi kerentanan ini, jadi ShellShock bisa menjadi masalah yang masih terbuka, ada a utas dengan pembaruan dari RedHat tentang masalah ini.

Redhat menganjurkan hal-hal berikut: 

Jalankan perintah:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

Jika output adalah:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

Anda tidak memiliki perbaikan apa pun.

Jika output adalah:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test

kamu punya CVE-2014-6271 memperbaiki

Jika output Anda adalah:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

kamu tidak rentan.

Bagian lain dari pemeriksaan ShellShock adalah pemeriksaan kerentanan CVE-2014-7169 memastikan bahwa sistem dilindungi dari masalah pembuatan file. Untuk menguji apakah versi Anda dari Bash rentan terhadap CVE-2014-7169, jalankan perintah berikut:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014

Jika sistem Anda rentan, waktu dan tanggal akan ditampilkan dan / tmp / echo akan dibuat.

Jika sistem Anda tidak rentan, Anda akan melihat output yang serupa dengan:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory

2
2017-09-29 14:43





Saya menulis utilitas CLI yang disebut ShellShocker untuk menguji server web Anda untuk kerentanan pada skrip CGI. Untuk menguji situs Anda, Anda akan menjalankan:

python shellshocker.py <your-server-address>/<cgi-script-path>

yaitu

python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi

EDIT: utilitas ini telah dihapus, maaf: '(


2
2017-09-26 17:24



Tautan Anda mati - SSK
@SSK Maaf;) Mistipe. - Liam Marshall
Tautan Anda masih mati. - Mxx
Ya, maaf, saya mengambilnya. Itu dieksploitasi dengan cara yang tidak saya sukai. - Liam Marshall


Anda dapat mengirimkan URL CGI Anda ke tes online ini:

http://shellshock.iecra.org


1
2017-09-25 20:46



Ini sopan untuk memberikan alasan untuk downvote. - David
"Kami mencatat semua pindaian" ??? Menyeramkan. Saya akan mengunduh python dan menjalankannya sendiri. - Brad
@ brad setidaknya mereka memberi tahu Anda. Saya yakin bahwa jika saya menyediakan layanan keamanan whitehat yang menawarkan layanan ini, saya mungkin menyimpan log (jika hanya counter tanpa detail perorangan) berapa banyak orang yang secara membabi buta memasukkan detail situs mereka ke situs web yang mengatakan akan untuk mencoba tes penetrasi, tanpa mengetahui banyak tentang keaslian situs yang menawarkan tes ... dan mereka ingin log yang menguji apa jika seseorang menggunakan layanan mereka untuk menemukan situs rentan milik orang lain, juga ... - Rob Moir


ketik env x = '() {:;}; echo rentan 'bash -c "echo ini adalah tes" dan jika ini kembali rentan dan ini adalah tes itu berarti bahwa mesin OSX / Linux Anda terpengaruh. Remedy adalah memperbarui ke versi bash terbaru.


-1
2017-09-27 11:33



Mengapa sebagai root? Benar-benar tidak perlu. - Mat