Soru Sunucumun ShellShock hatasına karşı hassas olup olmadığını nasıl test edebilirim?


Bash kurulumumun güvenlik açığından etkilenmemesini nasıl sağlayabilirim ShellShock Güncellemelerden sonra artık hata var mı?


77
2017-09-25 14:25


Menşei


Görmek Sunucumun shellshock bash hatasına karşı güvenli olup olmadığını sınamak için kısa bir komut var mı? - Martin Schröder
Bash'ta hala iki farklı güvenlik açığı bulunduğunu lütfen unutmayın (CVE-2014-7186 ve CVE-2014-7187). - Deer Hunter
CVE-2014-7186 ve CVE-2014-7187'yi düzelten yamalar, Deer Hunter'ın yorumunu yayınladıktan sonra mümkün olmadığı sürece kullanılabilir. CVE-2014-7169 için uygun bir yama varsa, zaten 7186/7187'yi engelleyebilir, aşağıdaki komutları kullanarak sisteminizi test edebilir ve görebilirsiniz. Ayrıca dağıtımınız için daha fazla güvenlik güncellemesi olup olmadığını kontrol edin. - BeowulfNode42


Cevaplar:


CVE-2014-6271 güvenlik açığını denetlemek için

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

savunmasız kelimeyi tekrar ETMEMELİDİR.


CVE-2014-7169 savunmasızlığını kontrol etmek için
(uyarı: eğer başarısız olursa, bir dosya oluşturacak veya üzerine yazacaktır. /tmp/echo Sonra silip tekrar test etmeden önce silmeniz gerekir.)

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

kelime tarihini söylemeli ve sonra cat: echo: No such file or directory. Bunun yerine, geçerli tarihin ne olduğunu size söylerse, sisteminiz savunmasızdır.


CVE-2014-7186'yı kontrol etmek için

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

metni tekrar ETMEMELİDİR CVE-2014-7186 vulnerable, redir_stack.


CVE-2014-7187'yi kontrol etmek için

(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"

metni tekrar ETMEMELİDİR CVE-2014-7187 vulnerable, word_lineno.


CVE-2014-6277'yi kontrol etmek için. Artık% 100 emin değilim, çünkü artık erişemediğim kısmi yamalı bir sisteme güveniyor gibi görünüyor.

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

Bunun bir geçiş sonucu sadece SADECE metin yankılanıyor testing CVE-2014-6277. Perl çalışırsa veya perl'in kurulmadığından şikayet ederse, kesinlikle başarısız olur. Artık herhangi bir sisteme sahip olmadığım için diğer hata özelliklerinden emin değilim.


CVE-2014-6278'i kontrol etmek için. Yine, bu testin artık herhangi bir kayıtlı sisteme sahip olmadığına dair% 100 emin değilim.

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

Bu sınama için bir geçiş, SADECE metni tekrarlamasının gerekmesidir. testing CVE-2014-6278. Seninki geri yankılanıyorsa hi mom her yerde kesinlikle bir başarısızlık.


83
2017-09-26 07:49



Genel testi ekleyebilir miyiz? foo='() { echo not patched; }' bash -c foo buna? İşlev ihracı ayrı bir ad alanına yerleştirilinceye kadar, bir ayrıştırıcı hatadan diğerine geçmeyi durdurmayacağız. - billyw
Bu testte bir CVE var mı? Bu sorunu açıklayan herhangi bir referansınız var mı? Ayrıca bu bilgi, bu Q'nun varolan yamalardaki başarı ya da başarısızlıkların nasıl test edileceğine bağlı olarak, shellshock hakkındaki diğer sorulardan birine ait olabilir. - BeowulfNode42
Bu, Michal Zalewski'nin gelecek olan Shellshock CVE'ların blog yazısıydı.lcamtuf.blogspot.com/2014/09/...). Hala kamuya açık olmayan CVE-2014-6278 için önerilen sınavı. Yine de testin genelliği konusunda yanılmışım gibi görünüyor; Zalewski'nin testinin geçtiği ancak CVE-2014-7187 testinin başarısız olduğu bir dava ile karşılaştım. - billyw
Ve işte CVE-2014-6277 ve CVE-2014-6278 ile ilgili tam açıklama, bunlarla ilgili kontrol komutları. seclists.org/fulldisclosure/2014/Oct/9 - billyw
Bir nokta: BASH'in sürümü savunmasız olsa bile, hiçbir şey onu kullanmıyorsa (yani, "www" veya "cup" gibi herhangi bir şekilde, ya da her neyse) BASH tarafından varsayılan kabuk olarak yapılandırılmışsa, Kodlarınız sistem () veya benzerlerini çağırır, güvenlik açığından etkilenen sürümün daha az riskli olmasına rağmen, BASH'ı mümkün olan en kısa sürede yükseltin. - DTK


