首页 > 编程知识 正文

php漏洞扫描,文件上传漏洞怎么利用

时间:2023-05-06 06:22:44 阅读:21647 作者:1747

文件上传漏洞一、文件上传原理

1 .在文件上传功能中,服务器端的脚本语言没有严格验证并过滤上传的文件,因此恶意用户上传恶意脚本文件时,具有执行服务器端命令的能力这就是文件上传的漏洞。

2 .文件上传漏洞对web APP应用来说是非常严重的漏洞。 一般来说,web APP允许用户上传头像和附件等信息。 如果web APP没有有效地检查和过滤用户上传的文件,恶意用户上传一句Webshell,如木马,目的是控制网站。

二、文件上传漏洞高危触发点

1 .上传相册、头像

2 .视频、照片共享

3 .上传附件(论坛帖子、邮箱)。

4 .文件管理器

三、文件上传的防御方式

1 .客户端(前端js检查) )。

2 .服务端

文件扩展名检测

黑名单检查:通常有特殊的黑名单文件,其中包含常见的危险脚本文件。

白名单检查:一般有专用的whitelist文件,其中包含已知良好的文件。

Jpg png GIF

四、文件上传的绕过方式

如何绕过黑名单

1 .漏洞分析

2 .屏蔽上传

3 .可能存在大小写旁路漏洞,如ASP或pHp

4 .双重写入php-例如pphphp等

5 .寻找带有黑名单扩展名的漏网鱼——如asa和cer等

jspjspxjspfaspasaceraspxphpphp2PHP3PHP4PHP5phtml exe exe

使用Windows命名机制: shell.PHP.shell.PHP空间shell.PHP :1.jpg shell.PHP 33603360 $ data

绕过白名单的方式

1 .漏洞分析

2 .屏蔽上传

mime 给出的是图像的 MIME 信息,此信息可以用来在 HTTP Content-type 头信息中发送正确的信息,如:header(“Content-type: image/jpeg”);

MIME-type规定了打开文件的时候默认使用的应用程序
文件头就是用来规定文件的一些必要属性的,当应用程序打开文件时读取这些属性值来处理这些文件
同一张图片存储为jpg格式和png格式时,文件的大小是不同的,即数据在两种格式的文件中存储的方式是不同的,因此文件头也就不同
Web应用程序在校验文件类型、文件扩展名的同时,也会校验文件头,从而进一步确定文件的类型。针对这种情况,可以通过在上传的一句话木马文件的开头加入特定的文件头从而绕过这种校验方式
绕过方式

常用的三个图片格式文件头(使用cs32软件)
png
89 50 4E 47 0D 0A 1A 0A
gif
47 49 46 38 39 61
JPG
FF D8 FF E0 00 10 4A 46 49 46
图片码的生成(cmd)
copy 1.png /b + 1.php /a 2.php
文件上传检测与绕过之.htaccesss
该方法使用的前提:web具体应用没有禁止.htaccess文件的上传,同时web服务器提供商允许用户上传自定义的.htaccess文件
原理:.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
利用方式:上传覆盖.htaccess文件,重写解析规则,将上传的带有脚本马的图片以脚本方式解析。
创建方式
win10 直接可以创建以.htaccess的文件
win10以下版本(cmd) cmd -> echo hello world > .htaccess
1.将当前目录下所有文件解析成php文件

<IfModule mime_module>SetHandler application/x-httpd-php</IfModule>

2.将当前目录下后缀名为jpg的文件解析成PHP文件

<IfModule mime_module>AddHandler php5-script .jpg</IfModule>

3.将当前目录下文件名为1.jpg的文件解析成PHP文件

<FilesMatch "1.jpg">SetHandler application/x-httpd-php</FilesMatch>

五、常见的解析漏洞

1.apache 1.x 2.x解析漏洞(实验环境:wamp2.0)
漏洞原理
Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。比如 test.php.a.b的“.a”和”.b” 这两种后缀是apache不可识别解析,apache就会把test.php.a.b解析成test.php。
漏洞形式:
www.test.com/test.php.a
其余配置问题导致漏洞
如果在 Apache 的配置文件中有这样一行配置 AddHandler php5-script .php 这时只要文件名里包含.php. 即使文件名是 test2.php.jpg 也会以 php 来执行
如果在 Apache 的配置文件中有这样一行配置 AddType application/x-httpd-php .jpg 即使扩展名是 jpg,一样能以 php 方式执行
如何查看Apache的版本
在phpinfo中查看
2.IIS6.0解析漏洞
目录解析
原理: 服务器默认会把xx.asp目录下的文件都解析成asp文件
形式:www.xxx.com/xx.asp/xx.jpg
文件解析
原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了
形式:www.xxx.com/xx.asp;.jpg
3.nginx解析漏洞( 实验环境:Nginx1.4.6 )
漏洞原理
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”,以此类推
漏洞形式
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.php
4.IIS7.5解析漏洞
IIS7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7.5本身的漏洞
漏洞形式
www.xxxx.com/UploadFiles/image/1.jpg/1.php
5.windows系统解析漏洞
旧版Windows Server中存在空格和dot漏洞类似于 a.php. 和 a.php[空格] 这样的文件名存储后会被windows去掉点和空格,从而使得加上这两个东西可以突破过滤,成功上传,并且被当作php代码来执行
漏洞形式
test.asp.
test.asp(空格)
test.php:1.jpg
test.php:: $DATA
6.条件竞争
条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生

六、文件上传漏洞的防御
1.文件上传目录设置为不可执行
利用.htaccess文件对web服务器进行限制,禁止执行脚本文件,前提是该类型的文件一定要禁止上传
2.文件类型判断
MIME-TYPE检测/后缀名检测,强烈推荐使用白名单
使用压缩函数或者resize函数对上传的图片进行处理,去掉图片中的HTML代码
3.使用随机数改写文件名和文件路径
4.单独设置文件服务器
在文件服务器把所有目录设置为可读可写不可执行
保证文件服务器的安全级别很高,并且上传的文件十分可靠
5.二次渲染
imagecreatefromjpeg:由文件或 URL 创建一个新图象
imagejpeg:输出图象到浏览器或文件
6.防御总结
文件上传漏洞的主要防护思路就是检测上传文件是否符合允许的文件类型,可以根据文件头部来判断文件类型;如果是图片类型文件,可利用PHP函数判断图片是否有效,或者对图片重新绘图,生成新的的图片。上传后的文件,要进行随机化重命名,让攻击者无从猜测。
无论上传的资源类型是哪一种,上传目录都要禁止执行权限;可写不执行,执行不可写。这样,就算恶意脚本绕过前面的重重限制最终上传到了服务端也没有解析,其危害也非常有限

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。