Esta pagina se ve mejor con JavaScript habilitado

Ejecutar binarios sin permisos de ejecución

 ·  🎃 kr0m

Todos sabemos que si un script no tiene permisos de ejecución podemos seguir ejecutándolo invocando el interprete e indicando el path hasta el script, lo que no sabe tanta gente es que se puede hacer lo mismo con ficheros binarios, de este modo logramos ejecutar binarios sin premisos de ejecución, el único requisito es tener permisos de lectura sobre este.

Escribimos un pequeño programa de ejemplo:

vi test.c

#include<stdio.h>

int main(void) {
  printf("Hello world!\n");
  return 0;
}

Compilamos el programa:

gcc test.c

Comprobamos que se ejecuta correctamente:

./a.out

Hello world!

Nos cercionamos de que tenga permisos de ejecución:

ls -la a.out

-rwxr-xr-x 1 kr0m kr0m 16600 may 13 23:37 a.out

Le quitamos los permisos de ejecución:

chmod -x a.out
ls -la a.out

-rw-r--r-- 1 kr0m kr0m 16600 may 13 23:37 a.out

Comprobamos que ya no podemos ejecutarlo directamente:

./a.out

bash: ./a.out: Permiso denegado

Comprobamos de que tipo de fichero se trata:

file a.out

a.out: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, not stripped

Ejecutamos el binario mediante el intérprete:

/lib64/ld-linux-x86-64.so.2 /home/kr0m/a.out

Hello world!
Si te ha gustado el artículo puedes invitarme a un RedBull aquí