File Upload
本文最后更新于 1108 天前,其中的信息可能已经有所发展或是发生改变。

上传时通常会对文件名后缀做验证,可以用空字节(%00)来做截断上传。

黑名单验证:

黑名单验证较简单,通常是更改大小写,换成通用后缀就行了。

一般情况为白名单验证,需要构造文件名绕过验证。

截断上传文件名构造

尝试大写,双写,Php,pHp,phP,PHp,pHP,PhP,PHP,phpphp,phphpp,php3,php4,php5等

pic.jpg.phpppppp
pic.jpg%00.php
pic.jpg  .php//上一行经过url解码
pic.php%00.jpg

上传带有php代码的图片后需要注意上传后的URL是否为主站链接,有可能会上传至CDN服务器,可能不支持PHP等解析。

JS验证可以直接抓包改代码上传。

 

FCK二次上传漏洞,(文件名重名自动修改)

FCKEditor是一款非常流行的富文本编辑器,为了方便用户,它带有一个文件上传功能,但是这个功能却出过多次漏洞。

FCKEditor针对ASP/PHP/JSP等环境都有对应的版本,以PHP为例,其文件上传功能在:

http://www.xxx.com/path/FCKEditor/editor/filemanager/browser/default/browser.html?,配合解析漏洞。

php 的 @ereg 或 preg_match 都会被 空字节截断,如%00,0x00,/x00

 

服务器解析漏洞

.phtml可能会被解析为.php

apache解析漏洞:

/pic.php.phppppp.jpg

IIS5.x-6.x解析漏洞

使用iis5.x-6.x版本的服务器,大多为windows server 2003,网站比较古老,开发语句一般为asp;该解析漏洞也只能解析asp文件,而不能解析aspx文件。

目录解析(6.0)

形式:www.xxx.com/xx.asp/xx.jpg

原理: 服务器默认会把.asp,.asp目录下的文件都解析成asp文件。

文件解析

形式:www.xxx.com/xx.asp;.jpg

原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。

解析文件类型

IIS6.0 默认的可执行文件除了asp还包含这三种 :

/test.asa

/test.cer

/test.cdx

nginx解析漏洞

漏洞原理

Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI,但是PHP为什么会接受这样的参数,并将phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo这个选项了。 如果开启了这个选项,那么就会触发在PHP中的如下逻辑:

PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了

漏洞形式

www.xxxx.com/UploadFiles/image/1.jpg/1.php

www.xxxx.com/UploadFiles/image/1.jpg%00.php

www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php

另外一种手法:上传一个名字为test.jpg,然后访问test.jpg/.php,在这个目录下就会生成一句话木马shell.php。

IIS7.5解析漏洞

IIS7/7.5在Fast-CGI运行模式下,在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。

 

 

上一篇
下一篇