¿Hay alguna manera de ejecutar un archivo binario ejecutable en Linux que no tenga el bit de ejecución establecido? chmod +x
no es una opinión.
Por ejemplo, sus permisos pueden ser r--r--r--
únicos.
Es posible ejecutar scripts sin establecer el bit de ejecución y poner un shebang pasando la fuente al intérprete, por ejemplo, bash script.sh
o python script.py
.
Entonces, ¿hay algo así execute abinaryfile
que cargará el código objeto en la memoria y lo ejecutará?
Respuestas:
Puede usar /lib/ld*.so como intérprete ELF, de esta manera:
El nombre real difiere de una arquitectura a otra. Algunos nombres incluyen
/lib/ld-linux.so.2
,/lib/ld-linux-x86-64.so.2
y/lib/ld-2.7.so
. Probablemente pueda encontrarlo singularmente como/lib/ld*
.fuente
ld
es el enlazador / cargador de programas. Encuentra y carga las bibliotecas compartidas utilizadas por el programa, y luego lo ejecuta.ld-linux
maneja binarios ELF./lib/ld-linux.so.2
no es ejecutable (¿es eso posible?).so
se pueden cargar s ejecutables , yld-linux
es algo importante./lib64/ld-linux-x86-64.so.2
No. Al menos, no de la misma manera. Todavía está ejecutando un binario cuando hace lo de Python. Python es + x. Necesitaría compilar algo que pueda cargar un archivo y ejecutarlo.
TiCL debe hacer que su respuesta sea una respuesta porque es la mejor manera de hacerlo.
fuente
La
exec
syscall del kernel de Linux fallaEACCES
si el archivo no es ejecutableSi bien puede hacerlo
sh myprog.sh
, tratar de ejecutar el programa como./myprog.sh
no puede funcionar, ya que cuando lo hace:./myprog.sh
exec
llamada al sistema del kernel de Linux como se explica en: https://stackoverflow.com/questions/2429511/why-do-people-write-the-usr-bin-env-python-shebang-on -la-primera-línea-de-un-pyt / 40938801 # 40938801Esto se puede verificar con
main.c
:y
myprog.sh
:Si
myprog.sh
no es ejecutable,main
falla con:Probado en Ubuntu 17,10,
gcc -std=c99
.POSIX 7 menciona que en:
Se pueden encontrar más razones en: https://security.stackexchange.com/questions/66550/unix-execute-permission-can-be-easily-bypassed-is-it-superfluous-or-whats-the
fuente