文件上传漏洞

1.文件上传

指攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。

文件上传漏洞条件

  • 上传的文件能被Web服务器当做脚本来执行
  • 我们能够访问到上传文件的路径

一般我们会利用文件上传漏洞上传一句话木马,然后用菜刀连接获取 webshell。但是这里有两个问题:

  • 第一你的文件能上传到web服务器
  • 第二你的文件能被当成脚本文件执行,所以要想让上传文件被当成脚本执行,我们经常会和文件包含漏洞和文件解析漏洞一起利用

2.测试流程

3.防御手段

 3.1前端绕过

1.js校验 》》修改源代码/禁用js

3.2后端校验 

1.内容校验

1.MME类型检测

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型是设定某种扩展名的文件 用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,其实可以理解为多媒体类型,jpg图 片 -- image/jpeg png image/png 浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打 开方式。每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的 种类。

常见的MIME类型(通用型):
超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic

2. 代码注入绕过--getimagesize()

方法一:直接伪造头部GIF89A

方法二:CMD方法,copy /b test.png+1.php muma.png

方法三:直接使用工具增加备注写入一句话木马。

2.后缀校验

就是对文件后缀名进行判断,那么我们采取两种方式绕过,黑名单和白名单。 黑名单指的是程序员在写代码的时候,有时候会将一些php、jsp等脚本或者代码加入黑名。白名单是指运行只允许那些通过。

如果是后端黑名单过滤的话,我们可以想尽任何办法绕过黑名单进行上传。比如如果目标服务器是windows系统的话,我们可以利用windows系统的解析漏洞,用burpsuite抓包,将文件名后缀改为 .php. 或者空格.php ,因为在windows系统内是不允许文件以 . 或者空格结尾的。所以在绕过上传之后windows系统会自动去掉 点和空格。所以,该文件最终还是会被解析成 .php 。或者还可以将php三个字母变换大小写,因为在windows系统里面是不区分大小写的。

如果是白名单检测的话,我们可以采用00截断绕过00截断利用的是php的一个漏洞。在 php<5.3.4 版本中,存储文件时处理文件名的函数认为0x00是终止符。于是在存储文件的时候,当函数读到 0x00(%00) 时,会认为文件已经结束。
例如:我们上传 1.php%00.jpg 时,首先后缀名是合法的jpg格式,可以绕过前端的检测。上传到后端后,后端判断文件名后缀的函数会认为其是一个.jpg格式的文件,可以躲过白名单检测。但是在保存文件时,保存文件时处理文件名的函数在遇到%00字符认为这是终止符,于是丢弃后面的 .jpg,于是我们上传的 1.php%00.jpg 文件最终会被写入 1.php 文件中并存储在服务端

文件上传靶场

其他绕过姿势请 移步下方链接

CSDNicon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/138535978

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值