1、什么是文件上传漏洞?
答:文件上传漏洞是指攻击者通过上传恶意文件到服务器、从而执行任意代码、获取系统权限或者破坏系统安全的漏洞、常见于允许用户上传文件的Web应用程序中。
2. 文件上传漏洞形成原因
-
未验证文件类型:未对上传文件的类型、扩展名或内容进行验证。
-
未限制文件大小:未限制上传文件的大小,可能导致服务器资源耗尽。
-
存储路径不安全:上传文件存储在Web目录下,且文件名可预测或可控。
-
未重命名文件:上传的文件保留原始文件名,可能被覆盖或执行。
-
未扫描恶意内容:未对上传文件进行病毒或恶意代码扫描。
3. 文件上传漏洞防御措施
-
文件类型验证:检查文件扩展名和MIME类型,确保只允许安全类型。
-
文件内容检查:检查文件内容,确保其符合预期格式。
-
文件重命名:上传后重命名文件,避免使用用户提供的文件名。
-
存储路径安全:将上传文件存储在非Web可访问目录,或配置服务器禁止执行上传目录中的脚本。
-
文件大小限制:限制上传文件的大小,防止资源耗尽。
-
病毒扫描:对上传文件进行病毒扫描。
-
权限控制:确保上传目录的权限设置正确,防止文件执行。
4、文件上传漏洞复现
4.1、通过禁用JavaScript代码进行绕过
首先我们需要在chrome浏览器上进行设置、不允许使用JavaScript代码
然后我们进行对服务器进行上传webshell、名称为web.php。并使用浏览器对其进行访问web.php文件、看是否可以访问到。
由此可得、我们的webshell上传成功。
4.2、MIME验证
判断文件类型(http请求的Content-Type字段)是否为image/jpeg、image/png、image/gif,通过
Burpsuite抓包修改Content-Type字段类型为image/jpeg、image/png、image/gif绕过,上传web.php
通过burp suite进行抓包可以看到、我们已经成功将webshell上传。
4.3、进行修改httpd.conf配置文件。
在apache http服务器的配置中、'AddType'指令用于将特定的 MIME 类型与文件扩展名相关联。 这是upload-labs默认的httpd.conf文件的配置。
通过修改AddType指令,使.php5也能被解析为php文件。
通过重启Apache服务、上传webshell、上传成功并且能够被正确解析。
4.4、通过修改大小写进行绕过。
将webshell文件后缀.php进行修改成.phP。也可以成功上传webshell.
4.5、通过空格绕过
此时我们通过burp suite抓包可以看到webshell可以被成功上传。
4.6、通过加点.进行绕过
4.7、进行双写php进行绕过