目录
文件上传漏洞是指在Web应用程序中,攻击者可以利用漏洞绕过应用程序的文件上传验证机制,将恶意文件上传到服务器上的漏洞。
文件上传漏洞通常是由于服务器端没有正确实施文件上传的安全措施造成的。常见的原因包括缺乏文件类型检查、缺乏文件大小限制、不正确的文件扩展名验证、不正确的目录权限设置等。攻击者可以通过绕过这些不足之处来上传恶意文件。
当用户可以上传文件并将其存储在服务器上时,攻击者可以通过构造恶意的文件来利用该漏洞。攻击者可能会上传具有恶意脚本代码的文件,例如Web shell、恶意程序或恶意内容的文件。一旦文件被上传并存储在服务器上,攻击者就可以执行恶意代码或利用上传的文件进行进一步的攻击。
在站点页面按F12键或者站点页面空白处右击,打开调试面板,选择“网络”,然后上传图片文件和非图片文件,然后对这两个文件的变化进行对比,如果网络中没有数据变化,说明存在,如果有变化,那说明此漏洞不存在。
删除JS或者禁用JS
使用Burpsuite对浏览器进行代理,然后BurpSuite抓包 修改文件后缀名,或者文件内容
windows对大小写不敏感,所以上传文件的时候可以使用大小写混合的方式进行绕过
服务端将黑名单的后缀名替换为空,但是仅替换一次,所以可以上传.phphpp后缀,替换后成了.php
php1 php2 php3 php4
前提条件:Apache开启.htaccess文件功能
黑名没有过滤.htaccess;
编辑.htaccess文件,写入
- *1.把目录下的shell.jpg的文件当做可执行的php脚本进行解析并执行。*
- <FilesMatch "shell.jpg">
- SetHandler application/x-httpd-php
- </FilesMatch>
-
- *2.上传后缀为.aaa的文件,让其做为php类型文件进行解析*
- AddType application/x-httpd-php .aaa
-
-
-
- *上传一句话木马并以.jpg结尾,一句话木马内容写入*
- <?php @eval($_POST['pass']);?>
-
- *webshell工具连接*
程序中的检测代码却不能自动删除空格
Windows系统对于文件的重命名会自动把点给去掉
Window系统对于文件名+"::$DATA",会把::$DATA之后的数据当成文件流处理,自动去掉文件名后的::$DATA,并且不会检测后缀名,保持::$DATA之前的文件名。
MIME绕过
%00截断
0x00截断
0x0a截断
文件头检测
二次渲染
条件竞争
对文件上传进行严格的输入验证:对上传文件的格式、类型、大小等进行限制,只允许上传安全的文件类型,并限制文件大小,避免上传恶意或危险的文件。
对上传文件进行病毒扫描:在文件上传之后,通过病毒扫描引擎对上传文件进行扫描,确保文件不含有病毒或恶意代码。
文件重命名和存储路径随机化:将上传的文件重命名,并将存储路径随机化,避免直接使用上传的文件名和固定存储路径,防止攻击者通过文件路径遍历漏洞或直接访问上传的文件。
设置文件访问权限:对上传的文件设置适当的访问权限,避免非授权用户访问上传的文件。
实时监测和日志记录:监测文件上传操作,实时记录上传文件的相关信息,包括上传者、上传时间、文件类型、文件大小等,便于追踪和审计。
使用安全的文件存储策略:对上传的文件进行安全存储,可以考虑将文件存储在非web根目录或数据库中,避免直接存储在可通过URL访问的目录下。
定期更新和修补系统:及时更新和修补系统和应用程序,避免文件上传漏洞被恶意利用。
加强网络安全防护:通过加密传输、防火墙、入侵检测等技术手段,加强网络安全防护,防止攻击者利用文件上传漏洞进行网络攻击。
参考链接:文件上传漏洞总结(含原因+防御措施)+白名单+黑名单+内容、头+解析漏洞/修补方案_java文件上传黑名单白名单处理-CSDN博客