指程序对文件的上传未作全面的限制,导致用户可以上传一些超越用户权限的一些文件,可以是木马,shell脚本,病毒等。
可以通过文件上传漏洞上传webshell后门。
黑盒: 使用扫描工具扫描打开网站。
黑盒:测试会员中心,测试后台。
白盒:直接撸源代码。
拿到漏洞后要对漏洞类型进行区分,编辑器、第三方应用、常规等。区分漏洞类型。
上传后门脚本获取网站权限
1、常规文件上传地址的获取说明:上传的文件要执行的话,要按照对应代码执行。
2、不同格式下的文件类型后门测试
3、配合*解析漏洞(php1.x)*下的文件类型后门测试本地文件:上传+解析漏洞=高危漏洞。
4、上传漏洞靶场环境搭建,测试某CMS及CVE编号文件上传漏洞测试:这种第三方插件的漏洞测试和常规漏洞测试是不一样的。
前端验证浏览器可直接禁用或删除,后端是安全的
1、将前端下载到本地。
2、删除过滤代码。
3、增添或修改action,修改为上传的源文件。
明确禁止上传的格式:asp,php,jsp,aspx,cgi,war。
若黑名单中没有定义或管理员配置文件问题,php5,Phtml可通过这两种格式绕过。
.htaccess文件上传漏洞原理及实例
windows系统在命名时末尾加空格,会默认去掉。可通过改包加空格绕过。
windows系统在命名时末尾加点,会默认去掉。可通过改包加点绕过。
【文件上传绕过】八、::$DATA上传绕过
简单过滤,
循环过滤,递归过滤更安全
明确可以上传的格式:jpg,png,zip,rar,gif…
地址get
%00相当于把后面的截断掉了,get会自动解码为截断符号,无需编码
post
修改,并url编码,post不会自动解码所以需要url编码为截断符号
此url编码不是文本文件%00的url编码
报文中Content-Type,可截包修改实行欺骗
情景:例如上传图片到服务器后,有二次操作,对图片删除修改和保存。
——简单来说就是在上传时,代码中分为两步。
先上传服务器,在验证文件格式。——不安全
先验证文件格式,在上传服务器。——安全
例:一个文件正在使用时,无法修改或删除。
在二次渲染中,先上传服务器,在进行验证(改名)。可通过工具不断刷新此文件,进行条件竞争。
Apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别(不在 默 mime.types文件内),则继续向左识别,直到识别到合法后缀才进行解析。
可以上传一个不识别的文件后缀,利用漏洞规则成功解析文件,其中后门代码被触发,例:x.php.yyy
在扫描到网站编辑器目录信息时,可利用编辑器漏洞。——在线提交脚本。
字典爆破
会员中心
Content-Disposition:一般可更改
name:表单参数值,不能更改
==filename:文件名,可以更改 ==
Content-Type:文件MIME,视情况更改
burp fuzz模糊测试
https://github.com/fuzzdb-project/fuzzdb
https://github.com/TheKingOfDuck/fuzzDicts
后端验证:采用服务端验证模式后缀检测:
后缀检测:基于黑名单,白名单过滤M工ME检测:
MIME检测:基于上传自带类型检测
内容检测:文件头,完整性检测
自带函数过滤:参考uploadlabs函数——get_image_pointer1
自定义函数过滤:function check_file(){ }
WAF防护产品:宝塔,云盾,安全公司产品等
有waf上传漏洞无法判定,
1、先绕过waf
2、进行漏洞判定