Frage Wie kann ich testen, ob mein Server anfällig für den ShellShock-Fehler ist?


Wie kann ich sicherstellen, dass meine Bash Installation nicht anfällig für die Neurose Fehler mehr nach den Updates?


77
2017-09-25 14:25


Ursprung


Sehen Gibt es einen kurzen Befehl, um zu testen, ob mein Server gegen den Shellshock Bash Bug geschützt ist? - Martin Schröder
Bitte beachten Sie, dass zwei weitere Schwachstellen in der Bash noch nicht gepatcht sind (CVE-2014-7186 und CVE-2014-7187). - Deer Hunter
Patches, die CVE-2014-7186 und CVE-2014-7187 beheben, sind nicht mehr lange verfügbar, nachdem Deer Hunter seinen Kommentar gepostet hat. Wenn Sie einen Distro bereitgestellten Patch für CVE-2014-7169 haben, haben Sie vielleicht schon genug, um 7186/7187 zu blockieren, testen Sie Ihr System mit den folgenden Befehlen und sehen Sie. Überprüfen Sie auch, ob weitere Sicherheitsupdates für Ihre Distribution verfügbar sind. - BeowulfNode42


Antworten:


Um nach der Sicherheitsanfälligkeit CVE-2014-6271 zu suchen

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

Es sollte NICHT das Wort "verletzlich" wiedergeben.


Überprüfen der CVE-2014-7169-Sicherheitsanfälligkeit
(Warnung: Wenn Ihr System ausfällt, wird eine Datei namens /tmp/echo die Sie nach dem Löschen löschen können und vor dem erneuten Testen löschen müssen)

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

es sollte das Wort Datum dann mit einer Nachricht wie beschweren cat: echo: No such file or directory. Wenn Sie stattdessen das aktuelle Datum angeben, ist Ihr System anfällig.


Um nach CVE-2014-7186 zu suchen

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

Es sollte NICHT den Text zurückgeben CVE-2014-7186 vulnerable, redir_stack.


Um nach CVE-2014-7187 zu suchen

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

Es sollte NICHT den Text zurückgeben CVE-2014-7187 vulnerable, word_lineno.


Um nach CVE-2014-6277 zu suchen. Ich bin mir nicht 100% sicher, da es sich auf ein teilweise gepatchtes System zu verlassen scheint, auf das ich keinen Zugriff mehr habe.

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

Ein pass-Ergebnis auf diesem einen ist, dass es den Text nur zurückspringt testing CVE-2014-6277. Wenn es perl läuft oder wenn es klagt, dass Perl nicht installiert ist, ist das definitiv ein Fehler. Ich bin mir über keine anderen Fehlermerkmale sicher, da ich keine ungepatchten Systeme mehr habe.


Um nach CVE-2014-6278 zu suchen. Auch hier bin ich mir nicht 100% sicher, ob dieser Test nicht mehr gepatchte Systeme hat.

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

Ein Test besteht darin, dass NUR der Text zurückgesendet wird testing CVE-2014-6278. Wenn dein Echo zurück ist hi mom überall ist das definitiv ein Fehler.


83
2017-09-26 07:49



Können wir den allgemeinen Test hinzufügen? foo='() { echo not patched; }' bash -c foo dazu? Bis Funktionsexporte in einen separaten Namespace gestellt werden, hören wir nicht auf, von einem Parser-Bug zum nächsten zu laufen. - billyw
Hat dieser Test einen CVE? Haben Sie Referenzen, um dieses Problem zu beschreiben? Auch diese Art von Informationen kann zu einer der anderen Fragen über Shellshock gehören, da es bei diesem Q darum geht, den Erfolg oder das Versagen bestehender Patches zu testen. - BeowulfNode42
Das stammt von Michal Zalewskis Blogpost über einige bevorstehende Shellshock CVEs (lcamtuf.blogspot.com/2014/09/...). Es ist sein vorgeschlagener Test für CVE-2014-6278, der immer noch nicht öffentlich ist. Es scheint, dass ich mich in Bezug auf die Allgemeingültigkeit des Tests irrte; Ich bin bereits auf einen Fall gestoßen, in dem Zalewskis Test bestanden hat, aber der CVE-2014-7187-Test fehlgeschlagen ist. - billyw
Und hier ist die vollständige Offenlegung auf CVE-2014-6277 und CVE-2014-6278, zusammen mit Befehlen, um nach ihnen zu suchen: seclists.org/fulldisclosure/2014/Oct/9 - billyw
Ein wichtiger Punkt: Auch wenn die Version von BASH verwundbar ist, wenn nichts verwendet wird (dh alle von Daemons verwendeten Accounts, wie "www" oder "cups" oder was auch immer), werden BASH als Standard-Shell und keine von ihnen konfiguriert Ihre Codes rufen system () oder Ähnliches auf, da die anfällige Version weniger riskant sein kann, aber BASH so schnell wie möglich aktualisieren sollte. - DTK


