靶场科普 | 文件上传之PHP解析漏洞

发表时间:2022-05-05 16:17

本文由“东塔网络安全学院”总结归纳

靶场介绍:

文件上传之PHP解析漏洞

靶场科普 | 文件上传之PHP解析漏洞


今天,给大家介绍一下“东塔攻防世界”其中的一个靶场:“文件上传之PHP解析漏洞”。

一、实验介绍

1. 文件上传漏洞简介

在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。

文件上传漏洞对Web应用来说是一种非常严重的漏洞。一般情况下,Web应用都会允许用户上传一些文件,如头像、附件等信息,如果Web应用没有对用户上传的文件进行有效的检查过滤,那么恶意用户就会上传一句话木马等Webshell,从而达到控制Web网站的目的

2. 文件上传漏洞高危点

相册、头像上传;视频、照片分享;附件上传(论坛发帖、邮箱);文件管理器

3. 文件上传校验方法

1)、客户端
2)、服务端:

检查后缀(白黑名单绕过、特殊扩展名、大小写、0x00截断、.htaccess等);

检查内容(文件头、图片马等);其他

4. php解析漏洞:

解析漏洞是指服务器应用程序在解析某些精心构造的后缀文件时,会将其解析成网页脚本,从而导致网站的沦陷。大部分解析漏洞的产生都是由应用程序本身的漏洞导致的。

靶场科普 | 文件上传之PHP解析漏洞


1. lIS6.0站上的目录路径检测解析绕过上传漏洞

默认遇到/就不解析后面的了
IlS6.0目录路径检测解析,文件的名字为“*.asp/xxx.jpg”,也同样会被ⅡIS当作 ASP文件来解析并执行首先我们请求laaa.asp/xxxx.jpg
从头部查找查找“."号,获得.asp/xxxx.jpg
查找"T,如果有则内存截断,所以/aaa.asp/xxxx.jpg会当做/aaa.asp进行解析

2. IlS6.0站上的解析缺陷绕过上传漏洞
llS6.0目录路径检测解析,文件的名字为"*.php;xxx.jpg”,也同样会被ⅡIS当作PHP文件来解析并执行首先我们请求laaa.php;xxx.jpg
从头部查找查找.号,获得.php;xxx.jpg
查找;,如果有则内存截断,所以/aaa.php;xxx.jpg会当做/aaa.php进行解析
3. Apache解析缺陷绕过上传漏洞
可以用于服务器端扩展名检测黑名单绕过。原理
当浏览器将文件提交到服务器端的时候,服务器端会根据设定的黑白名单对浏览器提交上来的文件扩展名进行检测,如果上传的文件扩展名不符合黑白名单的限制,则不予上传,否则上传成功。
4. htaccess文件上传解析漏洞(重写解析规则绕过)
.htaccess是apache服务器中的一个配置文件,不是上传的文件的黑名单之内,所以.htaccess文件是可以上传成功。上传覆盖.htaccess文件,重写解析规则,将上传的带有脚本马的图片以脚本方式解析。
编写.htaccess文件。
打开记事本,将如下代码写入文本中:
1l AddTypeapplication / x-httpd-php.jpg
然后点击文件选中另存为,编写文件名为.htaccess,选择保存类型为所有文件。
.htaccess文件里的代码的含义是将上传的文件后缀名为.jpg格式的文件以php格式来解析文件。将.htaccess文件进行上传,上传成功。


二、实验目的

1. 掌握文件上传的功能和原理

2. 理解利用解析漏洞绕过检测的流程和原理


三、实验步骤

1. 打开实验环境,了解文件上传漏洞的原理

2. 进行文件上传,抓包分析数据包,选择相应的绕过方法实现上传webshell


四、防御方式

1. 对上传的文件在服务器上存储时进行重命名

2. 禁止上传危险的文件类型,如jsp jar war等

3. 只接收指定类型的文件

4. 上传文件做日志记录

5. 普通用户与系统管理员的权限要有严格的区分2.强迫使用参数化语句

6. 加强对用户输入的验证

7. 多使用数据库自带的安全参数

8. 使用专业的漏洞扫描工具来寻找可能被攻击的点