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. Cglib及其基本使用

    前言 最近一直在看Spring源码,其实我之前一直知道AOP的基本实现原理: 如果针对接口做代理默认使用的是JDK自带的Proxy+InvocationHandler 如果针对类做代理使用的是Cgli ...

  2. SpringMVC中的适配器(适配者模式)

    此处采用了适配器模式, 由于Controller的类型不同,有多重实现方式,那么调用方式就不是确定的,如果需要直接调用Controller方法,需要在代码中写成如下形式: if(mappedHandl ...

  3. ETL总结(扫盲版)

      1.ETL名词解释 英文缩写 Extract-Transform-Load ,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至到目的端(一般指的是数 ...

  4. TCP/IP NAT知识梳理

    一. IP地址的获取 首先,互联网上的每台主机都有一个唯一的IP地址标识,计算机在通信时需要向网络中的DHCP(动态主机配置协议)服务器申请一个IP地址,但开始主机并不知道哪台机器是DHCP服务器(不 ...

  5. [C#]基于命名管道的一对多进程间通讯

    在工作中碰到了一个进程间通讯的问题,大概是这样的: 项目本身是.net Core做的,但是有部分功能Core中不方便实现,有的是依赖Framework,有的是因为权限和安全问题. 那基于这个问题,问了 ...

  6. Cesium home键定位的位置

    Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(80, 22, 130, 50);//home定位到中国范围

  7. 轮评审用例,写用例的重要性-----(python单元测试反思)

    时间过的真快,3月底了,更新一次博客吧,算是对三月份忙碌的一个总结. 吃过饭,习惯登录qq,看到我群里的一个大神,碎冰发的一个作业 不就是写个代码吗,然后写完再进行测试这个代码是否实现了这个功能. 于 ...

  8. Python基础-week04

    本节内容摘要:#Author:http://www.cnblogs.com/Jame-mei 装饰器 迭代器&生成器 Json & pickle 数据序列化 软件目录结构规范 作业:A ...

  9. JavaScript之实例

    <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content=" ...

  10. python基础学习笔记一

    1.变量 为了节省内存,python解释器会对一些简单的字符串以及小整型数,做出一些优化,当要定义的新变量的内容与定义过的内容相同时,会让两者使用同一个内存空间. 例如: 在这个例子里面,'old'是 ...