![带有 SGID 位且只读并执行的 php 文件是否存在安全问题?](https://linux22.com/image/146780/%E5%B8%A6%E6%9C%89%20SGID%20%E4%BD%8D%E4%B8%94%E5%8F%AA%E8%AF%BB%E5%B9%B6%E6%89%A7%E8%A1%8C%E7%9A%84%20php%20%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98%EF%BC%9F%20.png)
我发现 php 文件SGID 位和只读&执行。该团体是根。这是一个问题吗?
因为用户需要使用我们的帐户运行 php 解释器,这是否会导致权限升级?
比如,用户www-数据跑步php作为www-数据并调用该文件SGID位,他能成为root吗?
php path/to/file.php
答案1
是的;如果直接在启用了 sgid-on-!# 的操作系统上运行,并且由于缺乏输入卫生等原因,php 文件可能被欺骗写入任意文件,则 sgid:root 将以 root 身份运行该文件。
这是一个很大的 IF,但建议进行深度防御,因为错误很多。
测试suid;
./test.php && whoami
root
www-data
其中 test.php 包含
#!/usr/bin/php
echo exec('whoami');
记录现代实现如何处理利用 sgid 的有趣方式
https://www.in-ulm.de/~mascheck/various/shebang/#setuid
注意#! simlink 攻击是从 1983 年到 1993 年的一个问题,在此之前 shebang 不受支持,之后它得到了更安全的实施。