email.errors.HeaderParseError:标头值似乎包含嵌入的标头:



我正在尝试使用Office api的肥皂消息恢复邮件,但它为某些邮件提供"标头值似乎包含嵌入式标头"错误。 例如。

msg = MIMEMultipart()
msg['From'] = 'me@locmsglhostrnSubject: injected subject'
msg.as_string()

将错误作为电子邮件抛出:标头值 似乎包含嵌入的标头:"me@locmsglhost主题:注入的主题">

但是如果我将 msg['从'] 更改为

'hellor man: man'
'tya: Hello'
'push@#$rnPus'
'Hello nr Pushpa: World'
'@rnhello : World'

然后它按预期工作。

可能的原因是什么以及漏洞类型是什么 哑剧消息中会有吗?

你不能随心所欲地使用任何标题,这是被禁止的。

如文档中所述,

exception email.errors.HeaderParseError

。当尝试创建似乎包含嵌入标头的标头时(即,存在一个没有前导空格且看起来像标题的延续行(。


为什么它很危险,应该处理好?

首先,您可以阅读本文,它提供了一个简单的示例,如何进行SMTP标头注入攻击。

你可能会问怎么做?我的意思是你不让任何人编辑你的后端吧?

让我们想象一下,对于您的应用程序,用户可能会输入一些字段,例如'message'

msg['message'] = 'abc' #Entered by user

没关系,但如果

msg['message'] = 'abcrnreplyTo:attacker@hello.com'
#or
msg['message'] = 'abcrnTo:attacker@hello.com'

攻击者可以轻松覆盖您的电子邮件,例如发送垃圾邮件。这就是为什么它会为您进行检查的原因。


您甚至可以通过以下方式检查标头是否安全

email.header.Header('string')

让我们来看看python电子邮件库是如何进行检查的。

在源代码中搜索,Lib/email/header.py

在ln50-52中:

# Find a header embedded in a putative header value.  Used to check for
# header injection attack.
_embedded_header = re.compile(r'n[^ t]+:')

您可以尝试一下,除了您声明的示例外,您提供的所有示例都可以通过它。

由于电子邮件标题结构总是n(key_without_space):,所以nhello :通过但不nhello:

相关内容

  • 没有找到相关文章

最新更新