【问题标题】:Shellcode as payload for buffer overflow (or other) exploits executed as root?Shellcode作为以root身份执行的缓冲区溢出(或其他)漏洞利用的有效负载?
【发布时间】:2011-04-15 00:49:47
【问题描述】:
【问题讨论】:
标签:
security
buffer
buffer-overflow
exploit
shellcode
【解决方案1】:
这些示例包括:
mov $70, %al #setreuid is syscall 70
所以他们使用setreuid(2) 系统调用,它设置进程的真实和有效用户ID:
int setreuid(uid_t ruid, uid_t euid);
【解决方案2】:
为了执行 shellcode,你需要一个像缓冲区溢出这样的漏洞。 shellcode 拥有作为运行进程的所有权利。因此,如果您利用像 passwd 命令这样的 setuid root 二进制文件或以 root 身份运行的二进制文件(如 cupsd 守护进程),那么攻击者将拥有 root 访问权限。内核也可能遭受缓冲区溢出的影响,并且也可以通过这种方式获得 root 访问权限。
【解决方案3】:
首先,您需要授予程序 root 权限(使用 chown 和 chmod 作为 root)。你需要 setreuid() 作为你的有效载荷。如果您可以通过其他用户利用该程序,那将给您root。
【解决方案4】:
当然,如果你的 vuln 程序有一个所有者 root 并且你的 shellcode 有一个 setuid(0) 系统调用,你可以将 /bin/sh 执行为 root