知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 安全资讯

初步分析(云起企业建站系统CommonSite Ver3.8版本)

发布时间:2014-08-13 15:58:32作者:知识屋

本文可以在此和作者交流:

红黑联盟
今天在中国站长网发现一个今天更新的程序,这程序是2009-12-10 13:05:53一点钟更新的,到我现在写这文章为止20.15分已经有云起企业建站系统CommonSite下载地址(已被下载8699次) 那么大的下载量了,我觉得这程序应该可以吧,后初步分析一下,这程序问题较大,
下面是该程序下载地址
一.后台登陆

我们来看management目录的login.asp文件

<%
if request.Form("submit")<>"" then
if request.Form("userid")="" or request.Form("password")="" then
response.Write("<script language=javascript>alert(用户名或者密码不能为空!);history.back();</script>")
response.end
end if

set rs=conn.execute("select * from gly where uid="&trim(request.form("userid"))&" and pwd="&trim(request.form("password"))&"")

是不是程序员写程序写错了???只用trim函数过滤了空格,然后后面写的“&"")”这个啥意识?,可能程序员本是要用replace函数替换"但是没写这个函数,这样一来就直接出现了从客户端传递过来的数据,直接带入数据库查询了,这样我们就可以用or=or登陆了.

二.暴库漏洞

我们来看该程序的数据库链接文件。

文件的路径在inc目录下文件名为conn.asp,还有个文件名为webconn.asp

两个文件代码是一样的,我们来看看代码

<%
db="../data/#CommonSite.asp" 数据库
on error resume next 尝试连数据库,一直到超时,但可以加强SQL注入过滤
connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(db)
connstr="DBQ="+server.mappath(""&db&"")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
%>
<!--#include file="config.asp"-->

看见没有,虽然程序里面有on error resume next这句容错语句,但是前面居然用注释掉了,这句话就没有起作用了这样还是造成暴库了

三.跨站漏洞,这程序很多地方有跨站漏洞

我随便找出一个给大家看看我们来看后台的basic.asp文件,这文件在management目录下这文件作用是修改网站基本信息,如标题等

我们来看其中的一段代码

if trim(request("do"))="edt" then
m_site_name = trim(request("site_name"))
m_keyword = trim(request("keyword"))
m_description = trim(request("description"))
m_copyright = trim(request("copyright"))
m_tel = trim(request("tel"))
conn.execute("update basic set site_name="&m_site_name&",keyword="&m_keyword&",description="&m_description&",copyright=

"&m_copyright&",tel="&m_tel&" where id=100")
response.Write("<script language=javascript>alert(修改成功);window.location.href=basic.asp;</script>")
response.End()
end if

看见没有,只用trim函数过滤了空间就直接带入数据库进行修改操作了

所以这样我们只要插入代码就可以跨站了如<script>alert("fsfs")</script>

下面是演示效果

 

总结,这程序在安全方面做的太垃圾,看出该程序员对脚本安全并不在行,整个程序只有注入上做了一些防范措施,我们来看下面一段程序
if isnumeric(trim(request("c")))=false then
response.write("Id Err!")
response.End()
end if
用了isnumeric函数进行防注入,这招够狠的,呵呵完全杜绝了注入呵呵!!我这次初步分析了这程序,下次我会进一步分析,谢谢观看

转载请加入链接通明博客


本人QQ:452879303欢迎喜欢研究脚本安全的朋友加我!欢迎在搜索我发布的其他原创文章!

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