root@system:~# less myfile
-bash: /bin/less: Input/output error
Le système de fichiers racine est mort. Mais mon chat est toujours en vie (dans ma mémoire):
root@system:~# cat > /tmp/somefile
C^d
root@system:~#
Il est un peu seul cependant, tous ses amis sont partis:
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
Le système fonctionne toujours et remplit son objectif. Je sais, je sais, la seule réponse sensée à cela est de mettre le système hors tension et de remplacer le lecteur racine. Malheureusement, ce n'est pas une option car cela coûterait beaucoup de temps et d'argent. De plus, cela tuerait mon chat et cela me rendrait triste.
J'ai pensé lui apporter ses amis habituels d'un donneur. Je n'ose pas essayer de les scp, au cas où ssh essaie de le charger et coupe la ligne (le binaire est quand même parti). Cela ressemble à un travail pour le cousin de mon chat:
root@system:~# netcat -l 1234 > /tmp/less
-bash: netcat: command not found
Malheureusement, il est parti depuis longtemps.
Maintenant, je peux essayer de tromper mon chat pour qu'il effectue un rituel pour le ressusciter:
cat > netcat < /dev/tcp/localhost/9999
Et ce genre de travail. Il est presque vivant:
root@system:/tmp# /tmp/netcat
-bash: /tmp/netcat: Permission denied
Il a juste besoin d'une petite étincelle de vie. Cette petite +x
incantation magique que je ne peux pas réciter pour le moment.
Pouvez-vous m'aider à ramener les amis de mon chat?
la source
/lib/ld-linux.so.2 ./netcat
(ou l'équivalent de votre système) et obtenir quelque chose?Réponses:
Il y a plusieurs possibilités, tout dépend des paramètres exacts de votre situation actuelle. Je vais supposer que Linux est utilisé dans les exemples suivants, mais des fonctionnalités similaires existent sur d’autres plates-formes dans la plupart des cas.
Vous pourrez peut-être faire en sorte que le chargeur dynamique exécute un exécutable à votre place. En supposant que ce
cat
lien soit lié dynamiquement, l'équivalent de votre plate-forme/lib/ld-linux.so.2
sera probablement aussi en mémoire et donc utilisable pour exécuter un binaire:Vous pouvez en avoir plusieurs (des versions 32 et 64 bits sont probables) et plusieurs copies sont disponibles, ou des liens symboliques doivent être résolus. L'un d'entre eux peut fonctionner.
Si vous avez un système de fichiers vfat ou NTFS monté ou un autre qui traite tous les fichiers comme 777, vous pouvez créer votre fichier exécutable ici.
S'il y a sur le contenu de, une partition montée vous ne vous inquiétez pas sur un lecteur qui est encore la plupart du temps au travail, vous pouvez remplacer le contenu d'une nouvelle image du même type de système de fichiers contenant executables que vous voulez -
cat
devrait bien pour cela dans le rôle que les gens utilisent habituellementdd
pour, et vous pouvez fournir l’image sur le réseau.Celui-ci est plausible, mais a beaucoup d'endroits où ne pas travailler en fonction de ce qui est exactement en mémoire de cette partition.
Si un fichier accessible disposant d'une autorisation d'exécution sur un système de fichiers accessible en écriture, vous pouvez le
cat >
remplacer pour remplacer le contenu par un binaire de votre choix.ctypes.sh
, ce qui fournit une interface de fonction étrangère à Bash, puisdlcall chmod ./netcat 511
.Vous pouvez importer un fichier
foo.so
de bibliothèque dynamique de votre construction, puis lecat
charger en votre nomLD_PRELOAD
, ce qui vous permet d'exécuter du code arbitraire.Si vous interceptez, par exemple
open
:alors vous pouvez faire ce que vous devez faire là-bas.
Ma suggestion serait d’introduire un
busybox
fichier exécutable lié statiquement comme premier élément (ou, en réalité, comme élément unique) afin que vous disposiez de toute la gamme de commandes disponibles sans avoir à réutiliser ce que le piratage pouvait vous amener à épuisement.la source
busybox
": Notez qu'il asash
été spécialement conçu pour ce type de cas d'utilisation et qu'il peut être plus facilement disponible rapidement (vous pouvez par exemple l'installer à l'avance et laisser une copie exécutée quelque part de manière à ce qu'elle soit en mémoire lorsque le système pauses ... ou vous pouvez abandonner vos animaux de compagnie et acheter un groupe de bétail à la place, je suppose).