使用'。'设置环境variables'PATH'的危险?

我有一个即将到来的testing,看看过去几年,他们总是问一个类似的问题。 基本上可以通过设置如下所示的安全漏洞:

PATH=".:/bin:/usr/bin" 

我得到这个PATH决定当用户调用诸如“ls”之类的命令时要search可执行文件的绝对目录。 我只是不确定上面会导致什么样的行为。

看来它会首先检查“/ bin”目录的当前目录(基于“。”),然后进入绝对目录“/ usr / bin”(如果没有的话)。 问题是,如果一个叫做“ls”的用户和一个攻击者在当前目录下创build了一个“/ bin”,它可能包含一个ls版本,例如删除一堆文件。

这是正确的轨道还是我误解了PATH符号?

PATH = “:/ bin中:在/ usr / bin中”

你误解了符号,冒号是分隔符,所以这将检查下列地方(按顺序)

  1. “” 当前目录
  2. “/ bin”通常是存储关键二进制文件的地方
  3. “/ usr / bin”通常是存储较less关键二进制文件的地方

在path上有“/ bin”和“/ usr / bin”是完全正常的。

有“。” 在path上,特别是作为首要的search是危险的,因为当前目录经常是可以由一个或多个其他用户写入的目录。 这些用户可以在你可能无意中执行的目录中创build文件(例如创build一个名为“ls”的文件),让他们能够让你的用户执行他们的代码。