gpt4 book ai didi

代码漏洞

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

作为学习练习,我试图找出以下代码片段中的弱点,以获取可执行文件所有者的访问权限。

setresuid(geteuid(), geteuid(), geteuid());
system("/usr/bin/id");

FWIW,我看不到任何东西。我知道 setresuid 会将 uid 设置为文件的所有者,但我无法将所有者更改为除我自己以外的任何人。我考虑过尝试通过更改 PATH 来重定向 id 命令,但是由于它使用绝对路径,所以该技巧不起作用。提示?

最佳答案

可以利用一个模糊(现已修补)的问题,该问题涉及未经检查地使用 setresuid():

  1. 在 Linux 2.6 及更高版本中,如果进程以 RLIMIT_NPROC(即, ulimit -n 设置的进程数量限制,如果 setresuid() 成功,目标 UID 将有太多进程。

    但是,在 Linux 3.1 及更高版本下,setresuid() 失败会在进程上设置一个标志,这样任何后续的 execve() 调用都会失败。如果 setresuid() 失败,这将阻止 system() 在任何现代 Linux 上运行。

  2. 除非有一些更大的上下文被省略,否则可以设置环境变量(例如,LD_PRELOAD),这会导致代码被注入(inject)到 /usr/bin/id。对于 setuid 可执行文件,这些变量会被忽略,但对于 setuid 可执行文件启动的可执行文件,这些变量不会被忽略,正如此处发生的那样。

如果您在易受攻击的系统上(Linux 2.6 到 3.0),您可以通过设置环境变量并导致 setresuid() 失败来利用此漏洞,这样 /usr/bin/id 以 root 身份运行用户指定的代码。

关于代码漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109870/

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