root@system:~# less myfile
-bash: /bin/less: Input/output error
El sistema de archivos raíz está muerto. Pero mi gato todavía está vivo (en mi memoria):
root@system:~# cat > /tmp/somefile
C^d
root@system:~#
Sin embargo, está un poco solo, todos sus amigos se han ido:
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
El sistema aún se está ejecutando y cumple su propósito. Lo sé, lo sé, la única respuesta sensata a esto es bajar el sistema y reemplazar la unidad raíz. Desafortunadamente, esa no es una opción, ya que costaría mucho tiempo y dinero. Además, mataría a mi gato, y eso me pondría triste.
He pensado en traerle a sus amigos habituales de un donante. No me atrevo a intentar scp en ellos, en caso de que ssh intente cargarlo y corte la línea (el binario desaparece de todos modos). Esto suena como un trabajo para el primo de mi gato:
root@system:~# netcat -l 1234 > /tmp/less
-bash: netcat: command not found
Lamentablemente se fue hace mucho tiempo.
Ahora, puedo tratar de engañar a mi gato para que realice un ritual para resucitarlo:
cat > netcat < /dev/tcp/localhost/9999
Y ese tipo de trabajo. Él está casi vivo:
root@system:/tmp# /tmp/netcat
-bash: /tmp/netcat: Permission denied
Solo necesita una pequeña chispa de vida. Ese pequeño +x
encantamiento mágico que no puedo recitar en este momento.
¿Me pueden ayudar a traer a los amigos de mi gato?
fuente
/lib/ld-linux.so.2 ./netcat
(o el equivalente de su sistema) y hacer que algo funcione ?Respuestas:
Hay varias posibilidades, todas dependiendo de los parámetros exactos de su situación en este momento. Asumiré Linux en los siguientes ejemplos cuando corresponda, pero existe una funcionalidad similar en otras plataformas en la mayoría de los casos.
Es posible que pueda hacer que el cargador dinámico ejecute un ejecutable por usted. Suponiendo que
cat
esté vinculado dinámicamente, el equivalente de su plataforma/lib/ld-linux.so.2
probablemente también estará en la memoria y, por lo tanto, se podrá usar para ejecutar un binario:Puede tener varios de estos (es probable que sean de 32 y 64 bits) y puede haber varias copias disponibles o enlaces simbólicos que deben resolverse. Uno de esos puede funcionar.
Si tiene un sistema de archivos vfat o NTFS montado, u otro que trata todos los archivos como 777, puede crear su ejecutable allí.
Si hay una partición montada de la que no le importa el contenido, en una unidad que todavía funciona principalmente, puede reemplazar el contenido con una nueva imagen del mismo tipo de sistema de archivos que contiene los ejecutables que desea,
cat
debería estar bien para esto en el rol que suelen usar las personasdd
y puede proporcionar la imagen a través de la redEste es plausible, pero tiene muchos lugares para no trabajar dependiendo de lo que todavía está exactamente en la memoria de esa partición.
Si hay algún archivo accesible que tenga permiso de ejecución en cualquier sistema de archivos grabable, puede
cat >
ingresarlo para reemplazar el contenido con un binario de su elección.ctypes.sh
, lo que proporciona una interfaz de función ajena a Bash, y luegodlcall chmod ./netcat 511
.Puede traer un archivo
foo.so
de biblioteca dinámica de su construcción y luegocat
cargarlo en su nombreLD_PRELOAD
, permitiéndole ejecutar código arbitrario.Si interceptas, por ejemplo
open
:entonces puedes hacer lo que necesites hacer allí.
Mi sugerencia sería traer un
busybox
ejecutable vinculado estáticamente como el primer elemento (o realmente, el único elemento) para que tenga la gama completa de comandos disponibles sin reutilizar cualquier truco que lo haya llevado al agotamiento.fuente
busybox
":sash
tenga en cuenta que fue diseñado específicamente para este tipo de caso de uso y puede estar más fácilmente disponible en caso de necesidad (por ejemplo, puede instalarlo con anticipación y dejar una copia ejecutándose en algún lugar para que esté en la memoria cuando el sistema rompe ... o puedes deshacerte de tus mascotas y comprar un montón de ganado, supongo).