1.crlf 注入攻击.

原理:http数据包通过\r\n\r\n来分开http header何http body

实现:首先这种攻击发生在应用层,且发生在服务器返回给我们的http reponse没有经过敏感字符的过滤,我们能够构造攻击语句来控制服务器的http响应.以下为例子:

1、Twitter的HTTP响应拆分

难度:高

厂商:https://twitter.com/

报告地址:https://hackerone.com/reports/52042

报告日期:2015年4月21日

奖金:$3,500

2015年的4月,Twitter收到了一个漏洞报告,报告称黑客可以通过该漏洞在用户向Twitter发起的请求数据中**任意cookie值。

用户在访问https://twitter.com/i/safety/report_story(用户可以在这里举报广告)地址时,服务器会获取参数reported_tweet_id的值,并将其设置到cookie中,最后导致了漏洞。

实际上Twitter是有进行校验的,它会禁止用户提交换行符0x0a(%0a)。但Twitter在处理过程中,会先验证是否提交了禁止的字符,之后如果提交的数据是UTF-8编码过的,则会将其转为原始的unicode码后去掉一些无用字符后再取剩下的字节,正是因为这样的逻辑导致了绕过。

比如说用户提交的是:%E5%98%8A,这个不包含换行符所以不会被拦截,服务器接收到后将其转成原始的unicode码:U+560A,最后取了0A,这时候就变成换行符了。

绕过了CRLF拦截后,通过**javascript语句来执行xss攻击效果会更好!比如如下链接:

https://twitter.com/login?redirect_after_login=https://twitter.com:21/%E5%98%8A%E5%98%8Dcontent-type:text/html%E5%98%8A%E5%98%8Dlocation:%E5%98%8A%E5%98%8D%E5%98%8A%E5%98%8D%E5%98%BCsvg/onload=alert%28innerHTML%28%29%E5%98%BE

注意上面的%E5%E98%8A,会经过服务器处理后返回的数据就会变成下面的html响应的形式:

https://twitter.com/login?redirect_after_login=https://twitter.com:21/(CRLF)

content-type:text/html(CRLF)

location:<svg/onload=alert(innerHTML)>

在**换行符后,添加了可执行的javascript,最后可盗取用户的会话数据。

小贴士:对渗透测试而言,观察能力和良好的技能都是缺一不可的。

2、v.shopify.com响应拆分

难度:中

厂商:https://v.shopify.com/

报告地址:https://hackerone.com/reports/1064272

报告日期:2015年12月22日

奖金:$500

shopify会在后台中记录你上次访问的是哪一个商店,然后将其放置在cookie中,通过这个方式:/last_shop?SITENAME.shopify.com。

然后在2015年的12月份,漏洞提交者发现Shopify没有对参数进行校验,以至于白帽通过Burp Suite抓包提交%0d%0a就能造成CRLF漏洞,部分链接为:/last_shop?xxx.shopify.com%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2019%0d%0a%0d%0a<html>deface</html>,以下是截图:

在上面的链接中,%20是空格,%0d%0a是换行字符。结果,浏览器收到了两个头部并选择渲染了后者,最后可导致各种漏洞,比如xss。

小贴士:要十分细心观察我们提交了哪些参数,然后是否将数据放到了响应头部中。在这个例子中,shopify从链接中获取参数last_shop的值并将其放在了cookie里,这才导致了CRLF漏洞。

来总结一下,对渗透测试而言,观察能力和良好的技能都是缺一不可的。知道字符的编码方式以及可能造成的漏洞是非常重要的一个渗透测试技巧。%0D%0A可以被用来测试服务器是否存在CRLF漏洞,如果存在漏洞,那就想办法深入一下,通过和xss联用来扩大战果。另一方面,如果服务器会对%0D%0A进行处理,那么你就需要思考一下你可以怎么对这些数据进行编码,然后测试服务器是否会对数据进行双重解码。

