编码员征服安全。分享与学习系列 - CRLF注入

2019年7月25日发布
作者:Jaap Karan Singh
案例研究

编码员征服安全。分享与学习系列 - CRLF注入

2019年7月25日发布
作者:Jaap Karan Singh
查看资源
查看资源

对于像这样的博客或文章,读者会得到标点符号的帮助。例如,句号告诉读者一个句子在哪里结束,而逗号则在列表中分隔文章或插入硬性停顿以帮助分隔观点。对于一个写得很好的博客(比如这篇),标点符号几乎是看不见的,只是我们多年前学会处理的标准背景代码的一部分。

但是,如果有黑客进入这篇文章,在错误的地方插入奇怪的标点符号,会发生什么?就像这样。

在不改变文本的情况下,它可以使处理信息变得更加困难!

这基本上就是CRLF注入攻击的情况。CRLF字母代表回车和换行,它们被单独或一起用来注意一行的终止。如果攻击者能够在现有的应用程序中插入CR或LF代码,他们有时可以改变其行为。与大多数攻击相比,其效果不太容易预测,但对目标组织的危险却不小。

在这一集里,我们将学习。

  • 攻击者如何触发CRLF注入
  • 为什么注射CRLF是危险的
  • 可以修复这个漏洞的技术。

攻击者如何触发CRLF注入?

在现有的代码中注入CRLF字符并试图产生一个特定的结果是相当困难的,尽管不是不可能。攻击者需要根据操作系统和目标系统的其他因素使用不同的CRLF组合,所以难度更大。例如,现代Windows机器需要CR和LF来结束一个行,而在Linux上,只需要LF代码。HTTP请求总是需要一个精确的CRLF代码来结束一个行。

但是,除了CRLF攻击难以实施,甚至难以预测其结果这一事实之外,它们的启动方式与其他注入型攻击基本相同。恶意用户只需将数据输入到网站或应用程序中允许输入的任何区域,只是他们输入CRLF代码,而不是在正常输入数据之后。

例如,攻击者可以在HTTPS头的末尾输入代表回车的ASCII码(%0d)和代表换行的ASCII码(%0a)。然后,整个查询将看起来像这样。

https://validsite.com/index.php?page=home%0d%0a

如果数据没有经过消毒或过滤,上述代码可能会让一些奇怪的事情在目标应用程序或网站上发生。

为什么CRLF注射剂是危险的?

虽然CRLF注入攻击不如大多数人那么精确,但至少在某些时候,它们可能相当危险。在低端,增加一个额外的行可以搞乱日志文件,这可能会触发自动网络安全防御系统,提醒管理员注意一个非问题。然而,这可能被用来转移资源,使其远离同时发生的实际入侵行为。

但是CRLF攻击也可以直接造成破坏。例如,如果一个应用程序被设计为接受命令,然后搜索一个特定的文件,在查询中加入CRLF代码可能会触发应用程序将该进程显示在屏幕上,而不是将其隐藏起来,这可能会为攻击者提供有价值的信息。

CRLF注入也可用于创建所谓的响应分割攻击,即行末代码将一个有效的响应分割成多个部分。这可以让黑客控制CRLF代码之后的头,可以用来注入额外的代码。它也可以被用来创造一个缺口,攻击者可以在被CRLF攻击破坏的部分之后的任何一行完全注入他们自己的代码,并可能触发另一种形式的攻击。

消除CRLF注入漏洞

如果要从这个系列中得到一个关键信息,那就是永远不要相信用户输入。我们在这个系列中所涉及的大多数漏洞都以某种方式涉及用户输入区,CRLF注入缺陷也不例外。

在用户可以输入的任何地方,必须应用过滤器,以防止注入可能被应用程序或服务器误解的未经授权的代码。对于CRLF攻击来说,锁定HTTP头是特别重要的,但你也不能忘记GET和POST参数,甚至是Cookies。一个专门阻止CRLF代码帮助触发进一步的注入的好方法是对发回用户浏览器的任何东西应用HTML编码。

关于CRLF注射液的更多信息

要进一步阅读,你可以看看OWASP对CRLF注入的看法。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。

