
安全
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
- <html>
- <head>
- <meta http-equiv=“Content-Type” content=“text/html; charset=GB2312″>
- <title>Ajax Test</title>
- <script language=“javascript”>
- var xmlhttp = false;
-
- function createXMLHttpRequest(){
- xmlhttp = false;
-
- if(window.XMLHttpRequest){
- xmlhttp = new XMLHttpRequest();
- if(xmlhttp.overrideMimeType){
- xmlhttp.overrideMimeType(“text/xml”);
- }
- }
- else if(window.ActiveXObject){
- try{
- xmlhttp = new ActiveXObject(“Msxml2.XMLHTTP”);
- }catch(e){
- try{
- xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);
- }catch(e){}
- }
- }
- }
-
- function send(url){
- url=“proxy.asp?url=”+url;
- createXMLHttpRequest();
- xmlhttp.open(“GET”,url,true);
- xmlhttp.onreadystatechange = complead;
- xmlhttp.send(null);
- }
-
- function complead(){
- if(xmlhttp.readyState == 4) {
- if(xmlhttp.status == 200) {
- var result = xmlhttp.responseXml;
- alert(result);
- }
- }
- }
- </script>
- </head>
- <body onLoad=“send(‘http://3hsg.net/ohyes.php’);”>
- </body>
- </html>
- 利用上面代码即可实现跨域操作(所有代码都从网上折抄并修改)。没什么技术难度,只作为记录吧!
收藏、分享这篇文章!
Tags: 黑客