zoukankan      html  css  js  c++  java
  • 文件上传漏洞总结

    1.在很早以前,很多上传文件过滤是用的是javascript,所以改一下javascript或直接nc发包就行了。有的是判断后缀,有的只是判断id,比如:

    “uploadfile” style=”file” size=”uploadfile” runat=
    “lbtnUpload” runat=
    “JavaScript”>

    只是简单的对ID进行验证,只要构造javascript:lbtnUpload.click();满足条件达到上传木马的效果。成功以后查看源代码

    a “lbtnUpload” “javascript:__doPostBack(‘lbtnUpload’,”)”script ‘javascript’

     

    2.IIS6的目录解析问题如/a.aspx/a.jpg,在某些特殊情况下会应用到,在很早的时候由我同事1982发现的。

     

    3.某些上传文件的被动过滤有缺陷,有的只过滤asp,却忘了.asa、.cdx、cer等等,php的话就尝试php2、.php3、.php4 等等,相关实例有动力文章(Powereasy),具体参考http://www.sebug.net/vulndb/4326/

     

    4.结束符%00截断最后的后缀,最早是老外发现,当时非常流行,主流bbs程序都有此漏洞,比如dvbbs就存在此漏洞,非常经典!

     

    5.iis的文件名解析漏洞,比如a.asp;.gif,分号本身以及后面的都会被系统忽略,国人kevin1986发现的,非常经典!

     

    6.apache文件名解析漏洞,比如a.php.gif或a.php.aaa,最早看到国内的superhei先提出的。不过在新版 apache/php给补了。

     

    7.二次上传漏洞,最新的上传漏洞方法,主要是利用逻辑漏洞,比如无惧无组件上传代码:

     

    1. view sourceprint?1 fileExt=lcase(Mid(ofile.filename,InStrRev(ofile.filename,".")+1))   
    2.  
    3.  arrUpFileType=split(UpFileType,"|")'获得允许上传的所有文件扩展名   
    4.  
    5.  for i=0 to ubound(arrUpFileType)'判断上传的文件扩展名是否在允许的范围内   
    6.  
    7.  if fileEXT=trim(arrUpFileType(i)) then   
    8.  
    9.  EnableUpload=true   
    10.  
    11.  exit for   
    12.  
    13.  end if   

    这里的EnableUpload只验证了一次就变为了true,第一次上传合法文件使其变为true,第二次再上传webshell,利用这个漏洞需要上传组件支持一次多文件上传。

    有此类逻辑漏洞的不在少数,比如fckeditor最新版中,由于Fckeditor对第一次上传123.asp;123.jpg 这样的格式做了过滤。也就是IIS6解析漏洞。
    上传第一次,被过滤为 123_asp;123.jpg 从而无法运行。但是第2次上传同名文件123.asp;123.jpg后。由 于”123_asp;123.jpg”已经存在。
    文件名被命名为123.asp;123(1).jpg 123.asp;123(2).jpg这样的编号方式。其他的还有fckeditor 2.4 提交1.php再提交1.php+空格,详见http://superhei.blogbus.com/logs/4603932.html 《又见fckeditor》superhei一文。

     

    8.关键字一次性替换,比如有的后台增加.asa上传类型asa被过滤替换为空字符,但用.asasaa被过滤其中的asa剩下.asa就绕过了, 比如还有科讯Kesion CMS,漏洞在http://localhost/User/UpFileSave.asp?user_upfile.asp,文件名最后保证 是.asachr0.jpg或者.cerchr0.jpg就行了。

     

    9.上传程序存在sql注入。比如fckeditor 2.1.6就可以通过sql注入增加一个.asp上传类型。还有PunBB pun_attachment上传附件扩展sql注射漏洞,详见http://sebug.net/vulndb/12538/。

     

    10.小数点或空格被忽视,这个也是利用了win系统特性了,比如a.asp.和a.asp空格、a.php.

     

    11.超长文件名截断文件后缀,各系统版本的超长文件名长度可能各不相同,最常见的是应用在本地包含漏洞方面,由于php新版过滤了%00,所以用 a.php?files=../../../../../../../../../etc/passwd…………………………………(N个 点).html,推荐用.和/或空格来试。在win下:

    echo aaaa>a.asp若干个空格.gif

    dir a.asp

    2010-03-15 17:41 2,852 a.asp

     

    12.只校验了文件头和文件完整性

    有的上传程序校验文件头,并只允许上传图片文件类型且验证图片文件完整性(仅伪造文件头还是不行),但没有验证文件后缀,也没有强制更改上传文件的 后缀。我们可以新建一个几kb大小以内的jpg图片文件(颜色填充),然后用ue以十六进制打开文件,在文件内容末尾加些空格后再加上一句话木马< ?fputs(fopen("c.php","w"),"“)?>存为 aaa.php上传。如果有验证文件后缀,也可以结合以上方法绕过文件的后缀验证。

  • 相关阅读:
    一份感动到哭的成绩单……
    永远不要、不要、不要、不要放弃
    FusionChart 保存图片 小强斋
    JfreeChart的使用 小强斋
    JFreeChart中文API 小强斋
    FusionChart 小强斋
    面试题>旋转字符串 小强斋
    Dom4j 小强斋
    FusionChart 保存图片 小强斋
    JFreeChart中文API 小强斋
  • 原文地址:https://www.cnblogs.com/milantgh/p/3601724.html
Copyright © 2011-2022 走看看