Escribí un programa que llama setuid(0)
y execve("/bin/bash",NULL,NULL)
.
Entonces lo hice chown root:root a.out && chmod +s a.out
Cuando ejecuto ./a.out
me sale un shell de root. Sin embargo, cuando lo hago gdb a.out
, comienza el proceso como usuario normal y lanza un shell de usuario.
Entonces ... ¿puedo depurar un programa raíz setuid?
gdbserver
como root y conectarse a ella como un usuario normal. Según su comentario, parece que no logró hacerlo de la manera simple (ejecutando gdb como root) pero no entiendo qué salió mal, por lo que no puedo evitarlo.Aquí hay una manera de iniciar el proceso en un estado detenido si lo desea. Use un script bash haciendo:
Haz que se ejecute en segundo plano.
Entonces empezar
gdb
y adjunte al pid que se imprimió.Tendrá que pasar por el
exec
comando congdb
, pero podrá depurar desde el principio.fuente