gpt4 book ai didi

c - 以 root 身份运行 C 程序,无需密码

转载 作者:行者123 更新时间:2023-11-30 19:32:05 25 4
gpt4 key购买 nike

我想用 C 语言编写程序,它将以 root 身份打开 bash,但没有任何用户的密码。

#include <unistd.h>
#include <stdio.h>

int main(void)
{
char *argv[] = { "/bin/bash","-c","sudo /bin/bash",0 };
execve(argv[0], &argv[0],0);
return 0;
}

我的系统是Linux Mint 18.2 Sonya,我设置了这2个命令

chown root:root a.out
chmod u=srwx,go=xr a.out

但是当我尝试执行此操作时,它仍然要求输入密码。如果有其他选项,我不想编辑/etc/sudoers。

最佳答案

这是您正在创建的一个巨大的安全漏洞。只要你意识到这一点。事实上,我无法理解为什么您不想编辑 sudoers,但可以接受一个仅运行它即可创建 root shell 的程序。

话虽如此,程序如下:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char *argv[], char *envp[]) {
char *args[] = { "/bin/bash", NULL };
execve(args[0], args, envp);

perror("Running bash failed");
return 1;
}

现在您所要做的就是编译它,将可执行文件的文件所有者设置为 root 并设置 SUID 权限。

您的代码失败的原因是 SUID 设置了有效 UID。真正的 UID 仍然是您,因此 sudo 要求输入密码。

话虽如此,没有理由像上面的代码那样以有效 root 身份运行 shell。

此代码的一个缺点是它不会将真正的 UID 设置为 root,并且不会执行登录。如果这对您来说是个问题,请保留原始程序,但在其开头添加:

setresuid(0, 0, 0);
setresgid(0, 0, 0);

关于c - 以 root 身份运行 C 程序,无需密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47484987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com