gpt4 book ai didi

linux - 更改 Linux 命令

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:46 26 4
gpt4 key购买 nike

我正在学习 UNIX 安全性,特别是如何利用 setuid C 程序来调用 system() 命令,方法是创建 system() 调用的命令的自定义版本,然后执行恶意操作而不是预期的操作。我已经为 cat 命令创建了一个 Linux 脚本,但我不确定将其放在哪里以及如何操作才能允许通过其文件名而不是 ./cat

调用它

我想我需要将目录添加到$PATH,但是当我尝试时,我得到了fork:资源暂时不可用

** 更新 **

所以在我的机器上只是为了测试一下,我编写了 C 程序

#include <stdlib.h>
#include <stdio.h>

int main() {
system("ls");
}

我写了一个新的 ls 命令

#!/bin/bash

echo "Ran ls command"

并使其可执行。然后我运行 export PATH="/path/to/command/:$PATH"

所以我发现原来的问题是我的自定义 ls 命令调用了真正的 ls ,这导致了 fork 问题(我认为),但现在我想知道何时在另一台机器上运行它。

如果易受攻击的setuid进程是

#include <stdio.h>
#include <stdlib.h>

int main() {
system("cat /some/file");
}

我想编写一个自定义 cat 命令

#!/bin/bash

/path/to/file/

该文件是否会在 setuid 进程或我的用户/组 ID 下运行,因为我调用了该进程?我知道这并不完全是我最初要求的,但如果有人至少能向我指出任何好的资源,那就太好了。

最佳答案

will that file be run under the user/group ids of the setuid process or of me

有趣的是,在这种特定情况下,它将像您一样运行。

这是因为 shebang 是 #!/bin/bash 并且 bash 有一个安全功能,会在启动时删除 suid(基于 UID != EUID)。

如果您使用#!/bin/dash或任何其他可执行文件运行它,它将以suid用户身份运行。

关于linux - 更改 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com