漏洞介绍
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和“文件上传”本身是没有问题,有问题的是文件上传后,服有效的,务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果
漏洞危害
上传文件的时,服务器端脚本语言未对上传的文件进行严格的验证和过滤,就有可能上传恶意的文件,从而控制整个网站,甚至是服务器
比如。上传一个webshell,就是我们说的一个恶意文件
漏洞条件
文件可上传
知道文件上传的路径 (文件上传后的路径)
上传文件可以被访问
上传文件可以被解析执行 (可以配合文件包含漏洞)
文件上传可控点
Content-Length 即上传内容大小
MAX_FILE_SIZE,即上传内容的最大长度
filename 就是上传文件名
Content-Type 即上传文件类型
请求包中的 乱码字段, 就是 上传文件的内容
有可能存在请求包的可控点,还有上传路径,
挖掘思路
上传点都调用同一个上传类,直接全局搜索上传函数
黑盒寻找上传点,代码定位
上传函数都有,
找到上传代码,看相应代码,是怎么执行的,能不能绕过
upload_tmp_dir 是 本地上传临时保存的路径
写一个html上传表单
写一个处理文件
文件上传绕过 - 客户端
1.用firebug将form表单中的onsubmit事件删除 ---js代码禁用
2.上传木马文件,Burp拦截数据库,修改扩展名
任何客户端都是不安全的
文件上传绕过 - 服务端
1.黑白名单过滤
2.修改MIME类型
3.截断上传攻击
4. .htaccess文件攻击
5.目录验证 文件上传,允许用户放到指定目录,目录存在 将写入的文件放到目录iis6.0可以
修复方案
检测文件上传内容
黑白名单验证,检测文件扩展名是否合法
MIME验证,检测文件的MIME类型
限制文件大小
更改临时文件夹的路径
读取上传文件的绝对路径与文件名称
隐藏文件路径