CRLF&&HRS知识点

CRLF注入是一类注入漏洞。是“回车+换行”的简称,又叫做回车换行符。
表示为\r\n,编码之后是%0d%0a。这个在HTTP协议中表示消息头与消息体之间的分隔(SSRF中的gopher协议里面也有这个点)。浏览器就是根据这两个CRLF来分离HTTPHeader与HTTPBody的。从而把HTTP内容显示出来。所以,如果我们能够控制HTTP消息头的字符,那么我们就能够注入一些恶意的换行。
从而能够注入一些会话的Cookie或者HTML代码,所以CRLFInjection又叫做HTTPRespenseSplitting,简称HRS。
在和 HTTP 请求或响应头组合时,这可以用于表示一行的结束,并且可能导致不同的漏洞,包括 HTTP 请求走私和 HTTP 响应分割。

插几句话:
我们控制 User-Agent因为 http header 里有重要的 Content-TypeContent-Length 。我们想要进行 CRLF注入 ,就势必要控制这两项才能实现。而 User-Agent 的http header 位置恰好位于这些之上,所以可以进行对这两项的覆盖,
欧克

对 HTTP 请求走私而言,它通常在 HTTP 请求传给服务器,服务器处理它并传给另一个服务器时发生,例如代理或者防火墙
举了例子

一个正常的302跳转包是这样

注入了一个换行符,那此时的返回包就变成了这样:

这个时候我们呢就给访问者设置了一个固定的SESSION,造成了一个 会话固定漏洞
当然HRS不仅局限于会话固定,通过注入两个CRLF就能造成一个无视浏览器Filter的反射性XSS。
比如一个网站接受url参数 http://test.sina.com.cn/?url=xxx,xxx放在Location后面作为一个跳转。

如果我们输入的是

http://test.sina.com.cn/?url=%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>

我们的返回包就会变成这样。

之前说了浏览器会根据第一个CRLF把HTTP包分成头和体,然后将体显示出来。于是我们这里这个标签就会显示出来,造成一个XSS。

为什么说是无视浏览器filter的,这里涉及到另一个问题。

浏览器的Filter是浏览器应对一些反射型XSS做的保护策略,当url中含有XSS相关特征的时候就会过滤掉不显示在页面中,所以不能触发XSS。

怎样才能关掉filter?

一般来说用户这边是不行的,只有数据包中http头含有X-XSS-Protection并且值为0的时候,浏览器才不会开启filter。

说到这里应该就很清楚了,HRS不正是注入HTTP头的一个漏洞吗,我们可以将X-XSS-Protection:0注入到数据包中,再用两个CRLF来注入XSS代码,这样就成功地绕过了浏览器filter,并且执行我们的反射型XSS。
所以说HRS的危害大于XSS,因为它能绕过一般XSS所绕不过的filter,并能产生会话固定漏洞。

如何修复HRS漏洞,当然是过滤 \r 、\n之类的换行符,避免输入的数据污染到其他HTTP头。
ps: 所以这个过滤也应该添加到 XSS FILTER 中。

转载于:https://www.jianshu.com/p/d4c304dbd0af
转载于:https://houbb.github.io/2020/08/09/web-safe-03-crlf

CRLFHRS知识点相关推荐

  1. 解释型语言与编译型的必须知识点

    解释型语言与编译型的必须知识点 概念: 计算机不能理解直接理解高级语言,只能理解机器语言,所以必须把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种: 编译 解释 两种翻译 ...

  2. YOLOV4知识点分析(二)

    YOLOV4知识点分析(二) 数据增强相关-mixup 论文名称:mixup: BEYOND EMPIRICAL RISK MINIMIZATION 论文地址:https://arxiv.org/ab ...

  3. YOLOV4知识点分析(一)

    YOLOV4知识点分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:https://arx ...

  4. 你需要掌握的有关.NET DateTime类型的知识点和坑位 都在这里

    引言    DateTime数据类型是一个复杂的问题,复杂到足以让你在编写[将日期从Web服务器返回到浏览器]简单代码时感到困惑. ASP.NET MVC 5和 Web API 2/ASP.NETCo ...

  5. 简练软考知识点整理-范围确认易混概念

    与确认范围容易混淆的知识点包括,确认范围与核实产品.质量控制.项目收尾,下面进行比较分析. (1)确认范围与核实产品 核实产品是针对产品是否完成,在项目(或阶段)结束时由发起人或客户来验证,强调产品是 ...

  6. 朴素贝叶斯知识点概括

    1. 简述 贝叶斯是典型的生成学习方法 对于给定的训练数据集,首先,基于特征条件独立假设,学习输入/输出的联合概率分布:然后,基于此模型,对于给定的输入x,根据贝叶斯定理求后验概率最大的输出y 术语说 ...

  7. 计算机二级函数知识,2017年全国计算机二级考试MS Office高级应用知识点:INDIRECT函数...

    INDIRECT函数知识点 适用考试:全国计算机二级考试 考试科目:MS Office高级应用 科目知识点:INDIRECT函数 INDIRECT函数立即对引用进行计算,并显示其内容.当需要更改公式中 ...

  8. python如何创建一个类_python (知识点:类)简单的创建一个类

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ Created on Mon Nov 14 01:01:29 2016 ...

  9. 全国计算机二级vfp知识点,全国计算机二级VFP知识点总结

    全国计算机二级 Visual FoxPro 数据库程序设计 --知识点整理资料 文件扩展名及备注文件扩展名 文件 项目 表 程序 单索引 查询 菜单定义格式 扩展名 .pjx .dbf .prg .i ...

最新文章

  1. 大学生计算机实验基础考试,大学生计算机基础考试试题
  2. BCH智能合约进程持续推进 新方案接连被推出
  3. 自己动手丰衣足食之 jQuery 数量加减插件
  4. 离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute
  5. stack与queue
  6. CoreCLR源码探索(一) Object是什么
  7. linux安装mysql5.5.52,Linux系统上安装MySQL 5.5prm
  8. Windows开机自动运行软件目录
  9. 对Redis配置中bind的探索
  10. r语言aggredate_R语言 分组计算,不止group_by
  11. C#3.0学习(2)---对象集合初始化器
  12. Qunar黑科技-无侵入在线Debug的实现
  13. camunda 流程执行追踪_从Activiti分裂而来的camunda BPM
  14. JAVA并发编程实践 下载
  15. 小程序上传图片加水印
  16. linux改文件夹e45,linux 编辑文件时 E45: 'readonly' option is set (add ! to override) 隐藏属性 chattr lsattr...
  17. IDEA2021.2安装与配置(持续更新)
  18. wangEditor粘贴word样式解决方案
  19. SVG排版公众号文章『CSS滤色混合模式』模板代码
  20. 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1

热门文章

  1. 跟奥巴马一起编程(15)
  2. 一、RISC-V SoC内核——取指 代码讲解
  3. CCF python 门禁系统
  4. 解析几何--交点的计算
  5. 周易起名大师快速破解教程
  6. 重装系统(制作系统U盘、安装系统、U盘复原、win10、微PE)
  7. 【方法】如何使用DeepMask和SharpMask
  8. 保重/千万保重!英语怎么说?
  9. 国内矿场面临全面关闭,为什么FIL却依旧那么淡定?
  10. Java小农养成记第四天