文件上传漏洞小结(脱水版)
漏洞简介:
文件上传,顾名思义就是上传文件的功能行为,之所以会被发展为危害严重的漏洞,是程序没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。文件上传漏洞是漏洞中最为简单猖獗的利用形式,一般只要能上传获取地址,可执行文件被解析就可以获取网站或者服务器的权限。
漏洞原理
网站WEB应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型时,就可以上传任意文件甚至是可执行文件后门。
产生原因:
- 服务器配置不当
- 开源编辑器的上传漏洞(eweb,fck,ckfinder等)
- 本地文件上传限制被绕过
- 过滤不严或被绕过
- 文件解析漏洞导致文件执行
- 文件路径截断
常见上传点
- 上传头像
- 上传相册
- 上传附件
- 添加文章图片
- 前台留言资料上传
- 编辑器文件上传
- 文件管理处文件上传
- 前台用户发表文章处文件上传
漏洞危害
恶意文件传递给解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。根据网站使用及可解析的程序脚本不同,可以上传的恶意脚本可以是PHP、ASP、JSP、ASPX文件等。直接上传后门建立连接控制网站,可以得到web权限(网站,服务器);
思路:
凡是有上传的地方均可进行安全测试; 注意上传文件后的位置搜集
常见上传漏洞类型
1.文件上传校验
- - [1、客户端校验(javascript校验)](#1javascript_2)- [2、服务器端校验(Content-Type检验)](#2ContentType_12)- [3、服务端校验(黑名单)](#3_25)- [4、服务端校验:%00截断(0x00),也就是空字符](#4000x00_48)- [5、服务端校验(白名单)](#5_66)- [6、服务端校验(文件内容头校验)](#6_72)- [7、竞争上传](#7_80)- [8、可以参考我写的upload-labs通关wp](#8uploadlabswp_86) #### 1、客户端校验(javascript校验)
(1)判断方法:
点击上传会会直接显示是否可以上传,并且burp无法抓到POST的包
(2)绕过方法:
① 禁用JS
② F12修改
③ 抓包改包(上传允许上传的后缀,然后修改包)
2、服务器端校验(Content-Type检验)
注:就是判断MIME类型
(1)判断方法:
上传文件时,提示该后缀无法上传,且burp可以抓到POST包
(2)绕过方法:
①上传不允许的后缀文件时,抓包修改MIME类型(如果文件名可解析则不需用改,不能解析,则需要改)
②上传允许的后缀文件时,抓包后修改为可解析的文件名
③常见的MIMEI类型
注:上传后的MIME类型是根据你上传时的文件名后缀决定的
3、服务端校验(黑名单)
绕过方法:
①大小写绕过
②上传黑名单中没有的,但是能够被php解析的后缀,例如可以尝试上传php2/php3/php4/php5/phpt/phtml/phps
后缀进行绕过
③上传.htaccess文件
文件内容例1:SetHandler application/x-httpd-php,这行配置表示将所有后缀名都解析为php
文件内容例2:AddType application/x-httpd-php .jpg,指定后缀名解析为php
文件内容例3:指定以php解析的文件
<FilesMatch "xx.gif">
SetHandler application/x-httpd-php
</FilesMatch>
注:
(1)能解析的配置文件在httpd-php.conf
(2)利用.htaccess前提条件:
- httpd.conf中要AllowOverride All,AllowOverride None不行
- 需要加载mod_rewrite模块,LoadModule rewrite_module modules/mod_rewrite.so
4、服务端校验:%00截断(0x00),也就是空字符
(1)截断条件:
- php版本必须小于5.3.4php.ini中的magic_quotes_gpc设置为Off
(2)%00(0x00)截断原理:在有些函数执行时,会把这个字符(%00或0x00)当做结束符
注:GET请求使用%00,POST请求使用0x00
源码可参考如下:
①上传允许上传的后缀
②在目录后面添加截断
(3)实际类似于如下所示
</li>
5、服务端校验(白名单)
(1)apache解析漏洞
6、服务端校验(文件内容头校验)
例如:根据getimagesize()函数的返回值判断目标文件
绕过方法:在恶意脚本的头部加上允许上传文件的头标识
最常使用:GIF89a
7、竞争上传
原理:后端代码检测上传后的文件是否合法,不合法就删除
利用:尽管不合法的文件会被删除,但它还是存在过服务器中,只是存在的时间很短,所以我们通过竞争上传(多线程),达到上传的速度比它服务器删除的速度快即可
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十