iframe的防插破解

看了Monyer的文章:

《iframe的防插与强插(二)》
 
代码如下:
 
JavaScript代码
  1. <script>   
  2. window.onload = function(){   
  3. if(top!=self){   
  4.    var f = document.createElement("form");   
  5.    f.action=location;   
  6.    f.target="_parent";   
  7.    document.body.appendChild(f);   
  8.    f.submit();   
  9. }   
  10. };   
  11. </script>  

强制提交,我仔细看了这篇文章,后来实践了下,发现两个onload会后面的覆盖前面的onload。

并且防御代码中在操作"body"。

所以这段代码一定是应用于页面最下面。

再看了看之前的

《iframe的防插与强插》

http://hi.baidu.com/monyer/blog/item/1551b68f453f78e9f11f3667.html

发现攻击者至少可以控制一段JS,所以才可以“强插”。

最后Monyer给出了一个方案。

不过仔细看看,还是有很大问题的。

昨晚在YY,JS里有个SLEEP这个函数,让后面的代码等上“半年”才执行,那他的方案就失效了。

于是测试,居然成功后。

早上和大家聊这个事情,被狠狠的打击了下,原来JS根本没这个函数。。。那后面的的确没执行了(JS出错)。囧。。。

经过仔细研究,终于想到了破解的方法。HOOK。。。

看代码,我把monyer的代码放进去,然后不让他执行顺利。

JavaScript代码
  1. <head>   
  2. </head>   
  3. <body>   
  4. 呵呵。。。   
  5.   
  6. </body>   
  7. <script>   
  8.   
  9. document.createElement = function(test)   
  10. {   
  11.     var f  =  new Object();   
  12.        f.action=location;   
  13.        f.target="_parent";   
  14.           
  15.        f.submit = function (){};   
  16.        return f;   
  17. }   
  18. document.body.appendChild = function(test){}   
  19.   
  20. window.onload = function(){alert(1);}   
  21.   
  22. //—————————-下面是Monyer的方法。原样copy。   
  23. window.onload = function(){   
  24. if(top!=self){   
  25.    var f = document.createElement("form");   
  26.    f.action=location;   
  27.    f.target="_parent";   
  28.    document.body.appendChild(f);   
  29.    f.submit();   
  30. }   
  31. };   
  32. //广告时间http://www.inbreak.net   
  33. alert(‘hackedbykxlzx’);   
  34. </script>   

做一个类,HOOK掉这个方法里所有用掉的东西。。。嘿嘿。。。同时保证后面的JS正确执行。

 

发表评论?

9 条评论。

  1. 不知道兄弟是不是这样试的:
    http://test1/1.html




    这里test1和test2是两个不同的域,我最近也在琢磨这个问题,如果能够打破同源策略可能还有戏!
    不过兄台这个代码我还是没有测试成功,页面依然会跳转!
    而且似乎iframe里面的onload会先于父页面中的onload执行罢!

  2. 看来是我误会你的意思了。

    看到你的那个代码,我还以为是一段在iframe中的页面代码可控(iframe中的页面出现XSS)。

    ———————————————–

    如果是不同源,的确不能控制里面的代码。

    另外,我的测试流程是在同一个页面,而不是不同域。
    我试了,将我的方法去掉,你那段会执行,但是如果加上,就不会跳转了。

  3. 如果你能在iframe中的那个域名下,上传一个gif。。。而受害者又是使用的IE7以下浏览器,或许有戏。。。

  4. http://www.inbreak.net/kxlzxtest/a.gif
    你用IE7打开这个,就知道了。。。

  5. 恩,不过如果是搞XSS进行代码插入,那么将很有意思,将突破原来的防止,但是仍有个小问题就是:

    你不能决定所插入代码在目标代码的前后位置。

    这点不知道按你的想法有没有考虑!

    当你能控制的代码仅能插入页面后面,而恰好文中又有这样的一段代码?

  6. 这段代码只是一种思想,当然具体实现要看他的页面怎么防御了,反正我就是HOOK它,不管他用什么。。。
    纯技术的讨论其实意义不是特别大,还得看具体应用的情况。

  7. 不管怎样,赞一个先!

  8. 想请问这网页的if( top!= self)

    http://www.ipaint.com.tw/index.asp

    该怎么破解??
    我想要用iframe嵌入这网页却不行
    麻烦高手!

  9. 受教啦,又学到一点知识.

发表评论