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