【问题标题】:suid binary privilege escalationsuid 二进制权限提升
【发布时间】:2020-12-20 16:01:48
【问题描述】:

如果 /usr/bin/bash 设置了 suid 位 为什么我的 euid 仅在我使用 -p 选项时才更改为 root 像这样/usr/bin/bash -p 这个 -p 选项代表什么? 当您从 suid 二进制文件生成 bash shell 时,为什么将 euid 设置为 root 而为什么不设置为 uid

【问题讨论】:

    标签: linux elevated-privileges


    【解决方案1】:

    来自documentation

    -p
    开启特权模式。在此模式下,不处理 $BASH_ENV 和 $ENV 文件,不从环境继承 shell 函数,并且如果 SHELLOPTS、BASHOPTS、CDPATH 和 GLOBIGNORE 变量出现在环境中,它们将被忽略。如果 shell 以不等于真实用户(组)标识的有效用户(组)标识启动,并且未提供 -p 选项,则执行这些操作并将有效用户标识设置为真实用户标识。如果在启动时提供了 -p 选项,则不会重置有效用户 ID。关闭此选项会导致有效的用户和组 ID 设置为真实的用户和组 ID。

    这样做是因为 setuid shell 脚本一直是安全漏洞的常见来源。所以程序员需要使用-p选项来表明他们确实需要提权,例如通过使用

    #!/usr/bin/bash -p
    

    如果没有这个,在/usr/bin/bash 上设置suid 位本身将是一个巨大的安全漏洞,因为大多数脚本在以提升的权限运行时没有采取必要的预防措施。

    【讨论】:

    • 假设我使用 -p 选项生成一个 bash shell,如果我尝试使用 passwd 命令,生成 shell 的用户的密码或 root 用户的密码会被更改吗?
    • 我认为它会是root,但这取决于passwd如何选择它的默认值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2018-06-11
    • 2013-08-02
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多