文件上传漏洞——漏洞解析汇总

1、.htaccess文件突破上传

  • 该方法使用的前提:
  • 没有禁止.htaccess文件的上传,且服务商允许用户使用自定义.htaccess文件。
  • 原理:
  • .htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
  • 不足:
  • 虽然好用,但是会误伤其他正常文件,容易被发现。

2、 apache 1.X 2.X解析漏洞(wamp2.0)

  • 漏洞原理:
  • Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如 test.php.a.b的“.a”和”.b” 这两种后缀是apache不可识别解析,apache就会把test.php.a.b解析成test.php。
  • 不足:
  • 1、如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php. 即使文件名是 test2.php.jpg 也会以 php 来执行。
  • 2、如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行。

3、iis6.0解析漏洞

  • 目录解析:
  • 形式:www.xxx.com/xx.asp/xx.jpg
  • 原理: 服务器默认会把xx.asp目录下的文件都解析成asp文件。
  • 文件解析:
  • 形式:www.xxx.com/xx.asp;.jpg
  • 原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。

4、IIS 7.0/IIS 7.5/Nginx <=0.8.37

  • 漏洞原理:
  • Nginx拿到文件路径(更专业的说法是URI)/test.jpg/test.php后,一看后缀是.php,便认为该文件是php文件,转交给php去处理。
  • php一看/test.jpg/test.php不存在,便删去最后的/test.php,又看/test.jpg存在,便把/test.jpg当成要执行的文件了,又因为后缀为.jpg,php认为这不是php文件,于是返回“Access denied.”
  • 注意:
  • 这其中涉及到php的一个选项:cgi.fix_pathinfo,该值默认为1,表示开启。开启这一选项PHP可以对文件路径进行“修理”。
  • 举个例子,当php遇到文件路径“/1.jpg/2.txt/3.php”时,若“/1.jpg/2.txt/3.php”不存在,则会去掉最后的“/3.php”,然后判断“/1.jpg/2.txt”是否存在,若存在,则把“/1.jpg/2.txt”当做文件“/1.jpg/2.txt/3.php”,若“/1.jpg/2.txt”仍不存在,则继续去掉“/2.txt”,以此类推。

5、编辑器解析漏洞

  • 在线web编辑器,也叫做富文本 编辑器。
  • 富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器。
  • 富文本编辑器不同于文本编辑器,程序员可到网上下载免费的富文本编辑器内嵌于自己的网站或程序里(当然付费的功能会更强大些),方便用户编辑文章或信息。比较好的文本编辑器有kindeditor,fckeditor,ewebeditor等。
  • 这样的程序,能够在网站上写文档的时候,就像使用word一样,丰富多彩,且不需要写文档的人懂html代码。
  • 但正是由于这种富文本编辑器,带有word的功能,图片显示(它的图片显示相当于word的外部链接图片的形式。word可以是外部链接显示图片,就是一个word文档,但是会有多个其他图片的文件,也可以是嵌入word内部数据,所以只有一个word文档),所以就很有可能造成文件上传漏洞。

你可能感兴趣的:(文件上传漏洞,php)