当我使用诸如here * 之类的shellcode作为一些易受攻击的程序的有效负载时,shell如何以root身份执行?我问的是如何将权限提升为root权限? shellcode似乎没有调用setuid
或任何东西来改变用户。
* http://www.tenouk.com/Bufferoverflowc/Bufferoverflow5.html
答案 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