现在的情况是这样的。我有一个假设的系统,有 2 个用户 -“user1”和“root”。用户“user1”只是一个普通的非 sudoer 用户,uid=1000,而 root 只是一个普通的 root 用户,uid=0。
假设通过系统中的某个漏洞user1,可以获得euid=0,但他的uid仍然是1000。这给了他一些root能力,但不是全部。例如:访问 /root 就好像 root 正在尝试这样做一样,但是运行“sudo”或“su”似乎是基于 UID 而不是 EUID 运行的。
我的问题是:既然我们有 euid=0,是否有一种优雅的方法不需要上传二进制文件、更改 /etc/shadow 或 /etc/passwd 将 uid 也切换为 0?如果该方法能够在本机运行并且不假设特定程序(例如 gcc)存在,那就太好了。
到目前为止,我只能想出python -c 'import pty; import os; os.setuid(0); pty.spawn("/bin/bash")'
哪个相当好,但假设系统上安装了 python。还有更好的建议吗?
答案1
这适用于许多默认配置。
perl -MEnglish -e '$UID = 0; $ENV{PATH} = "/bin:/usr/bin:/sbin:/usr/sbin"; exec "su - root"'
这将设置 uid 并使您成为 root 用户。
借自伊尔卡丘。