root@system:~# less myfile
-bash: /bin/less: Input/output error
Das Root-Dateisystem ist tot. Aber meine Katze lebt noch (in meiner Erinnerung):
root@system:~# cat > /tmp/somefile
C^d
root@system:~#
Er ist zwar irgendwie einsam, alle seine Freunde sind weg:
root@system:~# mount
-bash: /bin/mount: Input/output error
root@system:~# dmesg
-bash: /bin/dmesg: Input/output error
root@system:~# less
-bash: /bin/less: Input/output error
root@system:~# chmod
-bash: /bin/chmod: Input/output error
Das System läuft noch und erfüllt seinen Zweck. Ich weiß, ich weiß, die einzig vernünftige Antwort darauf ist, das System herunterzufahren und das Root-Laufwerk zu ersetzen. Leider ist dies keine Option, da dies viel Zeit und Geld kosten würde. Außerdem würde es meine Katze töten, und das würde mich traurig machen.
Ich habe daran gedacht, ihm seine üblichen Freunde von einem Spender zu bringen. Ich wage es nicht, sie zu scpen, falls ssh versucht, sie zu laden und die Zeile abschneidet (die Binärdatei ist sowieso weg). Das klingt nach einem Job für den Cousin meiner Katze:
root@system:~# netcat -l 1234 > /tmp/less
-bash: netcat: command not found
Leider ist er schon lange weg.
Jetzt kann ich versuchen, meine Katze dazu zu bringen, ein Ritual durchzuführen, um sie wiederzubeleben:
cat > netcat < /dev/tcp/localhost/9999
Und das hat funktioniert. Er ist fast am Leben:
root@system:/tmp# /tmp/netcat
-bash: /tmp/netcat: Permission denied
Er braucht nur einen winzigen Lebensfunken. Diese kleine +x
magische Beschwörung, die ich im Moment nicht rezitieren kann.
Können Sie mir helfen, die Freunde meiner Katze zurückzubringen?
quelle
/lib/ld-linux.so.2 ./netcat
(oder das Äquivalent Ihres Systems) und etwas in Gang bringen?Antworten:
Es gibt verschiedene Möglichkeiten, die alle von den genauen Parametern Ihrer aktuellen Situation abhängen. In den folgenden Beispielen gehe ich von Linux aus, sofern zutreffend, aber in den meisten Fällen ist eine ähnliche Funktionalität auf anderen Plattformen vorhanden.
Möglicherweise können Sie den Dynamic Loader veranlassen, eine ausführbare Datei für Sie auszuführen. Vorausgesetzt, es
cat
besteht eine dynamische Verknüpfung, und das Äquivalent Ihrer Plattform befindet/lib/ld-linux.so.2
sich wahrscheinlich auch im Arbeitsspeicher und kann daher zur Ausführung einer Binärdatei verwendet werden:Möglicherweise verfügen Sie über mehrere davon (32- und 64-Bit-Versionen sind wahrscheinlich) und möglicherweise sind mehrere Kopien oder Symlinks verfügbar, die aufgelöst werden müssen. Eine davon könnte funktionieren.
Wenn Sie ein gemountetes vfat- oder NTFS-Dateisystem haben oder ein anderes, das alle Dateien als 777 behandelt, können Sie dort Ihre ausführbare Datei erstellen.
Wenn es eine hängten Partition ist nicht wahr über den Inhalt, auf einem Laufwerk kümmern , die noch meist funktionieren, können Sie den Inhalt mit einem neuen Bild des gleichen Dateisystem - Typs ersetzen ausführbare Dateien enthält , die Sie wollen -
cat
sollte dies in der Ordnung sein Diese Rolle wird normalerweise von Personen verwendetdd
, und Sie können das Image über das Netzwerk bereitstellen.Dieser ist plausibel, hat aber viele Stellen, an denen man nicht arbeiten kann, je nachdem, was genau sich noch auf dieser Partition im Speicher befindet.
Wenn es eine zugreifbare Datei gibt, die Ausführungsberechtigungen für ein beschreibbares Dateisystem besitzt, können
cat >
Sie die Inhalte durch eine Binärdatei Ihrer Wahl ersetzen.ctypes.sh
, was eine fremde Funktionsschnittstelle für Bash bietet, und danndlcall chmod ./netcat 511
.Sie könnten eine dynamische Bibliotheksdatei
foo.so
Ihrer Konstruktion einspielen und diese danncat
in Ihrem Namen ladenLD_PRELOAD
, um beliebigen Code ausführen zu können.Wenn Sie zum Beispiel abfangen
open
:dann kannst du tun, was immer du tun musst.
Mein Vorschlag wäre, eine statisch verknüpfte
busybox
ausführbare Datei als erstes Element (oder wirklich als einziges Element) einzubinden, damit Sie die gesamte Palette der verfügbaren Befehle nutzen können, ohne den Hack erneut zu verwenden, der Sie zu diesem Zeitpunkt bis zur Erschöpfung gebracht hat.quelle
busybox
": Beachten Sie, dass diessash
speziell für diese Art von Anwendungsfall entwickelt wurde und zur Not leichter verfügbar ist (z. B. können Sie es im Voraus installieren und eine Kopie irgendwo laufen lassen, damit sie sich im Speicher des Systems befindet Pausen ... oder du kannst deine Haustiere wegwerfen und stattdessen ein paar Rinder kaufen, nehme ich an).