BOBO网店商城购物系统漏洞浅析

来源:岁月联盟 编辑:zhuzhu 时间:2009-05-19
BOBO网店商城购物系统漏洞浅析 flaw0r’s Blog 

版本:BOBOShop V1.0 Style1
系统:ASP+ACCESS
BOBO购物管理系统是国内最先进的购物系统,采用asp+fso技术;傻瓜式的程序安装和调试;用户无需考虑系统的安装维护;美观、友好的展示铺面;设计中应用了多种网络安全技术;顾客可以方便的查询并订购商品;用户可以方便的定义各种商品信息;系统选用强大的数据库保存各类信息;系统支持多种浏览器;功能模块清晰实用强大;系统有着良好的扩充性和升级性;强大的在线支付系统和订单系统;
全面的安全性处理:数据库防下载处理、CONN防止暴库处理、防止跨站脚本安全、SQL注入式安全防范、禁止脱机浏览工具浏览、后台登陆采用验证码验证、会员密码采用MD5方式加密、防范未知IP访问及软件安全、管理员密码采用MD5方式加密、过滤sql注入代码及HTML代码防护、进行数据来源安全性监测,跨站脚本防范、管理员登陆日至记录,非法操作代码日至记录
漏洞一:留言跨站
网站留言页面为gbook.asp,下面看一下有问题的代码:
function HTMLEncode2(fString)

fString = Replace(fString, CHR(13), "")

fString = Replace(fString, CHR(10) & CHR(10), "</P><>")

fString = Replace(fString, CHR(10), "<BR>")

HTMLEncode2 = fString

end function
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from shop_fk",conn,1,3
rs.addnew
rs("fksubject")=trim(request("fksubject"))
rs("fkleixing")=request("fkleixing")
rs("fkcontent")=htmlencode2(trim(request("fkcontent")))
rs("fkusername")=trim(request("fkusername"))
rs("fkemail")=trim(request("fkemail"))
rs("fktel")=trim(request("fktel"))
rs("fklaizi")=trim(request("fklaizi"))
rs("fkdate")=now
rs("fkip")=Request.ServerVariables("remote_addr")
rs.update
rs.close
set rs=nothing
作者首先定义了一个HTML的过滤函数,HTMLEncode2,但这个函数并没有过滤<和>,至于跨站能不能成功,还要看后台查看留言的文件有没有做进一步的过滤,因为留言是直接发给管理员的。那么我们来看一下后台查看留言的文件viewfk.asp,有问题代码如下:
<table width="80%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td align="center">
<b><%=trim(rs("fksubject"))%></b>
</td>
</tr>
<tr>
<td>
<%=trim(rs("fkcontent"))%><br>
<%="发表时间:"&rs("fkdate")%>
</td>
</tr>
</table>
大家可以很清楚的看到fksubject和fkcontent仅仅过滤了左右空格,导致我们可以跨站成功。
利用如图所示,我们在留言内容处写入跨站测试代码<script>alert(/xss/)</script>


当管理员查看我们的留言时就会成功执行我们的跨站测试代码,效果如下图:

 

至于跨站的高级应用,就看大家的发挥了。

漏洞二:cookie欺骗

漏洞存在文件:1.huansuan.asp漏洞代码如下:
<%
if request.Cookies("BOB")("username")="" then
response.Redirect "user.asp"
response.End
end if
………………………….省略代码
%>
2.gouwu.asp漏洞代码如下
dim bookid,username,action
action=request.QueryString("action")
if request.Cookies("BOB")("username")<>"" then
username=trim(request.Cookies("BOB")("username"))
else
if request.Cookies("BOB")("dingdanusername")="" then
username=now()
username=replace(trim(username),"-","")
username=replace(username,":","")
username=replace(username," ","")
response.Cookies("BOB")("dingdanusername")=username
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from [user] ",conn,1,3
rs.addnew
rs("username")=username
rs("niming")=1
rs.update
rs.close
set rs=nothing
else
username=request.Cookies("BOB")("dingdanusername")
end if
end if

cookie信息如下所示:
reglx%3D=1&yucun=0&jifen=0&username=flaw0r®lx=1&jiaoyijine=0
usercookies=1&userid=4439&userhidden=2&password=965eb72c92a549dd&userclass=1&username=flaw0r
我们很容易伪造信息。其中reglx=1为普通用户,reglx=2为VIP用户
3.dingdan.asp
<%if request.Cookies("BOB")("username")="" then
response.write "<script. language=javascript>alert(’对不起,您还没有登陆!’);history.go(-1);</script>"
response.End
end if%>
这套系统还有很多文件存在上述的cookie欺骗漏洞,在此不一一列举