解决和修复upfile_flash.asp上传漏洞的问题
    文章作者:恒爱网络 阅读次数:8162 发布时间:2016-7-15

    upfile_flash.asp 漏洞导致未经授权的用户可以直接上传木马或后门程序到用户空间里。因此需要修补下 upfile_flash.asp 文件的代码,加入过滤程式。综合了下网上分享的文章做了下改进!

    代码如下:



    <%

    '先作一个文件名检验函数。过虑掉所有有危险的东西。
    Function chkfileExt(savefilename)
     feifaExt="html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis"
     fExt = Split(feifaExt, "|")
     
     For i = 0 To UBound(fExt)
      If instr(1,savefilename,fExt(i),1)>0 Then '检测是否存在非法字符并通杀大小写彻底杜绝过滤不严格的问题。
       response.write("非法的文件格式!")
       Response.End
      End If
     Next
     
    End Function


    set upload=new upload_file
    if upload.form("act")="uploadfile" then

    filepath=trim(upload.form("filepath"))
    filelx=trim(upload.form("filelx"))
    filepath=replace(filepath,chr(0),"")  


     i=0
    for each formName in upload.File
     set file=upload.File(formName)

     fileExt=lcase(file.FileExt) '得到的文件扩展名不含有.
     
     if file.filesize>(1024*1024) then
      response.write "最大只能上传 1M 的文件! [ 重新上传 ]"
      response.end
     end if


      randomize
      ranNum=int(90000*rnd)+10000
      filename=filepath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&left(ranNum,3)&"."&fileExt

      if file.FileSize>0 then
     
       call chkfileExt(FileName)

    '这里我们检验的是整个保存地址。如果存在非法字符就报警并停止。
     
      file.SaveToFile Server.mappath(FileName)
      response.write ""

     end if
     
     set file=nothing
    next
    set upload=nothing


    end if
    %>