linux - bash 中存在哪些注入(inject)漏洞(如果有的话),我该如何防范它们?

标签 linux security bash procmail

我有一个 bash 脚本,我正在通过 procmail 启动它。 Procmail 将电子邮件中的 subjectfrom 字段作为参数传递给 bash 脚本。由于这些值未经过任何处理,我试图弄清楚 bash 中是否存在任何有人可以利用的注入(inject)漏洞,如果存在,我可以采取哪些措施来防范这些漏洞。下面是一些示例代码来说明发生了什么:

#!/bin/bash
/usr/sbin/sendmail -t <<EOF
From: "myhost Administrator" <admin@myhost.example.com>
To: john_doe@gmail.com
Subject: An email subject

You've received a new email.
It has a subject of "$2"
It was sent from "$1".
EOF

这个 bash 脚本将由 procmail 使用 .procmailrc 脚本调用,如下所示:

:0
* ^From:\s*\/.*
{
 FROM = "$MATCH"
}

:0
* ^Subject:\s*\/.*
{
 SUBJECT = "$MATCH"
}

:0 c:
* ^To:.*@example.com
| /home/john_doe/examplescript.bash "$FROM" "$SUBJECT"

我想知道有关注入(inject)漏洞的两个方面是脚本的实例化:

/home/john_doe/examplescript.bash "$FROM" "$SUBJECT"

以及脚本中变量的使用。

/usr/sbin/sendmail -t <<EOF
From: "myhost Administrator" <admin@myhost.example.com>
To: john_doe@gmail.com
Subject: An email subject

You've received a new email.
It has a subject of "$2"
It was sent from "$1".
EOF

如果你好奇,here is the actual use case that brought this question to my mind

最佳答案

为了避免注入(inject)问题,您还可以通过一个脚本将所有消息通过管道传输到您关心的地址,该脚本从标准输入读取消息并在本地解析出您感兴趣的 header 。

然后,您可以使用以您选择的脚本语言提供的库与本地运行的邮件服务器进行 SMTP 通信。

这样,就没有命令执行,也无需担心未过滤的输入被用作程序的参数。

关于linux - bash 中存在哪些注入(inject)漏洞(如果有的话),我该如何防范它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4587509/

相关文章:

linux - 我在哪里可以找到 Linux 内核源代码树的版本?

security - 为什么色情网站会出现在我的 Google Analytics(分析)数据中?

iOS:CCCrypt() kCCOptionECBMode 和 kCCModeCBC 哪个更安全

linux - 混淆输出重定向到 2>&1?

bash - 如何将 postgres 查询从远程计算机保存到文件

linux - 在 Plesk 11 的 shellscript cron 作业中找不到命令错误

linux - 调试事后 dlopen() 句柄?

linux - `sql/cyanaudit--1.0.0.sql' , `installdata' 需要

java - 创建用户帐户时记录和记录暴力攻击的正确方法

regex - Linux中的SED命令用脚本编辑文件