【问题标题】:Shellcode as payload for buffer overflow (or other) exploits executed as root?Shellcode作为以root身份执行的缓冲区溢出(或其他)漏洞利用的有效负载?
【发布时间】:2011-04-15 00:49:47
【问题描述】:

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

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

【问题讨论】:

    标签: 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

          【讨论】:

            猜你喜欢
            • 2021-11-30
            • 1970-01-01
            • 2016-06-04
            • 1970-01-01
            • 2023-03-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多