目录
解析漏洞
IIS6/7.X
IIS6.0版本中,存在着目录解析漏洞和文件解析漏洞。
其中的网站的目录下的*.php的文件夹下的文件会被当做php来执行,也就是说我们在上传文件的时候可以上传一个1.php/2.jpg的文件,那么在IIS6.0的环境下,2.jpg会被当做php来执行。
IIS6.0还对应着文件解析漏洞,如果出现“;”号,则IIS6.0会出现错误,例如1.php;2.jpg,它会将分号后面的文件当做php来执行。
IIS7.0 7.5具有文件解析漏洞
在IIS7.x的环境中,当我们开启cgi.fix_pathinfo功能的时候,会对路径进行修剪,比如说:我们访问文件的路径是:1.jpg/.php,此时发现后缀名为php,IIS服务器便将文件交给php进行处理,但是php发现无法访问该文件,随后将就/.php进行删除,然后将1.jpg用php来执行。
Apache
多后缀特性
Apache的文件解析漏洞主要是因为他允许一个文件名中可以有多个“.”,因此他在识别文件的后缀的时候,是从右向左逐个去分割来识别,比如上传的文件名为1.php.x1.x2.x3。那么它在识别的时候首先就是识别x3,发现并不是合法的文件后缀,然后再去识别x2、x1,最终回去识别php,发现php是合法的文件后缀,那么就会以php的形式来执行这个文件,以绕过黑名单验证的这种方式。
AddHandler导致的解析漏洞
如果服务器给.php后缀添加了处理器:AddHandler application/x-httpd-php.php;那么只要文件名中包含着.php,那么这个文件就会被以php的方式来执行,例如我们上传的文件名为shell.php.png;由于png是合法的后缀名,在添加处理器的情况下,由于文件中存在着php所以shell.php.png会以php脚本来执行。这种方式可以来绕过白名单的限制。
罕见后缀
Apache不仅仅认可.php后缀,他还认可php3、php4、php5、pht、phtml等罕见后缀,因此在某些文件上传的时候如果是黑名单验证不完整的情况,我们无法上传php后缀的文件。这里可以参考一下upload-labs的第三关。在上传以php3、php4、php5、pht、phtml等罕见后缀的文件,依然会以php的方式来执行我们的代码。
Apache换行解析漏洞
影响版本:2.4.0~2.4.29
HTTPD是一个HTTP服务器,它可以通过mod_php来运行php网页,在解析shell.php\x0a时会以.php来执行,从而能绕过一些安全的策略。
Nginx
Nginx<=0.8.37-文件解析漏洞
在Nginx<=0.8.37的环境中,在默认开启Fast-CGI的情况下,与IIS7.x的文件解析漏洞一样,在文件的路径(x.jpg)加上/*.php,那么x.jpg就会被当做php的脚本来执行。
常用利用方法就是将一个正常的图片文件和含有恶意代码的文本文件合并成一个图片文件。
copy 1.jpg/b+shell.txt/a shell.jpg
然后我们上传的文件名就是shell.jpg/1.php,那么其中的shell.jpg就会被当做php脚本来执行。
当然在Nginx<=0.8.37的环境中,如果Fast-CGI关闭,那么他还是存在文件解析漏洞,在这种情况下,在一个文件路径(/xx.jpg)下面加上.php,那么这个文件同样也会被当作是php脚本来执行。拿上面的例子来举例,我们上传带有恶意代码的shell.jpg,我们可以将它命名为shell.jpg.php,那么上传的这个shell.jpg会被以php的形式来执行。
常见编辑器上传漏洞
编辑器时非常好用的网页在线编辑器,顾名思义就是让用户能够在线的去进行文本的编辑,类似于word一样。
常见的编辑器有ewebeditor、Ueditor、kindeditor、Fckeditor。
其中的ewebeditor存在着文件上传漏洞,通过编辑图片样式管理,在图片类型那里添加asp允许上传asp的脚本文件;我们就可以将其利用上传asp的马。
百度Ueditor编辑器net.版本1.4.3存在文件上传
http://domain/controller.ashx?action=catchimage 参数为catchimage,
case:”catchimage”,这里会实例化类,在具体实现文件上传的类的方法里只验证了content-type类型
也就是说这里只验证了MIME信息,所以我们可以上传一个.php文件,进行抓包,将content-type中的类型修改为image/png。
kindeditor编辑器
修改content-type:text/plain 然后文件名修改为.html后缀即可。
Fckeditor的任意文件上传
在php处理的地方并未对Media类型进行上传文件类型的控制,导致用户可以上传任意文件。在Fckeditor2.0版本中允许上传asa、cer、php2、pht、php4等后缀的文件,因此我们在上传文件shell.php时可以将后缀名修改为shell.php4来达到目的。