黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 网管频道 >> 入侵检测 >> 文章正文
[推荐]风讯4.0一些安全漏洞的分析
        ★★★★★
风讯4.0一些安全漏洞的分析
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-11-10
前几天在守护天使的blog里面看见一篇文章"驳最近出现的风讯4.0漏洞 " 文章的作者是:sobiny.自己没看过风讯系统的代码.只是见很多人好象很感兴趣自己也想看看..根据作者文章里的提示有漏洞的文件在投票那里.vote文件夹里面文件就几个文件很好找.在Vote_Ajax.asp这个文件找到下面的代码:
  VisitIP = request.ServerVariables("HTTP_X_FORWARDED_FOR")
  If VisitIP = "" then
    VisitIP = request.ServerVariables("REMOTE_ADDR")
  End If
 
  Set VS_RS = Conn.Execute("Select top 1 VoteTime from FS_VS_Items_Result where TID = "&TID&" and VoteIp='"&VisitIP&"' order by RID desc")
  变量VisitIP没经过任何的处理就放进sql查询里面,只是这个变量不是我们平常提交的那些变量.所以需要抓包-----修改数据库包-------再提交.

  自己也看了其他的一些文件,也发现了一些小问题..废话不多说
文件:user/job/job_search_result.asp里面找到下面的代码
  Dim Rs,job,workcity,publicdate,condition
    job=trim(request.Form("JobName"))
    workcity=trim(request.Form("workcity"))
    publicdate=trim(request.Form("hd_publicdate"))
    if job<>"" then
        condition=" And JobName like '"&job&"'"
    End if
   
    if workcity<>"" then
        condition=condition&" And workcity ='"&workcity&"'"
    End if

    if publicdate<>"" then
        Dim dateCondition
        dateCondition=DateValue(Now())-Cint(publicdate)
        if G_IS_SQL_DB=0 then
          condition=condition&" And publicdate>#"&dateCondition&"#"
        Else
          condition=condition&" And publicdate>'"&dateCondition&"'"
        End if
    End if
    if G_IS_SQL_DB=0 then
        Set Rs=Conn.execute("Select PID,UserNumber,JobName,JobDescription,ResumeLang,WorkCity,PublicDate,EndDate,NeedNum from FS_AP_Job_Public where 1=1 "&condition&" And (EndDate>#"&DateValue(Now())&"# or EndDate=#"&DateValue(Now())&"#)")
    else
        Set Rs=Conn.execute("Select PID,UserNumber,JobName,JobDescription,ResumeLang,WorkCity,PublicDate,EndDate,NeedNum from FS_AP_Job_Public where 1=1 "&condition&" And (EndDate>'"&DateValue(Now())&"' or EndDate='"&DateValue(Now())&"')")

G_IS_SQL_DB=0为ACCESS数据库,1为SQL数据库.数据库不同构造的注入语句也不同,所以这个地方要注意.
  job=trim(request.Form("JobName"))变量job仅仅是用trim涵数去掉两边的空格.对于防止注入是没有什么作用的..
        if job<>"" then
        condition=" And JobName like '"&job&"'"
        End if
把变量传给了condition,但是在后面的代码中没有过滤这个变量就放进数据库的查询 当中了..后面自己想吧...嘿嘿
 
  还有一个地方就是在user/friend.asp文件里面有这样一段代码
 
  if Request("Action") = "del" then
  Dim strFriendID
  strFriendID = NoSqlHack(Request.QueryString("FriendID"))
  If strFriendID = "" or isNumeric(strFriendID)=false then
    strShowErr = "<li>错误的参数</li>"
    Call ReturnError(strShowErr,"")
  Else
    User_Conn.execute("Delete From FS_ME_Friends where FriendID="&strFriendID)
    strShowErr = "<li>删除成功!</li>"
    Response.Redirect("lib/Success.asp?ErrCodes="&Server.URLEncode(strShowErr)&"&ErrorUrl=")
    Response.end
  End if
End if

变量strFriendID被NoSqlHack涵数处理了在function文件里面找到涵数的实体:
  Function NoSqlHack(FS_inputStr)
    Dim f_NoSqlHack_AllStr,f_NoSqlHack_Str,f_NoSqlHack_i
    f_NoSqlHack_AllStr="*|%|'|;|(|)|and |exec |insert |select |delete |update |count |master |truncate |declare |and   |exec   |insert   |select   |delete   |update   |count   |master   |truncate   |declare   |char(|mid(|chr("
    f_NoSqlHack_Str = Split(f_NoSqlHack_AllStr,"|")

    For f_NoSqlHack_i=LBound(f_NoSqlHack_Str) To Ubound(f_NoSqlHack_Str)
        If Instr(LCase(FS_inputStr),f_NoSqlHack_Str(f_NoSqlHack_i))<>0 Then
          If f_NoSqlHack_Str(f_NoSqlHack_i)="'" Then f_NoSqlHack_Str(f_NoSqlHack_i)=" \' "
          Response.Write "<html><title>警告</title><body bgcolor=""EEEEEE"" leftmargin=""60"" topmargin=""30""><font style=""font-size:16px;font-weight:bolder;color:blue;""><li>您提交的数据有恶意字符</li></font><font style=""font-size:14px;font-weight:bolder;color:red;""><br><li>您的数据已经被记录!</li><br><li>您的IP:"&Request.ServerVariables("Remote_Addr")&"</li><br><li>操作日期:"&Now&"</li></font></body></html><!--Powered by Foosun Inc.,AddTime:"&now&"-->"
        Response.End
        End if
        Next
        NoSqlHack = FS_inputStr
        End Function
经过NoSqlHack处理的变量是没有搞头了(反正我是没有办法的).但是程序的作者忘记了一点就是没有判断这个好友是谁的好友,就直接根据strFriendID删除了.如果我们提交strFriendID从1到N那么所有人的好友都没删除掉了.....看来是被注入漏洞搞怕了..哈哈却出现了逻辑漏洞...其实还有其他的文件也有注入的漏洞.自己找找吧
文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886