crlf注入攻击的更多相关文章

  1. CRLF注入攻击

      原理:http数据包通过\r\n\r\n来分开http header何http body 实现:首先这种攻击发生在应用层,且发生在服务器返回给我们的http reponse没有经过敏感字符的过滤, ...

  2. WEB安全第五篇--其他注入的奇技淫巧:XML注入、Xpath注入、Json注入、CRLF注入

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  3. 【网络安全】SQL注入、XML注入、JSON注入和CRLF注入科普文

    目录 SQL注入 一些寻找SQL漏洞的方法 防御SQL注入 SQL注入相关的优秀博客 XML注入 什么是XML注入 预防XML注入 JSON注入 什么是JSON注入 JSON注入的防御 CRLF注入 ...

  4. WEB服务端安全---注入攻击

    注入攻击是web领域最为常见的攻击方式,其本质是把用户输入的数据当做代码执行,主要原因是违背了数据与代码分离原则,其发生的两个条件:用户可以控制数据输入:代码拼接了用户输入的数据,把数据当做代码执行了 ...

  5. (二)CRLF注入

    01 漏洞描述 在<HTTP | HTTP报文>一文中,我们介绍了HTTP报文的结构:状态行和首部中的每行以CRLF结束,首部与主体之间由一空行分隔.或者理解为首部最后一个字段有两个CRL ...

  6. CRLF注入漏洞 -配置错误

    漏洞分析参考 https://i-beta.cnblogs.com/posts/edit 什么是CRLF? CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII ...

  7. CRLF注入

    CRLF注入 Title: [CVE-2019-9740] Python urllib CRLF injection vulnerability Category: security Stage: r ...

  8. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  9. 实例讲解 SQL 注入攻击

    这是一篇讲解SQL注入的实例文章,一步一步跟着作者脚步探索如何注入成功,展现了一次完整的渗透流程,值得一读.翻译水平有限,见谅! 一位客户让我们针对只有他们企业员工和顾客能使用的企业内网进行渗透测试. ...

随机推荐

  1. [BZOJ3668] [Noi2014] 起床困难综合症 (贪心)

    Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...

  2. 在windows10上配置Android的环境变量

    一, 首先右击"我的计算机"或"此电脑"图标,在弹出来的下拉列表中点击"属性(R)",进入到"系统"属性面板,点击左侧的 ...

  3. ES6的模块化规范和CommonJS的模块化规范的差异

    ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,旨在成为浏览器和服务器通用的模块解决方案.其模块功能主要由两个命令构成:export 和 import.export命令用于规定模块的对 ...

  4. php数组基础知识

    php数组 <?php $kele = array('张三',10 => '李四', 'PHP中文网' , '去PHP中文网学PHP', 19 => '王二' , '小明'); // ...

  5. Android 音视频编解码——YUV视频格式详解

    一.YUV 介绍 YUV是一种颜色编码方方式,通常由彩色摄像机进行取像,然后把取得的彩色图像信号经过分色.分别放大校正后得到RGB,再经过矩阵变换得到亮度信号Y和两个色差信号B-Y(即U).R-Y(即 ...

  6. Ceph常见问题百科全书

    Ceph是目前炙手可热的一个统一分布式存储系统,具有优异的性能.可靠性.可扩展性.其可轻松扩展到数 PB 容量, 支持多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽),具有极其高的可靠性. ...

  7. 【python学习笔记】7.更加抽象

    [python学习笔记]7.更加抽象 类的定义就是执行代码块 在内存保存一个原始实例,可以通过类名来访问 类的实例化,是创建一个原始实例的副本, 并且所有成员变量与原始实例绑定 通过修改实例变量,可以 ...

  8. [转]使用Subversion进行版本控制

    使用Subversion进行版本控制 http://www.subversion.org.cn/svnbook/1.4/index.html 针对 Subversion 1.4(根据r2866编译) ...

  9. Java虚拟机系列-Java类加载机制

    原文:http://www.ityouknow.com/jvm/2017/08/19/class-loading-principle.html 一. 类加载: 1. 将.class文件的二进制数据加载 ...

  10. form + iframe 获取表单提交后返回的数据

    原理: submit 提交表单没有回调函数,但是可以用iframe来接收返回结果,最后进行格式转换就ok了: 原文地址: http://blog.csdn.net/simeng_1016/articl ...