版本: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>
当管理员查看我们的留言时就会成功执行我们的跨站测试代码,效果如下图:
至于跨站的高级应用,就看大家的发挥了。