查看资源
查看资源

作者

Jaap Karan Singh

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

编码员征服安全。分享与学习系列 - CRLF注入

2019年7月25日发布
作者:Jaap Karan Singh

对于像这样的博客或文章,读者会得到标点符号的帮助。例如,句号告诉读者一个句子在哪里结束,而逗号则在列表中分隔文章或插入硬性停顿以帮助分隔观点。对于一个写得很好的博客(比如这篇),标点符号几乎是看不见的,只是我们多年前学会处理的标准背景代码的一部分。

但是,如果有黑客进入这篇文章,在错误的地方插入奇怪的标点符号,会发生什么?就像这样。

在不改变文本的情况下,它可以使处理信息变得更加困难!

这基本上就是CRLF注入攻击的情况。CRLF字母代表回车和换行,它们被单独或一起用来注意一行的终止。如果攻击者能够在现有的应用程序中插入CR或LF代码,他们有时可以改变其行为。与大多数攻击相比,其效果不太容易预测,但对目标组织的危险却不小。

在这一集里,我们将学习。

  • 攻击者如何触发CRLF注入
  • 为什么注射CRLF是危险的
  • 可以修复这个漏洞的技术。

攻击者如何触发CRLF注入?

在现有的代码中注入CRLF字符并试图产生一个特定的结果是相当困难的,尽管不是不可能。攻击者需要根据操作系统和目标系统的其他因素使用不同的CRLF组合,所以难度更大。例如,现代Windows机器需要CR和LF来结束一个行,而在Linux上,只需要LF代码。HTTP请求总是需要一个精确的CRLF代码来结束一个行。

但是,除了CRLF攻击难以实施,甚至难以预测其结果这一事实之外,它们的启动方式与其他注入型攻击基本相同。恶意用户只需将数据输入到网站或应用程序中允许输入的任何区域,只是他们输入CRLF代码,而不是在正常输入数据之后。

例如,攻击者可以在HTTPS头的末尾输入代表回车的ASCII码(%0d)和代表换行的ASCII码(%0a)。然后,整个查询将看起来像这样。

https://validsite.com/index.php?page=home%0d%0a

如果数据没有经过消毒或过滤,上述代码可能会让一些奇怪的事情在目标应用程序或网站上发生。

为什么CRLF注射剂是危险的?

虽然CRLF注入攻击不如大多数人那么精确,但至少在某些时候,它们可能相当危险。在低端,增加一个额外的行可以搞乱日志文件,这可能会触发自动网络安全防御系统,提醒管理员注意一个非问题。然而,这可能被用来转移资源,使其远离同时发生的实际入侵行为。

但是CRLF攻击也可以直接造成破坏。例如,如果一个应用程序被设计为接受命令,然后搜索一个特定的文件,在查询中加入CRLF代码可能会触发应用程序将该进程显示在屏幕上,而不是将其隐藏起来,这可能会为攻击者提供有价值的信息。

CRLF注入也可用于创建所谓的响应分割攻击,即行末代码将一个有效的响应分割成多个部分。这可以让黑客控制CRLF代码之后的头,可以用来注入额外的代码。它也可以被用来创造一个缺口,攻击者可以在被CRLF攻击破坏的部分之后的任何一行完全注入他们自己的代码,并可能触发另一种形式的攻击。

消除CRLF注入漏洞

如果要从这个系列中得到一个关键信息,那就是永远不要相信用户输入。我们在这个系列中所涉及的大多数漏洞都以某种方式涉及用户输入区,CRLF注入缺陷也不例外。

在用户可以输入的任何地方,必须应用过滤器,以防止注入可能被应用程序或服务器误解的未经授权的代码。对于CRLF攻击来说,锁定HTTP头是特别重要的,但你也不能忘记GET和POST参数,甚至是Cookies。一个专门阻止CRLF代码帮助触发进一步的注入的好方法是对发回用户浏览器的任何东西应用HTML编码。

关于CRLF注射液的更多信息

要进一步阅读,你可以看看OWASP对CRLF注入的看法。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊的信息,请访问Secure Code Warrior 博客。

我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。