专栏名称: 黑伞安全
安全加固 渗透测试 众测 ctf 安全新领域研究
目录
相关文章推荐
岚山发布  ·  起猛了!一夜之间,岚山变“花海”! ·  2 天前  
岚山发布  ·  起猛了!一夜之间,岚山变“花海”! ·  2 天前  
天玑-无极领域  ·  这几天,流行用Grok3 ... ·  2 天前  
GS权益虚拟卡卷数字终端  ·  天天白嫖外卖红包!这个公众号承包你一年的奶茶钱 ·  3 天前  
GS权益虚拟卡卷数字终端  ·  天天白嫖外卖红包!这个公众号承包你一年的奶茶钱 ·  3 天前  
天玑-无极领域  ·  奇怪,连续多人问:怎样用deepseek赚钱 ... ·  3 天前  
51好读  ›  专栏  ›  黑伞安全

CRLF (%0D%0A) Injection

黑伞安全  · 公众号  ·  · 2020-11-03 19:00

正文

什么是CRLF?

当浏览器向Web服务器发送请求时,Web服务器用包含HTTP响应标头和实际网站内容(即响应正文)的响应进行答复。 HTTP标头和HTML响应(网站内容)由特殊字符的特定组合分隔,即回车符和换行符。 简而言之,它们也称为CRLF。

Web服务器使用CRLF来了解新的HTTP标头何时开始以及另一个标头何时结束。 CRLF还可以告诉Web应用程序或用户,新行以文件或文本块开头。 CRLF字符是标准的HTTP / 1.1消息,因此任何类型的Web服务器都可以使用它,包括 Apache ,Microsoft IIS以及所有其他服务器

什么是CRLF注入漏洞?

在CRLF注入漏洞攻击中,攻击者将回车符和换行符插入用户输入中,以欺骗服务器,Web应用程序或用户以为对象已终止而另一个已启动。 因此,CRLF序列不是恶意字符,但是它们可用于恶意目的,HTTP响应拆分等。

Web应用程序中的CRLF注入

在Web应用程序中,CRLF注入会产生严重影响,具体取决于应用程序对单个项目的处理方式。 影响范围可能从信息泄露到代码执行,直接影响Web应用程序安全漏洞。 实际上,即使CRLF注入攻击从未在OWASP十大列表中未列出,它也会对Web应用程序产生非常严重的影响。 例如,也可以按照以下示例中的说明在管理面板中操作日志文件。

日志文件中的CRLF注入示例

想象一下管理面板中的日志文件,其输出流模式为 IP-时间-访问路径, 如下所示:

123.123.123.123 - 08:15 - /index.php?page=home

如果攻击者能够将CRLF字符注入HTTP请求,则他可以更改输出流并伪造日志条目。 他可以将Webs应用程序的响应更改为以下内容:

/index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit

%0d和%0a是CR和LF的url编码形式。 因此,在攻击者插入这些字符并由应用程序显示之后,日志条目将如下所示:

IP-时间-访问路径

123.123.123.123 - 08:15 - /index.php?page=home&127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit

因此,通过利用CRLF注入漏洞,攻击者可以伪造日志文件中的条目,以掩饰自己的恶意行为。 攻击者实际上是在进行页面劫持并修改响应。 例如,设想一种情形,攻击者拥有管理员密码并执行了 strictedaction 参数,该参数只能由管理员使用。

问题是,如果管理员注意到未知IP使用了 strictedaction 参数,则会注意到出了点问题。 但是,由于现在看来该命令是由本地主机发出的(因此可能是由有权访问服务器的人(例如管理员)发出的),因此看起来并不可疑。

服务器将从%0d%0a开始的整个查询部分作为一个参数进行处理。 之后,还有另一个带有参数 strictedaction的 将被服务器解析为另一个参数。 实际上,这将与以下查询相同:

/index.php?page=home&restrictedaction=edit

HTTP响应拆分

描述

由于HTTP响应的标头及其主体由CRLF字符分隔,因此攻击者可以尝试注入这些响应。 CRLFCRLF的组合将告诉浏览器标题结束并且主体开始。 这意味着他现在能够在存储html代码的响应主体内写入数据。 这可能会导致跨站点脚本漏洞。

导致XSS的HTTP响应拆分示例

想象一个设置自定义标题的应用程序,例如:

X-Your-Name: Bob

标头的值是通过名为“名称”的get参数设置的。 如果没有URL编码,并且该值直接反映在标头内,则攻击者可能会插入上述CRLFCRLF组合以告知浏览器请求主体开始。 这样,他就可以插入诸如XSS有效负载之类的数据,例如:

?name=Bob%0d%0a%0d%0a<script>alert(document.domain)script>

上面将在受攻击域的上下文中显示一个警报窗口。

实战案例:

服务器通过在响应中注入CRLF字符来响应此请求,您将发现已在http响应中设置了“位置” http标头,并通过CRLF注入了值“http://www.evilzone.org”屏幕下方的有效载荷

成功重定向到了攻击者网站“ evilzone.org”。














   
EXP:/%0d%0aLocation:%20http://myweb.com

   
Location: http://myweb.com

   
http://www.example.com/somepage.php?page=%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2025%0d%0a%0d%0a%3Cscript%3Ealert(1)%3C/script%3E

您可以 在URL路径内 发送有效负载 以控制 来自服务器 响应

http://stagecafrstore.starbucks.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3Ehttp://stagecafrstore.starbucks.com/%3f%0D%0ALocation://x:1%0D%0AContent-Type:text/html%0D%0AX-XSS-Protection%3a0%0D%0A%0D%0A%3Cscript%3Ealert(document.domain)%3C/script%3E

HTTP标 头注入

描述

通过利用CRLF注入,攻击者还可以插入HTTP标头,这些标头可用于破坏安全机制,例如浏览器的XSS过滤器或同源策略。 这使攻击者可以获得诸如CSRF令牌之类的敏感信息。 他还可以设置cookie,可以通过将受害者登录到攻击者的帐户中或利用其他无法利用的 跨站点脚本(XSS)漏洞 来利用这些cookie

HTTP标头注入示例以提取敏感数据

如果攻击者能够注入可激活CORS(跨源资源共享)的HTTP标头,则他可以使用javascript来访问受SOP(相同源策略)保护的资源,从而防止来自不同源的站点之间的相互访问。

CRLF注入漏洞的影响

CRLF注入的影响各不相同,并且还包括跨站点脚本对信息披露的所有影响。







请到「今天看啥」查看全文