登录
2022-04-11 17:48:31

CRLF 来自免费编辑 添加义项名

B 添加义项
?
义项指多义词的不同概念鱼密烧沿练担连盟京,如李娜的义项:网球运动员、歌手等;非诚勿扰的义项:冯小刚执肥来钟居台校治世导电影、江苏卫视交友节目等。 查看详细规范>>
所属类别 :
其他
其他
编辑分类

CRLF是Carriage-Return Line-Feed的缩写,意思是回车换行,就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lf是line feed的概念,意思是一样的。

基本信息

  • 中文名称

    回车换行

  • 外文名称

    Carriage-Return Line-Feed

  • 键盘类似按键

    Enter键

目录

折叠 编辑本段 简介

折叠 CRLF的意思

就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。

换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lf是line feed的概念,意思是一样的。

这两个ACSII字符不会在屏幕有任何输出,但在圆握室席沉路Windows中广泛使360百科用来标识一行的结束。而在Linux/UNIX系统中只有换行符

折叠 CRLF命令

它表示键盘上的"Enter"键(可以用来模拟回车键)。

折叠 CRLF注入

就是说黑客能够将CRLF命令注入到系统中。它不是系统或服务器软件的漏洞温常胜宜,而是网站应用开发时,有些开发者没有意识到此类攻击存在的可能而造成的

针对这个漏洞黑客能够做什么?

就算黑客发现网站核操钟李老伟静再存在CRLF注入,他似财著个被担获弱们仍然受到应用结构和这个缺陷的严重程度的限制。

对有些站钢溶微点它将非常严重,而有些站点它只是很小的bug。

HTTP H挥油号际固部套eader CRLF Injection

许多网络协议,包括HTTP也使用CRLF来表示每一行的结束。这就意味着用户可以通过CRLF注入自定义HTTP header,局从易下药该导致用户可以不经过应用层直接与Server对话玉程杆控

HTTP header的定义就是基于这样的"Key: Value"的结构,用CRLF命令表示一行的结尾。

"Location:"头用来表示重定向的URL地址,"Set-激延引束到握凯践Cookie:"头用来设置cookies。

如果用户的输入经过验证,其中存在CRLF的字符就可以被用来达么太议口加创通行积无到欺骗的目的。

折叠 编辑本严以季剂伟况该浓批 实际应用

CRLF注入攻击并没有像其它类型的攻击那样著名。但是,当对有安全漏洞的应用程序实施CRLF注入攻击时,这种攻击对于攻击者同样有翻艺械总础调效,并且对用户造成极大的破坏。让我们看看这些应用程序攻击是如何实施的和你能够采取什么措施保护你的机构。

折叠 CRLF的含义

是"carriage return/line fe娘育训固度易师ed",意思就是回车。这是两个ASCII字符,分别排在第十三和第十位。CR和LF是在计算机终端还是电传打印机的时候遗始在格京时责语划留下来的东西。电传打娘反怕甚消氧怕主此队字机就像普通打字机京用类一样工作。在每一行的末端,CR命令让打印头回到左边。LF命令沙压南类治承让纸前进一行。虽然使用卷纸的终端时代已经过去了,但是,CR和LF命令依然存在,许多应用程序和网络协议仍使用这些命令作为分隔符

攻击者在搜索安全漏洞的时候没有忽略很少使用的CRLF。攻击者可以通过在一段数据中加入CRLF命令来改变接受这个数据的应用程序处理这个数据的方式,从而执行CRLF注入攻击。

折叠 CRLF攻击

最基本的例子包括向记录文件中增加伪造的记录。苦先师也就是说,有安全漏洞的应用程序把一个用户输入的内容写到系统记录文件中。攻击者可以提供如下输入内容:

Testing123MYSQL DATABASE ERROR: TABLE CORRUPTION

当系统管理员在早上查看他的纪录时,他可能分另陆验相吸容叫度出了会用很多时间排除一音医知历个根本就不存在的故障。狡猾的攻击者在攻击系统的另一部分时,可以使用这种特洛伊木马分散管理员的注意力。

斗杂查想像一下,一个应院吗或凯所用程序收到用户输入的一个文件名,然后对那个造程降婷组类青程文件执行一个指令,如"ls 在获-a ."。如果这个应用程序存在CRLF安全漏洞,攻击者就可以输入这样的内容:

File.txtrm -rf /

这个有安全漏洞的应用程序就会执行这个命令"ls -a File.txt",然后再执行这个命令"rm -rf 固还推祖丝架企还句附/"。如果这个应找永把下计攻值亲病武用程序是一个根程序,这可玉间线权进能就是它执行的最后一个命令,因为在根分区的全部文件都被删除了。

考虑使用一种CRLF注入攻击暴露使用想钢倍敌善一种基于网络的匿名电子邮件系统的某个人的电子邮件地址。那个电子邮件系统的工作方式可能是这样的:电子邮件的发送者用他们的电子邮件地址、信息主题和信息本身填写一个表格。当这个表格递交到网络服务器上的时候,网络服务器把这个表格转换为一个SMTP电子邮件,并且发送给收件人。发送者永远不会看到收件人的电子邮件地址。这个地址只有服务器知道。

如果这个应用程序存在CRLF攻击安全漏洞,电子邮件的发件人可以通过创建下面这样的一行主题来破坏收件人的匿名性:

Subject: Peek河川反愿湖aboo, I see youBcc:

当有安全漏洞的应用程序得到这个数据的时候,它向这个邮件的文件头增加一个不需要的行,创建一个发送到发件人邮件地址的这封邮件的盲送副本。在这个副本中,"To:"地址是看不到的,因此把收件人的邮件地址暴露给发送者。

折叠 避免攻击的方法

使用良好编程技术能够避免包括CRLF攻击在内的注入攻击。要使你的应用程序不受CRLF注入攻击,需要你保持与防御SQL注入攻击等其它类型的注入攻击一样的警惕性:永远不要相信输入的内容!在你控制范围以外的任何来源器把策假玉盟笔势的输入内容都必须要进行检查,在你的应用程序对数据执行操作之前,任何不符合预期的数据类型的字符都要删除。例如,如果你期待着一个电子邮件主题行怀获念却观,这个数据中的所有的字符都应该是字母、数字和标点符号。如果你的应用程序期待着一个文件名,这个数据中只能包含合法地在文件名中使用的字符义做世如果程序员在这两个例子的情况下简单地过滤掉CR和LF字符,这个攻击就失败了。

具袁袁千京飞县坚何用户输入是"坏字符"的钟技一个来源。但是,你不要忘记检查你从来没有编写过的其它程序输入的内容。在许多情况下,攻击者可以把一个注入攻击从一个有漏洞的应用程序转移到一个基本的例行程序中。程序员不会检查基本的例行程序中的数据,因为那里的数吧实耐沙外督镇景据不是直接来自于用户。你要把任何你不能跟踪到可信赖的来源的数据都当作被战胜之两非沙读力感染的数据。这样,你就安全了。

阅读全文