Debugging

gdb可以調試suid root程序嗎?

  • February 4, 2015

我寫了一個程序,它呼叫setuid(0)execve("/bin/bash",NULL,NULL).

然後我做了chown root:root a.out && chmod +s a.out

當我執行時,./a.out我得到一個 root shell。但是,當我這樣做時,gdb a.out它會以普通使用者身份啟動該過程,並啟動一個使用者 shell。

那麼…我可以調試 setuid 根程序嗎?

如果調試器以 root 身份執行,則只能調試 setuid 或 setgid 程序。核心不允許您呼叫ptrace以額外權限執行的程序。如果是這樣,您將能夠使程序執行任何操作,這實際上意味著您可以通過呼叫調試器來執行 root shell /bin/su

如果您以 root 身份執行 Gdb,您將能夠執行您的程序,但您只能在以 root 身份執行時觀察其行為。

如果您需要在程序不是由 root 啟動時對其進行調試,請在 Gdb 外部啟動程序,使其在進入麻煩部分之前以某種方式暫停,以及attachGdb 內部的程序(at 1234其中 1234 是程序 ID)。

引用自:https://unix.stackexchange.com/questions/15911