文件上传漏洞
用户上传了一个可执行的脚本文件,并通过这个脚本文件获得了执行服务器端命令的能力
- 漏洞危害
挂黑链提高网站权重
占用服务器cpu进行挖矿
网站源码泄露 - 漏洞利用
1.找到上传点
2.绕过校验上传文件
3.获得文件位置
4.文件可被访问、执行或包含 - 漏洞防御
扩展名黑白名单
MIME类型校验
文件头校验
文件内容二次渲染
上传的文件重命名
不回显上传位置
禁用上传文件的执行权限
文件上传绕过
- 前端JS校验绕过
F12删除校验动作;通过bp抓包修改文件后缀;禁用网站JS - MIME类型绕过
bp抓包修改content-type,改为image/jpeg等白名单图片类型 - 等价扩展名绕过黑名单
asp:asa,cer,cdx
aspx:ashx,asmx,ascx
php:php2,php3,php4,php5,phps,phtml
jsp:jspx,jspf - 上传配置文件绕过黑名单
上传.htaccess将x.jpg文件解析成php文件
<FilesMatch "x.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
- 扩展名大小写绕过黑名单
- 扩展名末尾加空格绕过黑名单
windows操作系统会自动删除空格,bp抓包给文件扩展名添加空格 - 扩展名末尾加点绕过黑名单
windows操作系统会自动删除点,bp抓包给文件扩展名添加. - 扩展名末尾加::$DATA绕过黑名单
windows操作系统自动去掉不符合规则符号后面的内容,bp抓包给文件扩展名添加::$DATA - 多重点空格绕过黑名单
- 双写扩展名绕过黑名单
- 文件名截断绕过
url编码使用%00截断后面的文件名,上传文件1.jpg,请求路径./upload/1.php%00
bp抓包查看hex添加16进制00截断后面的文件名,上传文件1.jpg,请求路径./upload/1.php+,查看hex中+位置将2b修改为00 - 图片马绕过
合成图片马copy 1.gif /b + shell.php /a shell.gif,绕过文件头检测,配合文件包含漏洞可执行命令 - 图片二次渲染绕过
查看渲染后的文件内容没有更改的位置插入木马 - 条件竞争
bp抓包Intruder模块不断发包,上传一个运行能产生木马的文件,不断的访问该文件直至生成木马文件 - 中间件解析漏洞