渗透测试步骤

(1)应当轮流提交下面的每个测试字符串作为每一个参数,在相关位置插入电子邮件地址。

img316a

(2)留意应用程序返回的任何错误消息。如果这些错误与电子邮件功能中的任何问题有关,确定是否需要对输入进行调整,以利用漏洞。

(3)应用程序的响应可能并不会以任何形式表示一个漏洞存在或被成功利用。应该监控指定的电子邮件地址,看是否收到任何电子邮件。

(4)仔细检查生成相关请求的HTML表单。它们可能提供与服务器端使用的软件有关的线索。其中可能包含一个用于指定电子邮件收件人地址的隐藏或禁用字段,可以直接对其进行修改。

img004  提示  向应用程序支持人员发送电子邮件的功能常常被视为外围功能,应用程序可能并不对其采用与主要功能相同的安全标准,或者进行严格的测试。而且,因为它们需要连接不常用的后端组件,应用程序往往通过直接调用相关操作系统命令来执行它们。因此,除探查SMTP注入漏洞外,还应极其仔细地检查所有与电子邮件有关的功能,查找OS命令注入漏洞。

10.5.4 防止SMTP注入

如果对提交给电子邮件功能或SMTP会话使用的任何用户提交的数据进行严格的确认检查,就可以防止SMTP注入漏洞。因此,应根据其用途对每项数据进行尽可能严格的确认。

img002 应根据一个适当的正则表达式检查电子邮件地址(当然应拒绝所有换行符)。

img002 消息主题不得包含任何换行符,并应实施适当的长度限制。

img002 如果消息内容被一个SMTP会话直接使用,那么应禁止使用仅包含一个点字符的消息行。