我想知道使用“wget”及其选项时是否可能遇到任何漏洞。具体来说,我使用了基准测试脚本来测试我的 VPS 的性能。命令如下:
wget -qO- bench.sh | bash
我知道 -q0- 的作用,但找不到任何资源解释命令末尾的“bash”参数。
答案1
诸如以下的命令
wget -qO- bench.sh | bash
意思是“从 bench.sh 获取文件并使用bash
”运行它。
这实际上与
wget -q -Otestfile bench.sh
bash testfile
但不需要临时文件。
所以你所做的就是下载并运行不受信任的代码。今天你可以下载该文件并检查它是否有“讨厌的”命令,但明天它仍然是干净的吗?还是第二天?
这是安全问题吗?有潜力。
您需要确定对运行 bench.sh 的人员的信任程度,以及有人尝试闯入服务器并进行未经授权的更改的可能性有多大。另请注意,连接是通过的http
,因此可能会受到“中间人”攻击,从而在数据发送到您的计算机时更改数据。
就我个人而言,我不会以这种方式运行脚本;但我认识很多人这样做。
答案2
不是bash
的参数wget
。这里发生的事情是,您正在下载一些东西wget
并将其传递给bash
运行。
是的,这里有一个安全问题。问题是你正在运行从某个地方获取的 shell 脚本,而没有查看脚本本身。如果你从wget
某种形式的值得信赖的来源,那么这可能没问题。如果没有,那么我建议将其下载到文件中第一的,检查它,然后将其作为 shell 脚本运行(如果您认为这样做是安全的)。
有些特洛伊木马以 shell 脚本形式分发,要求用户下载脚本并运行它。 Linux.MulDrop.14(比特币矿工)就是这样一个脚本,针对较旧的 Raspberry Pi。
答案3
基本上做-qO-
的是
-q, --quiet quiet (no output)
安静地运行(不产生任何日志/诊断输出)
-O, --output-document=FILE write documents to FILE
将输出(下载的文件)发送到默认-
位置stdout
。
因此,无论您下载什么,都会通过管道传输来bash
执行。
如果有人入侵服务器并用rm -rf ~
(或类似的)替换脚本,您的所有文件都将丢失。这取决于您所处的环境来评估这是否是一个问题。
要分析脚本的作用,您可以使用以下命令下载它
wget -q -O bench.sh bench.sh
然后bench.sh
在文本编辑器中打开进行查看。