msgbartop
同一天地间,同一网络下,P9′Blog与您共享今日互联网→WWW.P9.NET.CN
msgbarbottom

Ajax如何进行跨域操作

安全

安全

author:4lert
form:[H.S.G] http://www.3hsg.net

今天spz发现了一个blog社区的极其严重的xss漏洞,于是我便萌发了写一个xss worm的想法。在写的过程中遇到了很多的问题,最大最大的问题就是ajax的跨域问题。因为你请求的页面和请求处理页面不在一个域里面,所以就会出现跨域的问题,JS报错提示为“没有权限”,这就是所谓的跨域问题!

最简单的办法就是做一个代理页面,让本域存在一个代理页面,由代理页面来访问远程页面并将数据返回给请求页面。这就完成一个proxy跨域操作。这里以asp为例。代理页面代码proxy.asp<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”936″%>
<%
Function send_request(url)
Set Retrieval = CreateObject(“Microsoft.XMLHTTP”)
With Retrieval
.Open “Get”, url, False, “”, “”
.Send
send_request = .ResponseBody
End With
Response.ContentType=”text/xml”
Set Retrieval = Nothing
End Function

url=Request(“url”)
Response.BinaryWrite send_request(url)
Response.Flush
%>

ajax页面 ajax.html

  1. <html>
  2. <head>
  3. <meta http-equiv=“Content-Type” content=“text/html; charset=GB2312″>
  4. <title>Ajax Test</title>
  5. <script language=“javascript”>
  6. var xmlhttp = false;
  7. function createXMLHttpRequest(){
  8. xmlhttp = false;
  9. if(window.XMLHttpRequest){
  10. xmlhttp = new XMLHttpRequest();
  11. if(xmlhttp.overrideMimeType){
  12. xmlhttp.overrideMimeType(“text/xml”);
  13. }
  14. }
  15. else if(window.ActiveXObject){
  16. try{
  17. xmlhttp = new ActiveXObject(“Msxml2.XMLHTTP”);
  18. }catch(e){
  19. try{
  20. xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
  21. }catch(e){}
  22. }
  23. }
  24. }
  25. function send(url){
  26. url=“proxy.asp?url=”+url;
  27. createXMLHttpRequest();
  28. xmlhttp.open(“GET”,url,true);
  29. xmlhttp.onreadystatechange = complead;
  30. xmlhttp.send(null);
  31. }
  32. function complead(){
  33. if(xmlhttp.readyState == 4) {
  34. if(xmlhttp.status == 200) {
  35. var result = xmlhttp.responseXml;
  36. alert(result);
  37. }
  38. }
  39. }
  40. </script>
  41. </head>
  42. <body onLoad=“send(‘http://3hsg.net/ohyes.php’);”>
  43. </body>
  44. </html>
  45. 利用上面代码即可实现跨域操作(所有代码都从网上折抄并修改)。没什么技术难度,只作为记录吧!

Tags:

Leave a Comment

You must be logged in to post a comment.