欢迎来到上海邦宁网络科技有限公司官方网站!

收藏本站|设为首页|联系我们|网站地图上海邦宁-官方微博 上海邦宁-专业微博

上海邦宁上海邦宁

专业营销型网站建设,网站维护服务提供商!

咨询热线:13701670443

联系我们

服务热线:13701670443

邮 箱:241732974@qq.com

地 址:上海市静安区共和新路4718弄10号楼217室

首页 >> 资讯中心 >> 技术文章 >> ASP上传漏洞的最佳解决方案
ASP上传漏洞的最佳解决方案
 来源:营销型网站建设-上海邦宁建站 发布时间:2012/4/6 阅读:

其实无论是组件还是非组件上传,都有这个漏洞,以下代码请需要得朋友仔细阅读,只要读懂代码就能融会贯通。

这里以UPLOAD组件上传为例

以下3个关键函数:

  1. function killext(byval s1) '干掉非法文件后缀   
  2. dim allowext  
  3. allowext=".JPG,.JPEG,.GIF,.BMP,.PNG,.SWF,.RM,.MP3,.WAV,.MID,.MIDI,.RA,.AVI,.MPG,.MPEG,.ASF,.ASX,.WMA,.MOV,.RAR,.ZIP,.EXE,.DOC,.XLS,.CHM,.HLP,.PDF"  
  4. s1=ucase(s1)  
  5. if len(s1)=0 then  
  6.   killext=""  
  7. else  
  8.   if not chk(allowext,s1,",") then  
  9.    killext=".shit"  
  10.   else  
  11.    killext=s1  
  12.   end if  
  13. end if  
  14. end function  
  15.   
  16. function chk(byval s1,byval s2,byval fuhao) '检查字符串包含   
  17. dim i,a  
  18. chk=false  
  19. a=split(s1,fuhao)  
  20. for i = 0 to ubound(a)  
  21.   if trim(a(i))=trim(s2) then   
  22.    chk=true  
  23.    exit for  
  24.   end if  
  25. next  
  26. end function  
  27.   
  28. function gname(byval n1) '以日期自动产生目录和文件名,参数1生成目录,参数2生成文件名(无后缀)   
  29. dim t,r  
  30. t=now()  
  31. randomize(timer)  
  32. r=int((rnd+1-1)*9999)  
  33. select case n1  
  34. case 1  
  35. gname=year(t)&right("00"&month(t),2)&right("00"&day(t),2)  
  36. case 2  
  37. gname=right("00"&hour(t),2)&right("00"&minute(t),2)&right("00"&second(t),2)&right("0000"&r,4)  
  38. end select  
  39. end function  

 

调用方法:

  1. dim oup,ofile,ext,myfile  
  2.   
  3. Set oup = Server.CreateObject("Persits.Upload")  
  4. oup.SetMaxSize 10000000, True  
  5. call oup.Save()  '这里是上传到服务器内存,并没有实际文件产生   
  6. set ofile = oup.files(1)  
  7. ext=killext(ofile.ext)  
  8.   
  9. myfile="/" & ganme(1) & "/" & gname(2) & ext  
  10.   
  11. call ofile.saveas(server.mappath(myfile))  




附加说明:

黑客如果用 nc 上传非法文件,最终得到的文件只是

如 200511051234559103.shit

之类的“狗屎”文件!


  • 上一篇:防止服务器被挂马的最有效的经验总结
  • 下一篇: 如何向dmoz提交网站
  • 返回
  •