Shellcode作为缓冲区溢出(或其他)漏洞的有效负载以root身份执行?

时间:2011-04-15 00:49:47

标签: security buffer buffer-overflow exploit shellcode

当我使用诸如here * 之类的shellcode作为一些易受攻击的程序的有效负载时,shell如何以root身份执行?我问的是如何将权限提升为root权限? shellcode似乎没有调用setuid或任何东西来改变用户。

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

4 个答案:

答案 0 :(得分:2)

这些例子包括以下内容:

     mov $70, %al           #setreuid is syscall 70

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

   int setreuid(uid_t ruid, uid_t euid);

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

当然,如果vuln程序具有所有者root,而shellcode具有setuid(0) syscall,则可以将/bin/sh用作root