千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 漏洞复现文件上传漏洞利用方式与原理概述

漏洞复现文件上传漏洞利用方式与原理概述

来源:千锋教育
发布人:qyf
时间: 2022-08-12 15:15:07 1660288507

  介绍

  文件上传漏洞是指用户上传了一个可执行的脚本文件(php、jsp、xml、cer等文件),而WEB系统没有进行检测或逻辑做的不够安全。文件上传功能本身没有问题,问题在于上传后如何处理及解释文件。

  分类

  根据简介,主要分为上传(客户端)、解析(服务端)两大类。

  上传-javascript检测

  简介

  通过js代码,对文件后缀进行判断。

  原理

  一般使用白名单或黑名单的方式,判断文件后缀,根据后缀决定用户是否上传。

  攻击

  Firebug插件删除判断函数

  使用靶机pikachu做例子,直接通过F12修改。

  tupian.php

  <?php

  echo phpinfo();

  ?>

图片 1

  F12查看代码

图片 2

  客户端通过onchange实践的checkFileExt函数进行检测,我们删除掉调用这个函数的部分。-

图片 2(1)

  我们再次上传tupian.php

  

图片 3

  看路径,我们修改上方的url,进行访问。

图片 6

  看到代码已经运行。

  中间人攻击-burpsuite拦截

图片 7

图片 8

图片 9

