1、漏洞简介
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得执行服务器端命令的能力
2、满足条件
3、文件上传导致的安全问题
4、文件上传检测方法及绕过
a.00截断绕过
b.大小写绕过:Php,pHp,PHp
c.双重后缀名:shell.jpg.php
d.黑名单绕过:通过上传不受欢迎的php扩展来绕过黑名单,例如:pht,phpt,phtml,php3,php4,php5,php6
e.文件解析规则绕过:上传 .htaccess 规则解析文件
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者 目录的访问、禁止目录列表、配置默认文档等功能。
先上传一个.htaccess文件,内容为:AddType application/x-httpd-php .aaa
。如下:
然后再上传文件后缀为.aaa的文件,让其解析为php类型文件。
f.配合文件包含漏洞使用:上传图片马,然后使用文件包含漏洞执行图片里的代码,(在我上一篇博客里有详细介绍)
h.配合解析漏洞使用
JPG:FF D8 FF E0 00 10 4A 46 49 46
PNG:89 50 4E 47 0D 0A 1A 0A
5、如何防御文件上传漏洞
6、解析漏洞
目录解析:在网站下建立文件夹的名称中带有.asp、.asa等可执行脚本文件后缀的文件夹,其目录内的任何扩展名的文件都被IIS当作可执行文件来解析并执行。
http://www.xxx.com/xx.asp/xx.jpg
文件解析:在IIS6.0下,分号后面的不被解析,也就是说xx.asp;.jpg将被当做xx.asp解析并执行。
http://www.xxx.com/xx.asp;.jpg
IIS6.0 默认的可执行文件有asp、asa、cer、cdx四种。
在默认Fast-CGI开启状况下,访问以下网址,服务器将把xx.jpg文件当做php解析并执行。
http://www.xxx.com/xx.jpg/.php
影响范围:Nginx0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37,访问以下网址,服务器将把xx.jpg文件当做php解析并执行。
http://www.xxx.com/xx.jpg%00.php
Apache对文件解析是从右到左开始判断解析,如果文件的后缀为不可识别,就再往左判断,解析。
如xx.php.owf.rar,由于Apache无法解析rar和owf后缀,但能够解析php后缀,因此Apache会将xx.php.owf.rar当做php格式的文件进行解析并执行。
访问以下网址,服务器将把xx.php.owf.rar文件当做php解析并执行。
http://www.xxx.com/xx.php.owf.rar
访问以下网址,服务器将把xx.jpg文件当做php解析并执行。
http://www.xxx.com/xx.jpg(非编码空格)\0.php
如果在Apache中.htaccess可被执行.且可被上传.那可以尝试在.htaccess中写入:
1 //这将把目录下的所有后缀为jpg的文件当做可执行的php脚本进行解析并执行。
2 <FilesMatch ".(jpg)$"> SetHandler application/x-httpd-php </FilesMatch>
3
4 //上传后缀为.aaa的文件,让其做为php类型文件进行解析
5 AddType application/x-httpd-php .aaa
参考链接:https://www.freebuf.com/column/227315.html
原文:https://www.cnblogs.com/Excellent-person/p/12451996.html