今天是愚人节嘛,大家不是愚人,不用我做解释。一眼就可以看出来。漏洞存在版本4.6sql+access,一路跟踪下去吧
漏洞文件:attachment.asp
1<!-- #include file="inc/inc_syssite.asp" -->2<%3Dim Path,rs,FileID,ShowDownErr,uid,file_ext4Dim SQL5Path = Trim(Request("path"))6FileID = Trim(Request("FileID"))7If FileID ="" And Path = "" Then8 Response.Write "参数不足"9 Response.End10End If11If CheckDownLoad Then12 If Path = "" Then13 set rs = Server.CreateObject("ADODB.RecordSet")14 link_database15 SQL = ("select file_path,userid,file_ext,ViewNum FROM oblog_upfile Where FileID = "&CLng(FileID))159 collapsed lines
16 rs.open sql,conn,1,317 If Not rs.Eof Then18 uid = rs(1)19 file_ext = rs(2)20 rs("ViewNum") = rs("ViewNum") + 121 rs.Update22 downloadFile Server.MapPath(rs(0)),023 Else24 Response.Status=40425 Response.Write "该附件不存在!"26 End If27 rs.Close28 Set rs = Nothing29 Else30 If true_domain = 1 Then31 downloadFile Server.MapPath(Replace(Path,blogurl,"")),132 else33 downloadFile Server.MapPath(Path),134 End If35 End If36Else37 '如果附件为图片的话,当权限检验无法通过则调用一默认图片,防止<img>标记无法调用,影响显示效果38 If Path = "" Then39 Response.Status=40340 Response.Write ShowDownErr41 Response.End42 Else43 downloadFile Server.MapPath(blogdir&"images/oblog_powered.gif"),144 End if45End if46
47Set oblog = Nothing48
49Sub downloadFile(strFile,stype)50 On Error Resume Next51 Server.ScriptTimeOut=999999952 Dim S,fso,f,intFilelength,strFilename53 strFilename = strFile54 Response.Clear55 Set s = Server.CreateObject(oblog.CacheCompont(2))56 s.Open57 s.Type = 158 Set fso = Server.CreateObject(oblog.CacheCompont(1))59 If Not fso.FileExists(strFilename) Then60 If stype = 0 Then61 Response.Status=40462 Response.Write "该附件已经被删除!"63 Exit Sub64 Else65 strFilename = Server.MapPath(blogdir&"images/nopic.gif")66 End if67 End If68 Set f = fso.GetFile(strFilename)69 intFilelength = f.size70 s.LoadFromFile(strFilename)71 If Err Then72 Response.Write("<h1>错误: </h1>" & Err.Description & "<p>")73 Response.End74 End If75 Set fso=Nothing76 Dim Data77 Data=s.Read78 s.Close79 Set s=Nothing80 Dim ContentType81 select Case LCase(Right(strFile, 4))82 Case ".asf"83 ContentType = "video/x-ms-asf"84 Case ".avi"85 ContentType = "video/avi"86 Case ".doc"87 ContentType = "application/msword"88 Case ".zip"89 ContentType = "application/zip"90 Case ".xls"91 ContentType = "application/vnd.ms-excel"92 Case ".gif"93 ContentType = "image/gif"94 Case ".jpg", "jpeg"95 ContentType = "image/jpeg"96 Case ".wav"97 ContentType = "audio/wav"98 Case ".mp3"99 ContentType = "audio/mpeg3"100 Case ".mpg", "mpeg"101 ContentType = "video/mpeg"102 Case ".rtf"103 ContentType = "application/rtf"104 Case ".htm", "html"105 ContentType = "text/html"106 Case ".txt"107 ContentType = "text/plain"108 Case Else109 ContentType = "application/octet-stream"110 End select111 If Response.IsClientConnected Then112 If Not (InStr(LCase(f.name),".gif")>0 or InStr(LCase(f.name),".jpg")>0 or InStr(LCase(f.name),".jpeg")>0 or InStr(LCase(f.name),".bmp")>0 or InStr(LCase(f.name),".png")>0 )Then113 Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name114 End If115 Response.AddHeader "Content-Length", intFilelength116 Response.CharSet = "UTF-8"117 Response.ContentType = ContentType118 Response.BinaryWrite Data119 Response.Flush120 Response.Clear()121 End If122End Sub123'验证下载权限124Function CheckDownLoad()125 On Error Resume Next126 CheckDownLoad = False127 '如果不允许游客下载附件128 If oblog.CacheConfig(67) = "1" Then129 If oblog.ChkPost = False Then130 ShowDownErr = "无浏览附件权限"131 Exit Function132 End If133 Else134 If oblog.CheckUserLogined = False Then135 If oblog.CacheConfig(82) = "0" Then136 ShowDownErr = "游客无浏览附件权限"137 Exit Function138 End if139 Else140 '如果此浏览者为上传者则返回True141 If uid = oblog.l_uid Then142 CheckDownLoad = True143 Exit Function144 End if145 '如果当前用户组不允许下载附件146 If oblog.l_Group(35,0) = "0" Then147 ShowDownErr = "当前用户组无浏览附件权限"148 Exit Function149 Else150 '如果下载附件需扣除积分151 If oblog.CacheScores(21) >"0" Then152 '如果当前积分小于下载附件需扣除的积分153 If oblog.l_uScores < Int(oblog.CacheScores(21)) Then154 ShowDownErr = "积分不足,无浏览附件权限"155 Exit Function156 Else157 '执行扣分操作158 oblog.GiveScore "",-1*Abs(oblog.CacheScores(21)),""159 Session ("CheckUserLogined_"&oblog.l_uName) = ""160 Oblog.CheckUserLogined()161 ShowDownErr = ""162 End If163 End If164 End if165 End If166 End If167 If Err Then168 CheckDownLoad = False169 ShowDownErr = Err.Description170 Err.Clear171 End If172 CheckDownLoad = True173End Function174%>
From:http://www.52cmd.cn