文件上传
一、文件上传的原理
由于程序员对用户上传功能实现时,没有对其名称、类型、内容或大小等进行验证和限制,导致攻击者可以向服务器上传一个与网站相应的恶意代码文件。如webshell(即ASP木马、PHP木马、JAVA木马等),通过执行这些恶意代码,获取服务器权限等。
二、文件上传的危害
执行任意代码:攻击者可以上传包含恶意代码的文件,然后在服务器上执行该代码,从而控制服务器并获取敏感信息。
篡改网站内容。
数据泄露。
拒绝服务攻击:上传大量无效文件来占用服务器存储空间和带宽,从而使服务器无法正常工作。
三、文件上传的利用
前端校验
1 | 传正常文件修改数据包 |
MIME头检测
1 | 修改Content-Type类型 |
黑名单限制不完全
1 | 利用别名绕过 |
Apache解析漏洞
1 | . 绕过 |
上传 .htaccess
1 | 只在apache服务器上起作用。 |
上传 .user.ini
1 | PHP 5.3.0+ |
windows
1 | 空格绕过 |
%00截断 GET POST
1 | < php6.3.4 |
图片马
1 | 图片马+文件包含漏洞 |
四、文件上传漏洞修复
文件类型验证:在上传文件前,必须对文件类型进行严格的检查和校验,仅允许上传已授权的文件类型。
文件内容检查。
上传文件重命名。
隐藏上传文件目录,文件路径随机化。
安全权限设置:对于上传文件所在目录,设置合适的文件访问权限。