Web安全—CRLF注入漏洞

CRLF注入漏洞详解:

CRLF简介:CRLF指的就是回车符(CR,ASCII-13,\r,%0d)和换行符(LF,ASCII-10,\n,%0a),操作系统就是通过这个标识进行换行的,相当于我们键盘的回车键。
HTTP协议中的CRLF:在HTTP协议报文中,CRLF随处可见,请求行与请求头通过一个CRLF(\r\n)隔开,请求头(header)和请求主题(body)之间通过两个CRLF(\r\n)隔开,如下图:
在这里插入图片描述
CRLF注入漏洞简介:由于服务端未对用户输入的参数进行过滤,攻击者可通过构造恶意的HTTP请求在其添加多余的CRLF(\r\n)来添加恶意参数和HTML代码,从而形成CRLF注入漏洞。

CRLF注入漏洞危害:

1,Cookie会话固定
2,反射性XSS攻击(可过WAF)

漏洞利用(原理):

Cooki会话固定:
步骤一:在URL参数中构造%0d%0aSet-Cookie:crlf=ture
在这里插入图片描述
步骤二:查看HTTP响应包,发现HTTP响应头存在了Set-Cookie:crlf=true
在这里插入图片描述
原理分析:
查看源代码发现:当服务端对用户的输入不进行过滤和排查时,$_GET变量接受的URL会直接作为响应头中的Location字段返回,同时又因为我们在请求的URL中添加了一个CRLF,所以返回的响应头中会存在我们构造的Set-Cookie:crlf=ture参数
在这里插入图片描述
反射性XSS攻击:
如果此时我们在URL中将%0d%0aSet-Cookie:crlf=ture修改为%0d%0a<script>alert('xss')</script>,那么服务端返回界面将会如下图:
在这里插入图片描述
同时又因为添加了两个CRLF的情况,JS脚本会被识别为HTTP响应正文被浏览器执行,那么就会产生反射性XSS攻击

CRLF注入漏洞防护建议:

1,服务端前增加WAF进行防护
2,服务端过滤 \r ,\n 之类的行结束符,避免输入的数据污染其他 HTTP 首部字段

相关文章:
1,CRLF注入漏洞(响应截断)攻击实战
2,CRLF注入漏洞

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CRLF注入漏洞是一种常见的网络安全漏洞,它在代码中未对输入进行正确的过滤和验证,导致攻击者可以利用换行符(CRLF:Carriage Return Line Feed)来执行恶意代码或实施其他攻击。 要复现CRLF注入漏洞,首先需要找到存在漏洞的应用程序。这些应用程序通常会接收用户的输入,并在服务器上生成响应,而在生成响应时未能很好地处理输入的换行符。 我们可以通过使用一个简单的示例来演示CRLF注入漏洞的复现。假设我们有一个简单的表单,允许用户提交评论,并在页面上显示评论内容,我们可以通过评论框中的输入来复现漏洞。 首先,我们在评论框中输入以下内容: ``` 本次评论测试漏洞%0D%0AContent-Length: 0%0D%0A%0D%0AHTTP/1.1 200 OK%0D%0AContent-Type: text/html%0D%0A%0D%0A<html><body>Hacked!</body></html> ``` 在上述输入中,`%0D%0A`表示换行符。我们在注入的内容中使用了换行符,然后添加了一些伪造的HTTP响应头,包括`Content-Length: 0`和`HTTP/1.1 200 OK`。最后,我们添加了一个简单的HTML页面。 当我们提交评论后,应用程序未能正确处理换行符,导致我们的注入成功。服务器在生成响应时,将我们注入的内容也作为响应头部分显示出来。 这样,我们就成功利用CRLF注入漏洞,并在生成的页面上显示了我们的内容。 为了防止CRLF注入漏洞,开发者应该对用户的输入进行正确的过滤和验证。在处理用户的输入时,应该移除或转义包含换行符的内容,以防止攻击者注入恶意内容并执行攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值