Exportieren Sie eine speziell gestaltete Umgebungsvariable, die automatisch von anfälligen Versionen von Bash ausgewertet wird:

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

Führen Sie nun ein einfaches Echo aus, um zu sehen, ob Bash den Code in $ testbug auswertet, obwohl Sie diese Variable nicht selbst verwendet haben:

$ bash -c "echo Hello"
VULNERABLE
Hello

Wenn die Zeichenfolge "VULNERABLE" angezeigt wird, ist die Antwort offensichtlich. Ansonsten müssen Sie sich keine Sorgen machen und Ihre gepatchte Version von Bash ist in Ordnung.

Bitte beachten Sie, dass mehrere Patches von den wichtigsten Linux-Distributionen veröffentlicht wurden und manchmal nicht vollständig behoben wurden. Überprüfen Sie weiterhin die Sicherheitsmitteilungen und die CVE-Eintrag für diesen Fehler.


32
2017-09-25 14:25



Neben CVE-2014-6271 hat vor allem der unvollständige Fix von Red Hat eine eigene, die sich ebenfalls lohnt: CVE-2014-7169. - DocMax
One-Liner, der deine Shell-Umgebung nicht verschmutzt und auch dann funktioniert, wenn du eine alternative Login-Shell verwendest (von der du vielleicht nichts weißt) export): env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello" - Lloeki
Es gibt einige Ubuntu-spezifische Details hier askubuntu.com/questions/528101/ ... - Ich musste persönlich von Ubuntu 13.10 auf 14.04 upgraden, um das Problem zu beheben - dodgy_coder


ShellShock ist praktisch eine Verbindung von mehr als einer Schwachstellen von bash, und In diesem Moment gibt es auch Malaware, die diese Sicherheitslücke ausnutzt, so ShellShock kann ein Problem sein, das noch offen ist, gibt es ein Thread mit Updates von RedHat über diese Probleme.

Redhat empfahl folgendes: 

Führen Sie den Befehl aus:

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

Wenn die Ausgabe ist:

$ 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

Sie haben keine Lösung.

Wenn die Ausgabe ist:

$ 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

du hast CVE-2014-6271 Fix

Wenn Ihre Ausgabe ist:

$ 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

Du bist nicht verletzlich.

Der andere Teil der ShellShock-Prüfung ist die CVE-2014-7169-Schwachstellenprüfung, die sicherstellt, dass das System vor dem Problem der Dateierstellung geschützt ist. Führen Sie den folgenden Befehl aus, um zu testen, ob Ihre Version von Bash für CVE-2014-7169 anfällig ist:

$ 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

Wenn Ihr System anfällig ist, werden Uhrzeit und Datum angezeigt und / tmp / echo wird erstellt.

Wenn Ihr System nicht anfällig ist, sehen Sie eine Ausgabe ähnlich der folgenden:

$ 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





Ich schrieb ein CLI-Dienstprogramm namens ShellShocker um Ihren Webserver auf Schwachstellen in CGI-Skripten zu testen. Um Ihre Website zu testen, führen Sie Folgendes aus:

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

dh

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

EDIT: Dieses Dienstprogramm wurde entfernt, sorry: '(


2
2017-09-26 17:24



Deine Verbindung ist tot - SSK
@SSK Sorry;) Mistype. - Liam Marshall
Dein Link ist immer noch tot. - Mxx
Ja, tut mir leid, ich habe es runtergenommen. Es wurde auf eine Weise ausgenutzt, die ich nicht mochte. - Liam Marshall


Sie können Ihre CGI-URL an diesen Online-Test senden:

http://shellshock.iecra.org


1
2017-09-25 20:46



Es ist höflich, Gründe für Downvotes anzugeben. - David
"Wir protokollieren alle Scans" ??? Gruselig. Ich würde die Python herunterladen und es selbst laufen lassen. - Brad
Zumindest sagen sie dir das. Ich bin mir sicher, dass ich, wenn ich einen Whitehat-Sicherheitsdienst anbiete, der diesen Dienst anbietet, ein Protokoll (wenn es nur ein Zähler ohne individuelle Details ist) darüber führen würde, wie viele Personen blind ihre Website-Details in eine Webseite eingetragen haben, die besagt, dass es geht einen Penetrationstest zu versuchen, ohne viel über die Authentizität der Website zu wissen, die den Test anbietet ... und sie wollten ein Protokoll darüber, wer getestet hat, ob jemand seinen Dienst benutzt hat, um auch anfällige Sites anderer zu finden ... - Rob Moir


Typ env x = '() {:;}; echo vulnerable 'bash -c "echo dies ist ein test" und wenn dies verwundbar zurückkommt und dies ein test ist, bedeutet dies, dass ihr OSX / Linux Rechner betroffen ist. Abhilfe ist ein Update auf die neueste Version von bash.


-1
2017-09-27 11:33



Warum als root? Völlig unnötig. - Mat