图片 10

  防御

  上传无法防御,可以进行文件重命名。

  上传-MIME检测

  简介

  js的检测基本没有了,开始使用后端代码进行检测,虽然进行MIME检测是使用的后端代码,但是,依然是从客户端获取的,可以从客户端修改,我还是归于上传这一类了。

  简单来说,在请求头中Content-Type:type/subtype来表明类型,常见的有

  text/plain

  text/html

  image/jpeg

  image/jpg

  image/png

  audio/mpeg

  audio/ogg

  audio/*

  video/mp4

  application/*

  application/json

  application/javascript

  application/ecmascript

  application/octet-stream

  攻击

  中间人攻击-burpsuite拦截

  burpsuite拦截

  修改Content-Type

  Forward 可以看到发送过去了,后序验证同上,不再重复截图。

  防御

  上传无法防御,可以进行文件重命名。

  上传-后端文件格式检测

  简介

  一些后端代码含有一些函数,能够判断文件类型,获取文件的一些信息。以php为例,php的getimagesize函数可以获取图像的一些信息,如果不是图像,那么无法获取信息,就会报错。

  有的站点使用文件头来检测文件类型,这种检查可以在Shell前加入对应的字节以绕过检查。几种常见的文件类型的头字节如下表所示

  类型 二进制值

  JPG FF D8 FF E0 00 10 4A 46 49 46

  GIF 47 49 46 38 39 61

  PNG 89 50 4E 47

  TIF 49 49 2A 00

  BMP 42 4D

  原理

  如果你学过图像相关的课程,比如信息隐藏这门课,会使用Matlab读取图像,进行信息隐藏,你就会知道图像的一些格式,符合格式的话就是那个类型的文件,一般是头部的一些字节。我们通过将恶意代码前面添加其他类型文件的头部就可以伪造成另一个类型,进而绕过检测。

  攻击

  我们修改tupian.php为tupian.php.jpg,进行上传。

图片 11

  没有办法上传,虽然后缀对,但是内部是不正确的。

  我们使用Linux中的xxd或od命令来查看.PNG或.png图片的信息(博主虽然是在Windows中,但是使用的是cygwin)。

图片 4

图片 5

  可以看到文件前面是一样的。

  使用cmd命令 copy /b CA.png + tupian.php tupian.png

图片 6(1)

  目录下会生成新图片tupian.png,而且符合png格式,但是在图片后面是php代码。

图片 7(1)

图片 8(1)

  图片上传成功,但是打开后还是图片。

  我们再使用之前的文件包含漏洞就可以了,注意url。

图片 9(1)

  php由于历史原因,部分解释器可能支持符合正则 /ph(p[2-7]?|t(ml)?)/ 的后缀,如 php / php5 / pht / phtml / shtml / pwml / phtm 等 可在禁止上传php文件时测试该类型。

  jsp引擎则可能会解析 jspx / jspf / jspa / jsw / jsv / jtml 等后缀

  asp支持 asa / asax / cer / cdx / aspx / ascx / ashx / asmx / asp{80-90} 等后缀。

  除了这些绕过,其他的后缀同样可能带来问题,如 vbs / asis / sh / reg / cgi / exe / dll / com / bat / pl / cfc / cfm / ini 等。

  防御

  若没有文件包含漏洞,问题不大,否则无法防御。

  上传-文件截断

  简介

  php %00截断,由于00代表结束符,00后面的所有字符都会删除掉,发生在php5.3.4之前版本,php的magic_quotes_gpc为OFF状态。

  攻击

图片 10(1)

图片 11(1)

  正好被水印挡住了,挡住的部分就是参数magic_quotes_gpc。

  解析-Apache文件解析

  一个文件可以有多个后缀,如:lady_killer.txt.png.mp3,在Windows中自然是认为这是mp3文件,也就是说最后的后缀生效。但是,Apache却是从右向左读后缀,不认识的跳过继续读,前面的文件就认为是图片,如果没有配置mp3后缀的话。因此,对于

  tupian.php.xxx就会认为这是php文件。类型的定义在Apache/conf/mime.types中

  解析-IIS文件解析

  IIS 6也出现截断攻击,截断字符为";"。由于phpStudy没有这个版本,太老了,不想去实现了,知道下就行了。

  解析-PHP CGI路径解析

  没找到了2010年的cve,可能是提交的bug吧,就是路径为evil.jpg/1.php时,Nginx会把evil.jpg当做php文件交给php运行。

  绕过

  前端绕过

  通过抓包提交,绕过前端js检测,删除对js验证脚本的调用,使其不能对上传的文件类型做检测,从而达到绕过

  黑名单绕过

  使用更多后缀

  jsp jspx jspf

  asp asa cer aspx

  php php3 php4 pht phtml

  后缀大小写绕过

  由于windows不区分大小写,后端校验未使用strtolower等函数将文件后缀大小写统一处理,导致黑名单不完整而绕过

  1.pHP

  后缀双写绕过

  后端过滤时,使用了preg_replace等替换函数将php关键字替换为空,但是却没有循环替换,导致前面的ph和后面的p重新组合成php,从而导致绕过

  1.phphpp

  空格绕过

  由于Windows处理文件时,会自动删除文件后缀带有的空格和点,从而导致绕过。

  1.php

  后面有空格

  ::$DATA绕过

  Windows的一种流文件格式,上传这种格式流文件格式的同时会在相同目录下生成一个含有相同内容宿主文件

  MIME绕过

  修改Content-Type中为允许的类型,以下为常见MIME类型

  GIF image/gif

  JPG image/pjpeg image/jpeg

  ZIP application/x-compressed application/octet-stream

  JSP text/html

  EXE application/octet-stream

  %00截断绕过

  PHP<5.3.29,且GPC关闭时,%00在URL中充当结束符,当解析到%00时,解析器就会认为字符串已经读取完毕

  1.php%00a.jpg

  十六进制的0x00也可

  文件头检查绕过

  例如,仅允许上传图片,通过文件头来判断,这时可以将恶意代码拼接到图片后面

  条件竞争绕过

  有的文件上传功能是先将文件下载到服务器,如果是有问题的就删除,我们可以利用这一逻辑漏洞,不断上传文件,即可访问。

  防御

  1.文件类型判断

  后缀白名单,MIME类型判断结合

  2.文件重命名

  3.文件上传目录设置为不可执行

  更多关于“网络安全培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT