文件上传漏洞

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

相关推荐

  1. 文件漏洞

    2024-06-14 20:56:02       13 阅读
  2. ·xss文件漏洞

    2024-06-14 20:56:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-14 20:56:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-14 20:56:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-14 20:56:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-14 20:56:02       18 阅读

热门阅读

  1. 深入浅出MyBatis:全面解析与实战指南

    2024-06-14 20:56:02       9 阅读
  2. 二维码扫描,没有生成,生成比较复杂

    2024-06-14 20:56:02       7 阅读
  3. 43、Flink 自定义窗口触发器代码示例

    2024-06-14 20:56:02       8 阅读
  4. 针对oracle系列数据库慢数据量大的问题

    2024-06-14 20:56:02       8 阅读
  5. git本地配置及IDEA下Git合并部分文件

    2024-06-14 20:56:02       8 阅读
  6. Spring Boot 3 整合 Redisson 实现分布式锁

    2024-06-14 20:56:02       8 阅读
  7. gitlab克隆本地切换p分支

    2024-06-14 20:56:02       8 阅读
  8. Webrtc支持FFMPEG硬解码之Intel(一)

    2024-06-14 20:56:02       7 阅读
  9. 前端开发中的热更新原理

    2024-06-14 20:56:02       9 阅读
  10. Linux/Ubuntu/Debian常用服务管理命令

    2024-06-14 20:56:02       9 阅读
  11. 【Spring Boot实现网页会话(Session )】

    2024-06-14 20:56:02       8 阅读