问题标签 [suid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - SUID 在 Bash 中不起作用
我编写了一个简单的 bash 脚本来备份主目录,e 将其放入 /var/backups。由于该目录受到保护,因此我以 root 身份编写了脚本,然后设置了 SUID。
即便如此,当脚本尝试写入 /var/backups 时,我会收到“权限被拒绝”错误。为什么?
linux - Linux 上的有效 suid/sgid 可执行文件列表?
谁能告诉我在哪里可以找到 Linux 上的有效 suid/guid 程序列表,最好是 Ubuntu?
注意我可以使用 find 来获取我机器上的 suid/sgid 程序列表,但我想知道它们是否是真正有效的程序;有没有我可以比较的清单?
unix - 为什么二进制 (ELF) SUID 可执行文件也允许 READ 访问很常见?
作为最近的“rowhammer”利用概念证明的一部分,使用了 read-suid-exec 工具“ping”来创建更精细的概念证明。
所以我的问题 - 为什么各种发行版都准备 suid(尤其是 root)可执行文件作为可读和可执行文件?
我的推测包括:
- 与“ldd”一起使用的便利性
- 允许tripwire或包更新检查软件以非root身份运行
- 没关系,因为大多数发行版都是公开的,任何人都可以获取 ELF 二进制文件(安装到 VM 等)
- selinux 可以用来使这无关紧要
- 懒惰的开发者
使用 (3),隐藏公共发行版的二进制文件只能提供安全性的遮羞布 - 而 (5) 几乎是名字调用。
linux - /etc/shadow 和 suid 困境
我偶然发现了一个关于使用suid
可执行文件访问系统文件的问题。
我写了这个简短的 POC:
然后我编译并用chown root:root
和chmod u+s
(由root运行)给它suid
这是生成的可执行文件
目标文件有这些权限
当我运行程序时,它给出了以下输出:
为什么会这样?我的意思是...我正在访问该文件,root
并且可以在该文件上root
写入!
注:selinux
已禁用
想法?
c - gdb 退出而不是生成 shell
我正在尝试利用 SUID 程序。
该程序是:
我们可以很容易地看到,如果我们以某种方式将 ptr 的内容更改为以 CA 开头的某个地址,那么将为我们生成一个新的 shell。由于 ptr 通常保存一些以 FF 开头的地址,因此减少它(ptr)的方法是输入 \ 字符。所以我制作了一个包含 0x35000000 '\' 字符的文件,最后在文件末尾添加了 3 个 'a'
最后在 gdb 中,
然而,而不是产生一个外壳 gdb 是说
然后返回 gdb 提示符而不是获取 shell。我通过在适当的位置设置断点来确认 ptr 在调用 setresuid() 之前确实以 CA 开头。
此外,如果我在 gdb 之外通过管道传输,则不会发生任何事情。
Bash 提示返回。
请告诉我我在哪里犯错。
c - 可执行文件设置root suid,但是access(path, W_OK) 还是返回-1?
为什么可执行文件设置root suid,但访问(路径,W_OK)仍然返回-1?
代码:
测试运行:
bash - 将 SUID/SGID 权限设置为可执行文件
我想用一个具体的例子来说明利用缓冲区溢出的威力有多大。
为了实现这个目标,我准备了这个简单的 C 程序,称为“bo”:
我用选项编译:-fno-stack-protector 和 execstack。
一切正常,我可以启动我的 shellcode 来打开一个新的 bash。
在我的系统(Ubuntu MATE 15.10 32bit)中,我有 2 个用户:“user”(组:用户)和“admin”(组:admin),都具有 sudo 权限。
我想要做的是使“用户”能够以“管理员”的权限执行“bo”,这样当发生缓冲区溢出并执行 shellcode 时,我有一个以“管理员”权限运行的 shell(并且从此shell,如果我运行命令“id”或“whoami”,我想表明现在我们是“admin”)。
我已经看到我需要将 SUID/SGID 权限更改为“bo”。我尝试了很多方法,但是当 shellcode 运行时,我总是有一个从“用户”启动的 shell。
linux - ptrace suid 进程(在它放弃特权之后)
我知道我们不能对 suid 二进制文件执行 ptrace。但是,我想知道为什么在二进制文件将其优先权放到 uid 而不是 euid 之后我们不能执行 ptrace。
例如,在二进制文件中,suid 二进制文件在经过一些步骤后会放弃特权。
在我的情况下,当打印“whoami”时,它是进程的用户名,而不是进程的所有者。当程序等待垃圾输入时,我试图以 uid 作为用户名附加到正在运行的进程,但即使二进制文件已经放弃了特权,它也失败了。ptrace attach 是否有可能使用已保存的 uid 状态来确定我不是所有者?
c - 运行以下代码时如何调用 SIGALARM?
如何使用 set-guid bit 漏洞使用以下 3 个易受攻击的程序执行 root 拥有的文件 /bin/grade?我不是 root 也不是 bsp* 组的成员,因此我对程序的访问仅限于读取和执行。对于文件 /bin/grade,我只有读取权限,但我想将它作为组 bsp* 执行。
运行此代码时,如何从 shell 调用 SIGALRM?
我将在 shell 上调用程序
exec -a "/bin/grade" prog1 1000 &
c - -SUID- 无法以 root 身份运行“-rwsr-xr-x”文件
我正在使用 Ubuntu 16.10。
我跟着一本书,做这样的事情:
为了在不使用 sudo 命令的情况下将该文件作为 sudo 运行,在使用 gcc 编译后,我将所有者和组更改为 root。
现在,这就是我执行文件时得到的。我的 UID 是 1000。
我正在阅读的书说结果应该是这样的:
root 的 UID 是 0,对吧?这是否意味着我正在使用我自己的用户权限运行 root 拥有的-rwsr-xr-x文件?我不明白。