2

当我使用诸如此处提供的 shellcode 作为某些易受攻击程序的有效负载时,shell 如何以 root 身份执行我在问特权如何提升到root?shellcode 似乎没有调用setuid或更改用户的任何内容。

* http://www.tenouk.com/Bufferoverflowc/Bufferoverflow5.html

4

4 回答 4

2

这些例子包括:

     mov $70, %al           #setreuid is syscall 70

所以他们正在使用setreuid(2)系统调用,它设置进程的真实和有效用户 ID:

   int setreuid(uid_t ruid, uid_t euid);
于 2011-04-15T00:54:09.933 回答
1

为了执行 shellcode,你需要一个像缓冲区溢出这样的漏洞。shellcode 拥有作为运行进程的所有权利。因此,如果您利用 setuid root 的二进制文件(如passwd命令)或以 root 身份运行的二进制文件(如cupsd守护进程),则攻击者将拥有 root 访问权限。内核也可能遭受缓冲区溢出的影响,并且也可以通过这种方式获得 root 访问权限。

于 2011-04-15T16:34:31.560 回答
0

首先,您需要以 root 权限授予程序(使用 chown 和 chmod 作为 root)。你需要 setreuid() 作为你的有效载荷。如果您可以通过其他用户利用该程序,那将给您root。

于 2011-05-06T21:07:59.963 回答
0

当然,如果你的 vuln 程序有一个所有者root并且你的 shellcode 有一个setuid(0)系统调用,你可以执行/bin/shroot

于 2020-08-29T10:10:25.583 回答