• Enviar payload a un socket desde la terminal de Debian

    Si desde Debian GNU/Linux queremos enviar un payload a un servicio que tiene un socket abierto debemos saber que podemos hacerlo directamente desde la terminal con printf (o echo) pipeados hacia netcat:

    printf "\x00\x01\x00\x00\x00\x01\x01\x11" | nc 192.168.1.3 502

    echo -ne "\x00\x01\x00\x00\x00\x01\x01\x11" | nc 192.168.1.3 502

    Ambas líneas envían un payload binario en hexadecimal, pero si el envío del payload lo hacemos con echo -ne deberemos saber que echo no siempre maneja bien secuencias nulas (\x00). En el caso de que el payload lleve muchas secuencias nulas, es preferible enviar con printf.

    Si no tenemos o no podemos instalar netcat, podemos hacer lo mismo con bash, dado que bash tiene habilitado /dev/tcp (sh no lo tiene):

    exec 3<>/dev/tcp/192.168.1.3/502; echo printf "\x00\x01\x00\x00\x00\x01\x01\x11" >&3

    Si no tenemos bash ni netcat, pero tenemos python:

    python3 -c 'import socket; s=socket.socket(); s.connect(("192.168.1.3",502)); s.send(bytes.fromhex("0001000000010111"))'

    Eso sí, todas estas opciones abren un socket y envían el payload, pero no lo cierran. Si el lado opuesto no lo cierra, el socket quedará abierto y deberemos cerrarlo con Ctrl + C.


    Deja una respuesta