WEB漏洞-文件上传之基础及过滤方式

在现在越来越安全的体系下,SQL Injection 这类漏洞已经很难在安全性很高地站点出现,比如一些不错的.NET 或 JAVA 的框架基本上都是参数化传递用户输入,直接封死注入攻击。 而在非 php的web安全中最有威力的攻击主要有两种,第一种是SQL Injection,第二种便是上传绕过漏洞。(php 的还有远程文件包含或代码注入漏洞)。一般只要能注册普通用户,时常都能找到上传头像或附件之类的地方,这些地方就是好的突 破点,只要有办法绕过上传验证,并找到一句话木马的 web 路径基本上就能搞下这个站点。

WEB漏洞-文件上传.png

知识汇总

什么是文件上传漏洞?

凡是存在文件上传的地方均有可能存在文件上传漏洞,关于上传文件操作的时候对方代码写的是否完整、是否安全,一旦疏忽了某个地方可能会造成文件上传漏洞。

文件上传的原理

网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护

文件上传漏洞由哪些危害?

文件可以自定义,可以成为webshell,通过文件上传来上传网站后门,直接获取网站权限,属于高危漏洞。上传漏洞与SQL注入或 XSS相比 , 其风险更大 。可以获取数据库信息,可以对服务器提权,获取内网权限

文件上传漏洞如何查找及判断

  • 黑盒查找,文件后台,进入网站后台不一定获得网站权限,可以从后台获取网站权限,会员中心,通过图片上传,文件扫描,使用工具扫描出后台路径
  • 白盒查找,通过代码分析到上传漏洞,查找文件上传功能。

文件上传漏洞有哪些需要注意的地方?

对文件上传类型进行区分,是属于编辑器文件上传,还是属于第三方应用,还是会员中心。要确保文件上传是什么类型,就用什么类型方法对它进行后期的测试。

利用思路.png

  • 常规类:扫描获取上传,会员中心上传,后台系统上传,各种途径上传
  • 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

image.png

image (1).png

搜索上传界面

image (2).png

image (3).png

image (4).png

使用工具扫描

屏幕截图 2021-05-27 234244.png

不同格式下的文件类型后门测试

image (5).png

  • 不要妄想通过一个图片你能带着你的后门来控制网站。直接改格式有时候并没有什么用,什么格式代码就用什么格式去执行

image (6).png

配合解析漏洞下的文件类型后门测试

启动环境后,上传一个带有php脚本的图片

QQ截图20220106104952.png

使用字符串GIF89a和后缀伪装为图片格式

QQ截图20220106105827.png

在路径后面加上/.php就可以执行了,这并不是说这样加了都可以,是因为这里有Nginx畸形解析漏洞, 对方在解析上的出现了混乱.解析的规则是要看有没有漏洞,有的话可以按这种方法,没有的话就无法实现

QQ截图20220106105928.png

本地文件上传漏洞靶场环境搭建测试

第一关为例,限制上传类型,但是限制只是做在前端,可以通过burp来进行绕过,也可以通过修改前端代码来实现绕过

QQ截图20220106133310.png

使用burp绕过

QQ截图20220106133608.png

绕过后找到路径,进行访问

QQ截图20220106133938.jpg

QQ截图20220106133949.jpg

某CMS及CVE编号文件上传漏洞测试

存在会员中心,在上传头像界面可能存在文件上传漏洞

image (7).png

image (8).png

上传操作是使用JS进行验证,在浏览器前端完成。所以抓不到包,需要点击保存才会把数据推送到服务器

image (9).png

image (10).png

改成PHP

image (11).png

上传时显示上传失败,显示的是失败,错误提示没有路径的回显

image (12).png

注意到使用的是FineCMS,所以去搜索一些关于FineCMS的漏洞,就会找到漏洞可以利用的方式

image (13).png

根据前辈经验进行尝试

image (14).png

image (15).png

image (16).png