根据参考文献中的答案: gdb可以调试suid root程序吗?
声称:“只有当调试器以 root 身份运行时,您才能调试setuid
或setgid
程序。内核不会让您调用ptrace
以额外权限运行的程序。如果这样做,您将能够使程序执行任何操作,这实际上意味着您可以通过调用调试器来运行 root shell /bin/su
。”
我想问如果普通用户被授予这些权限,他如何才能从调试器工具中受益?作为普通用户,我们如何才能使用调试器工具进入 root shell?
我有一个后续问题,根据杜文亮的《计算机与网络安全》一书(第75页,进行缓冲区溢出攻击),他声称如果我们这样编译c语言程序:
$ gcc -z execstack -fno-stack-protector -g -o stack_dbg stack.c
$ sudo chown root stack
$ sudo chmod 4755 stack
使该程序成为一个Set-UID程序,可以选择由普通用户调试,但普通用户不会获得任何权限。为什么?既然用户可以使用调试工具,那么为什么他不能利用它来为自己谋利呢?