影响版本:
Comersus Cart 7.1.0
程序介绍:
Comersus Cart是一套ASP开源的电子商务购物系统,是由一家大型的跨国公司开发的购物系统,很受人们欢迎,其中包括信用卡,航运,股票,加密,拍卖,评论,订单跟踪,多层次,类别,销售数字。
漏洞分析:
在comersus_message.asp文件中
漏洞代码如下:
<!–#include virtual="/comersus7F/includes/settings.asp"–>
<!–#include virtual="/comersus7F/includes/getSettingKey.asp"–>
<!–#include virtual="/comersus7F/includes/sessionFunctions.asp"–>
<!–#include virtual="/comersus7F/includes/databaseFunctions.asp"–>
<!–#include virtual="/comersus7F/includes/screenMessages.asp"–>
<!–#include virtual="/comersus7F/includes/stringFunctions.asp"–>
<!–#include virtual="/comersus7F/includes/currencyFormat.asp"–>
<!–#include virtual="/comersus7F/includes/itemFunctions.asp"–>
<!–#include virtual="/comersus7F/includes/cartFunctions.asp"–>
<!–#include virtual="/comersus7F/includes/adSenseFunctions.asp"–>
‘代码省略……
pMessage = getScreenMessage(request.querystring("message"),3000)
%> ‘获取message变量值,并赋予变量pMessage,getScreenMessage函数在stirngFunctions.asp文件中有定义,具体定义参见后面的内容
<!–#include file="header.asp"–>
<br><b><%=getMsg(581,"attention")%></b><br><br>
<%=pMessage%> <%=session("message")%><br><br> ‘由于未对变量message进行有效地过滤,而直接将pMessage输出,造成跨站脚本漏洞
<%session("message")=""%>
<!–#include file="footer.asp"–>
<%call closeDb()%>
#stirngFunctions.asp文件中对getScreenMessage函数的定义如下:
function getScreenMessage(input,stringLength)
‘ to filter screenMessage
dim regEx
Set regEx = New RegExp
getScreenMessage = left(trim(input),stringLength)
regEx.Pattern = "([^-_A-Za-z0-9@., ])" ’正则表达式
regEx.IgnoreCase = True
regEx.Global = True
getScreenMessage = regEx.Replace(getScreenMessage, "") ‘运用正则表达式对intput值进行简单过滤,但仍可造成XSS
Set regEx = nothing
end function
由于Comersus Cart不正确处理和过滤用户提交的请求,导致了XSS漏洞的发生.
由于Comersus Cart不正确处理和过滤用户提交的请求,导致了XSS漏洞的发生.
漏洞利用:
http://[website]/[script]/store/comersus_message.asp?message=[XSS]
解决方案:
厂商补丁
Comersus
———–
目前厂商并无任何更新,请使用该系统的用户随时留意官方网站的更新信息。
http://www.comersus.com/
