三、pikachu之文件上传

文章目录

  • 1、文件上传概述
  • 2、客户端检测
    • 2.1 客户端检测原理及绕过方法
    • 2.2 实际操作之client check
  • 3、服务端检测
    • 3.1 MIME type
      • 3.3.1 检测原理
      • 3.3.2 绕过方法
      • 3.3.3 实际操作之MIME type
    • 3.2 文件内容检测
      • 3.2.1 检测原理
      • 3.2.2 绕过方式
      • 3.2.3 实际操作之getimagesize()
    • 3.3 其他服务端检测

1、文件上传概述

  上传文件时,如果未对上传的文件进行严格的验证和过滤,就容易造成文件上传漏洞,上传脚本文件(包括asp、aspx、php、jsp等)。恶意上传行为可能导致网站甚至整个服务器被控制。恶意的脚本文件又被称为WebShell,WebShell具有强大的功能,如查看服务器目录、服务器中文件、执行系统命令等。

2、客户端检测

2.1 客户端检测原理及绕过方法

  客户端(Client):或称为用户端(前端),与服务器相对应。由于客户端对于文件上传漏洞的防御是通过JS代码实现的,所以客户端检测与绕过也称为JS检测与绕过。

  由于后端PHP代码没有对文件做任何检测,所以只要绕过前端JS的校验就可以上传WebShell。

  • 删除浏览器事件;
  • 利用BurpSuite抓包修改文件后缀名;
  • 构造上传表单。

2.2 实际操作之client check

(1)如何判断存在JS检测?

  分别上传图片文件和非图片文件,通过抓包,如果流经Burp的数据包不同(有or没有),则说明存在JS检测。

  • 上传正常图片文件:
    三、pikachu之文件上传_第1张图片
  • 上传非图片文件:
    三、pikachu之文件上传_第2张图片

  刚选择非图片文件,就弹出警告框,说明存在JS检测。

(2)绕过JS检测

1)第一种方法:删除浏览器事件。

三、pikachu之文件上传_第3张图片
三、pikachu之文件上传_第4张图片

可以看到,成功绕过JS检测。但是,需要注意的是,在谷歌浏览器上使用该方法可能会失效。

2)第二种方法:禁用JS
三、pikachu之文件上传_第5张图片
三、pikachu之文件上传_第6张图片
3)第三种方法:bp抓包,修改文件名。
三、pikachu之文件上传_第7张图片
三、pikachu之文件上传_第8张图片

3、服务端检测

3.1 MIME type

  MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。常见的MIME 类型如下:

文件拓展名 Mime-Type
.js application/x-javascript
.html test/html
.jpg image/jpeg
.png image/png
.pdf application/pdf

3.3.1 检测原理

  判断$_FILES["file"]["type"]是不是图片格式(image/gif、image/jpeg、image/png),不是则不允许上传。在HTTP 协议中,使用Content-Type字段表示文件的MIME 类型。$_FILES["file"]["type"]的值是从请求数据包中Content-Type中获取。
在这里插入图片描述

3.3.2 绕过方法

  通过抓取数据请求包,上传php文件时,Content-Type值是application/octer-stream,上传jpg格式的文件时Content-Type值是image/jpeg。可修改文件类型进行绕过。

3.3.3 实际操作之MIME type

三、pikachu之文件上传_第9张图片
三、pikachu之文件上传_第10张图片

3.2 文件内容检测

3.2.1 检测原理

  利用getimagesize()函数获取图片的宽高等信息,如果上传的不是图片,那么则获取不到信息。

三、pikachu之文件上传_第11张图片
  服务端主要检测文件幻数:

类型 文件幻数
JPG FF D8 FF E0 00 10 4A 46 49 46
GIF 47 49 46 38 39 61 (GIF89a)
PNG 89 50 4E 47

3.2.2 绕过方式

  在脚本文件开头补充图片对应的头部值,或在图片后写入脚本代码
三、pikachu之文件上传_第12张图片

3.2.3 实际操作之getimagesize()

  在linux中使用cat test.png 1.php >> test1.jpg 制作图片马。
在这里插入图片描述
三、pikachu之文件上传_第13张图片

3.3 其他服务端检测

  • 后缀名检测域绕过
  • 00截断检测与绕过
  • 条件竞争检测与绕过

你可能感兴趣的:(pikachu,安全)