Bash'in savunmasız sürümleri tarafından otomatik olarak değerlendirilecek, özellikle hazırlanmış bir ortam değişkenini dışa aktarın:

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

Şimdi bu değişkeni kendiniz kullanmadığınız halde Bash'in $ testbug içinde kodu değerlendirip değerlendirmeyeceğini görmek için basit bir yankı yapın:

$ bash -c "echo Hello"
VULNERABLE
Hello

"VULNERABLE" dizesini gösterirse, cevap açıktır. Aksi takdirde, endişelenmenize gerek yok ve Bash'in yama sürümü tamam.

Önemli Linux dağıtımları tarafından birden çok yama yayıldığını ve bazen de bu güvenlik açığını tamamen gidermediklerini lütfen unutmayın. Güvenlik tavsiyelerini kontrol etmeye devam edin CVE girişi bu böcek için.


32
2017-09-25 14:25



CVE-2014-6271'e ek olarak, özellikle Red Hat'tan eksik olan düzeltmenin de kendine ait olanı vardır: CVE-2014-7169. - DocMax
Kabuğunuzu kirletmeyen ve sizin bir alternatif giriş kabuğunu kullanarak (sizin de bilmediğiniz halde) bile işe yarayan tek liner export): env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello" - Lloeki
Burada Ubuntu'ya özgü bazı detaylar var askubuntu.com/questions/528101/... - Şahsen, sorunu çözmek için Ubuntu 13.10'dan 14.04'e yükseltmem gerekti - dodgy_coder


ShellShock pratik olarak bash'ın birden fazla savunmasızlığının birleşimi, ve Şu anda bu güvenlik açığından yararlanan malaware de var, bu yüzden ShellShock hala açık bir konu olabilir, bir RedHat ile ilgili bu konudaki güncellemeler.

Redhat aşağıdakileri tavsiye eder: 

Komutunu çalıştırın:

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

Çıkış ise:

$ 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

hiçbir fikrin yok.

Çıkış ise:

$ 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

var CVE-2014-6271 düzeltmek

Eğer çıktınız:

$ 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

savunmasız değilsin.

ShellShock kontrolünün diğer bir parçası ise, CVE-2014-7169 güvenlik açığı kontrolünün, sistemin dosya oluşturma sorunundan korunmasını sağlamasıdır. Bash sürümünüzün CVE-2014-7169'a karşı savunmasız olup olmadığını test etmek için aşağıdaki komutu çalıştırın:

$ 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

Sisteminiz savunmasız ise, saat ve tarih görüntülenecek ve / tmp / echo oluşturulacaktır.

Sisteminiz savunmasız değilse, çıktıyı aşağıdaki gibi göreceksiniz:

$ 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





Adında bir CLI programı yazdım ShellShocker Web sunucunuzu CGI komut dosyalarındaki güvenlik açıkları için test etmek. Sitenizi test etmek için şunları çalıştırırsınız:

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

yani

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

DÜZENLEME: Bu yardımcı program indirildi, üzgünüm: '(


2
2017-09-26 17:24



Bağlantın öldü - SSK
@SSK Üzgünüz;) Mistype. - Liam Marshall
Bağlantınız hala öldü. - Mxx
Evet, üzgünüm, indirdim. Sevmediğim şekillerde sömürülüyordu. - Liam Marshall


CGI URL'nizi bu çevrimiçi sınava gönderebilirsiniz:

http://shellshock.iecra.org


1
2017-09-25 20:46



İndirimlerin nedenlerini belirtmek kibardır. - David
"Tüm taramaları günlüğe kaydediyoruz" ??? Ürpertici. Python'u indirip kendim çalıştırırım. - Brad
En azından onlar sana söylüyorlar. Eminim ki bu hizmeti sunan bir beyaz güvenlik hizmeti veriyor olsaydım, bir kisinin, kaç kişinin körü körüne sitenin ayrıntılarını girdiğine dair bir web sitesine girdiğinin bir kaydını tutabilirdim. Testin sunulduğu sitenin gerçekliği hakkında çok şey bilmeden bir penetrasyon testi yapmaya çalışmak ... ve birilerinin başkalarına ait olan hassas siteleri bulmak için hizmetlerini kullandığı sırada test edenlerin bir günlüğünü isterlerse ... - Rob Moir


env x = '() {:;} yazın; echo savunmasız 'bash -c' echo bu bir testtir "ve eğer bu güvenlik açığından etkileniyorsa ve bu bir test ise, OSX / Linux makinenizin etkilendiği anlamına gelir. Çözüm bash'ın en son sürümüne güncellemektir.


-1
2017-09-27 11:33



Neden root olarak? Tamamen gereksiz. - Mat