PHP代码审计之文件上传漏洞
漏洞介绍:
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和
有效的,“文件上传”本身是没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果
漏洞危害:
上传文件的时,服务器端脚本语言未对上传的文件进行严格的验证和过滤,就有可能上传恶意的文件,从而控制整个网站,甚至是服务器。
漏洞条件:
• 文件可上传
• 知道文件上传的路径
• 上传文件可以被访问
• 上传文件可以被执行
文件上传可控点
• Content-Length,即上传内容大小
• MAX_FILE_SIZE,即上传内容的最大长度
• filename,即上传文件名
• Content-Type,即上传文件类型
• 请求包中的乱码字段,即是所上传文件的内容
• 有可能存在请求包中的可控点还有上传路径,只是上面的示例中没有出现
挖掘思路:
• 上传点都调用同一个上传类,直接全局搜索上传函数
• 黑盒寻找上传点,代码定位
代码案例:
• name:客户端的原始上传文件名称
• Type:上传文件的MIME类型
• Tmp_name:服务器端用来保存上传文件的临时文件路径
• Error:上传文件时的错误信息
• Size:上传文件的大小,单位是
文件上传绕过-客户端
• 1.用firebug将form表单中的onsubmit事件删除
• 2.上传木马文件,Burp拦截数据包,修改扩展名
文件上传绕过-服务端
• 1.黑白名单过滤
• 2.修改MIME类型
• 3.截断上传攻击
• 4. .htaccess文件攻击
• 5.目录验证
修复方案:
• 检测文件上传内容
– 黑白名单验证,检测文件扩展名是否合法
– MIME验证,检测文件的MIME类型
• 限制文件大小
• 更改临时文件夹的路径
• 读取上传文件的绝对路径 与文件名称
• 隐藏文件路径
目录穿越及文件
- 点赞
- 收藏
- 关注作者
评论(0)