WEB漏洞-文件上传之基础及过滤方式
在现在越来越安全的体系下,SQL Injection 这类漏洞已经很难在安全性很高地站点出现,比如一些不错的.NET 或 JAVA 的框架基本上都是参数化传递用户输入,直接封死注入攻击。 而在非 php的web安全中最有威力的攻击主要有两种,第一种是SQL Injection,第二种便是上传绕过漏洞。(php 的还有远程文件包含或代码注入漏洞)。一般只要能注册普通用户,时常都能找到上传头像或附件之类的地方,这些地方就是好的突 破点,只要有办法绕过上传验证,并找到一句话木马的 web 路径基本上就能搞下这个站点。
知识汇总
什么是文件上传漏洞?
凡是存在文件上传的地方均有可能存在文件上传漏洞,关于上传文件操作的时候对方代码写的是否完整、是否安全,一旦疏忽了某个地方可能会造成文件上传漏洞。
文件上传的原理
网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护
文件上传漏洞由哪些危害?
文件可以自定义,可以成为webshell,通过文件上传来上传网站后门,直接获取网站权限,属于高危漏洞。上传漏洞与SQL注入或 XSS相比 , 其风险更大 。可以获取数据库信息,可以对服务器提权,获取内网权限
文件上传漏洞如何查找及判断
- 黑盒查找,文件后台,进入网站后台不一定获得网站权限,可以从后台获取网站权限,会员中心,通过图片上传,文件扫描,使用工具扫描出后台路径
- 白盒查找,通过代码分析到上传漏洞,查找文件上传功能。
文件上传漏洞有哪些需要注意的地方?
对文件上传类型进行区分,是属于编辑器文件上传,还是属于第三方应用,还是会员中心。要确保文件上传是什么类型,就用什么类型方法对它进行后期的测试。
- 常规类:扫描获取上传,会员中心上传,后台系统上传,各种途径上传
- CMS类:已知CMS源码,搜索已知cms漏洞
- 编辑器类:ckeditor,fckeditor,kindeditor,xxxeditor,也是搜索相关编辑器漏洞
- 配合解析漏洞下的文件类型后门:可以通过解析漏洞,上传包含后门代码的图片
文件上传在实际应用中的方式
方法一
- 先直接传一个PHP,实战先传马。
- 实战先传一个正常的图片,看看有无返回存储地址。
- 如果能直接上传并解析,已离成功不远。
方法二
- 先传一个shell,然后进行修改。
- connect-Type:image/jpeg,看看是否可以进行绕过,如果不行,在上传内容添加
GIF89a
- 当然上传了还得看是否能够被解析为php,所有的上传都要考虑是否能够被解析。
方法三
- 上传一个abc.abcd,目的只是为了查看是否为白名单还是黑名单绕过。
- 黑名单限制一般为此文件类型不允许上传,考虑双写,大小写,空格,
php2
,php3
,php4
,php5
,phtml
,等方式 - 我们继续上传一个/htaccess文件,
.htaccess
文件能够设置服务器的解析文件的格式,匹配到dudu
就已php
的格式来解析,继而上传马 - 如果说
.htaccess
不能上传,接下来上传一个.user.ini
,继而上传一个马
方法四
- 如果白名单限制上传
- 考虑00截断上传
- 文件包含漏洞+图片马
- 文件包含漏洞+二次渲染+图片马
方法五
- 上传的东西是否被服务器很快的删除或者移除,或者说上传成功,但是无法访问,就得考虑条件竞争。
- 以上均不行,考虑逻辑层面的思路。
涉及资源
演示案例
常规文件上传地址的获取说明
使用谷歌语法搜索
inurl:upload.php
搜索上传界面
使用工具扫描
不同格式下的文件类型后门测试
- 不要妄想通过一个图片你能带着你的后门来控制网站。直接改格式有时候并没有什么用,什么格式代码就用什么格式去执行
配合解析漏洞下的文件类型后门测试
- nginx解析漏洞
- https://vulhub.org/#/environments/nginx/nginx_parsing_vulnerability/
- 环境安装
- vulhub-master.zip
启动环境后,上传一个带有php脚本的图片
使用字符串
GIF89a
和后缀伪装为图片格式
在路径后面加上
/.php
就可以执行了,这并不是说这样加了都可以,是因为这里有Nginx畸形解析漏洞, 对方在解析上的出现了混乱.解析的规则是要看有没有漏洞,有的话可以按这种方法,没有的话就无法实现
本地文件上传漏洞靶场环境搭建测试
第一关为例,限制上传类型,但是限制只是做在前端,可以通过burp来进行绕过,也可以通过修改前端代码来实现绕过
使用burp绕过
绕过后找到路径,进行访问
某CMS及CVE编号文件上传漏洞测试
存在会员中心,在上传头像界面可能存在文件上传漏洞
上传操作是使用JS进行验证,在浏览器前端完成。所以抓不到包,需要点击保存才会把数据推送到服务器
改成PHP
上传时显示上传失败,显示的是失败,错误提示没有路径的回显
注意到使用的是FineCMS,所以去搜索一些关于FineCMS的漏洞,就会找到漏洞可以利用的方式
根据前辈经验进行尝试
0 条评论