Anscheinend kann der Shellshock-Bash-Exploit CVE-2014-6271 über das Netzwerk via SSH ausgenutzt werden. Ich kann mir vorstellen, wie der Exploit über Apache / CGI funktionieren würde, aber ich kann mir nicht vorstellen, wie das über SSH funktionieren würde.
Kann jemand bitte ein Beispiel geben, wie SSH ausgenutzt wird und welcher Schaden dem System zugefügt werden könnte?
KLÄRUNG
AFAIU: Nur ein authentifizierter Benutzer kann diese Sicherheitsanfälligkeit über SSH ausnutzen. Welchen Nutzen hat dieser Exploit für jemanden, der überhaupt legitimen Zugriff auf das System hat? Ich meine, dieser Exploit hat keine Rechteerweiterung (er kann nicht root werden), also kann er nicht mehr, als er es hätte tun können, wenn er sich einfach legitim über SSH eingeloggt hätte.
quelle
Antworten:
Ein Beispiel, bei dem dies ausgenutzt werden kann, sind Server mit einem
authorized_keys
erzwungenen Befehl. Wenn Sie einen Eintrag hinzufügen~/.ssh/authorized_keys
, können Sie der Zeile das Präfix "command="foo"
to force" voranstellen, das ausgeführt werden soll, sobald derfoo
öffentliche Schlüssel "ssh" verwendet wird. Wenn für diesen Exploit die Shell des Zielbenutzers festgelegt istbash
, können sie den Exploit nutzen, um andere Dinge als den Befehl auszuführen, zu dem sie gezwungen werden.Dies wäre im Beispiel wahrscheinlich sinnvoller. Hier also ein Beispiel:
Hier richten wir einen Benutzer ein
testuser
, der alle SSH-Verbindungen erzwingt, die mit Ihrem SSH-Schlüssel ausgeführt werdenecho starting sleep; sleep 1
.Wir können dies testen mit:
Beachten Sie, dass unser
echo something else
nicht ausgeführt wird, aber dasstarting sleep
zeigt, dass der erzwungene Befehl ausgeführt wurde.Lassen Sie uns nun zeigen, wie dieser Exploit verwendet werden kann:
Dies funktioniert, weil
sshd
dieSSH_ORIGINAL_COMMAND
Umgebungsvariable auf den übergebenen Befehl gesetzt wird. Also auch wennsshd
liefsleep
, und nicht den Befehl , den ich sagte ihm, weil der Exploit, mein Code noch ausgeführt wird.quelle
ssh testuser@localhost echo something else '`whoami`'
Um zu beweisen, wo der Befehl ausgeführt wirdEin weiteres Beispiel von Ramesh: Wenn Sie die Zwei-Faktor-Authentifizierung verwenden, können Sie den zweiten Faktor mithilfe dieses Exploits umgehen, je nachdem, wie er implementiert ist.
- Normaler Login -
- Code ohne 2FA ausführen -
Sie werden feststellen, dass der Code ohne Aufforderung zur Eingabe von 2FA ausgeführt wurde.
- Nach dem Patchen Bash -
quelle
read
Funktion " uses" verwendet. Andernfalls ist der Benutzer in Sicherheit.Shellshock ist eine Sicherheitslücke in Bash, nicht in SSH. Um es auszunutzen, muss ein Angreifer das anfällige System veranlassen, bash auszuführen und den Wert einer Umgebungsvariablen zu steuern, die an bash übergeben wird.
Um einen Bash-Prozess über SSH zu erreichen, muss der Angreifer die Authentifizierungsschritte bestehen. (Es kann Angriffsvektoren über andere Netzwerkdienste geben, die jedoch den Rahmen dieses Threads sprengen.) Wenn das Konto ohnehin beliebige Shell-Befehle ausführen darf, liegt kein Angriff vor. Die Sicherheitsanfälligkeit tritt auf, wenn das Konto auf die Ausführung bestimmter Befehle beschränkt ist, z. B. ein SFTP-Konto oder ein Git-Konto.
Es gibt verschiedene Möglichkeiten, ein Konto auf die Ausführung eines bestimmten Befehls mit SSH zu beschränken: mit der
ForceCommand
Option insshd_config
oder mit einemcommand=
. Einschränkung in derauthorized_keys
Datei. Handelt es sich bei der Shell des Benutzers um eine Bash-Shell, kann ein Benutzer, der normalerweise nur auf das eingeschränkte Konto zugreifen würde, die Einschränkung umgehen und beliebige Befehle ausführen.quelle
zsh
.