文件上传漏洞

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像,附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断,比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式重命名后存储在指定的目录,如果说后台对上传的文件没有进行任何的安全判断或者判断的条件不够严谨,则攻击者可能会上传一些恶意的文件,比如一句话木马,从而导致服务器权限被获取。

防范文件上传漏洞的方法

  1. 验证文件类型、后缀名、大小
  2. 验证文件的上传方式
  3. 对文件进行一定复杂的重命名
  4. 不要暴露文件上传后的路径
  5. 等等

进入第一关

提示我们只允许上传图片

但是我们打开F12看到

这里的JS调用了一个checkFileExt的方法

这个方法在后面也找得到,大致的意思就是判断文件的扩展名是不是为jpg、png、gif

我们知道这种前端的限制只能起到辅助作用,起不到实质性的作用

我们只需要把之前那个input标签的onchange的属性删除,让上传的时候触发不了这个方法

就可以达到我们上传的目的

然后我们上传我们的php一句话木马

访问路径,测试一下我们的一句话是否能执行

第二个栏目是考MIME的

什么是MIME可以百度一下

php里有一个$_file函数来获取请求头里面的Content-Type

因此,我们只需要用抓包修改请求头里Content-Type的值

就可以绕过验证

第三个栏目—getimagesize

getimagesize()这个函数返回结果中有文件大小和文件类型,如果用这个函数来获取类型,从而判断是否是图片的话,会存在问题

我们可以伪造图片头

我们先普及一下基础知识

先查看一下他们的图片头

用linux的xxd命令

发现png图片的头部十六进制都一样

那我们可以用windows的cmd命令把一张图片和一个php文件合起来变成一个文件

安排一手

选择两个文件

合成一个新的文件叫xxx.png

表面上看还是这个图片

我们把xxx丢进kali看看

发现前面还是正常的图片,但是在最后跟上了我们的一句话木马

还需要了解的是

PHP的文件包含

include在发现错误的时候会继续执行后面的代码

当遇到我们的png的时候,会一直往下读取,执行到我们的一句话的时候就会正确执行

上传的时候我发现在21行会报错

测试后把这半条代码删除就可以正常上传

成功上传了我们的xxx.png

我们来访问一下

发现可以正常访问

但是,他是一个png

那么我们要这么才能让他执行里面的php代码呢

就要用到我们之前的文件包含漏洞

那就要让本地文件包含漏洞找到我们的png图片

发现我们上传的文件在这个文件夹之下那么我们就可以拼凑出

unsafeupload/uploads/7043985d85e8876ad12573844907.png

来进行测试,看看网站是否能找到我们的png

反正就是大概猜测在哪个目录能访问我们图片所在的路径

../../unsafeupload/uploads/7043985d85e8876ad12573844907.png

经测试我们可以用这个路径访问到我们的phpinfo

往下拉就能看到

文件上传漏洞(pikachu)的更多相关文章

  1. 【原创】JEECMS v6~v7任意文件上传漏洞(1)

    文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定 ...

  2. web安全之文件上传漏洞

    成因: 当文件上传时,若服务端脚本语言未对上传的文件进行严格验证和过滤,若恶意用户上传恶意的 脚本文件时,就有可能控制整个网站甚至是服务器,这就是文件上传漏洞. 权限: 1. 后台权限:登陆了后台,可 ...

  3. Web应用安全之文件上传漏洞详解

    什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这 ...

  4. 文件上传漏洞演示脚本之js验证

    文件上传漏洞演示脚本之js验证 0 0       716   关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码 ...

  5. 中国电信某站点JBOSS任意文件上传漏洞

    1.目标站点 http://125.69.112.239/login.jsp 2.简单测试 发现是jboss,HEAD请求头绕过失败,猜测弱口令失败,发现没有删除 http://125.69.112. ...

  6. CKFinder 1.4.3 任意文件上传漏洞

    CKFinder 是国外一款非常流行的所见即所得文字编辑器,其1.4.3 asp.net版本存在任意文件上传漏洞,攻击者可以利用该漏洞上传任意文件. CKFinder在上传文件的时候,强制将文件名(不 ...

  7. 小白日记38:kali渗透测试之Web渗透-手动漏洞挖掘(四)-文件上传漏洞

    手动漏洞挖掘 文件上传漏洞[经典漏洞,本身为一个功能,根源:对上传文件的过滤机制不严谨] <?php echo shell_exec($_GET['cmd']);?> 直接上传webshe ...

  8. PHP漏洞全解(九)-文件上传漏洞

    本文主要介绍针对PHP网站文件上传漏洞.由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 P ...

  9. WordPress Contact Form 7插件任意文件上传漏洞

    漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...

随机推荐

  1. mybatis诡异的bug

    在使用mybatis中使用 foreach 时,出现了一个诡异的bug java文件中是 List<ImportTaskInfoEntity> selectByCalcBatchIds(@ ...

  2. [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

    昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是 ...

  3. 十进制转化为非十进制C++代码

    还是先为大家介绍一下原理吧. 假设余数为 r ,十进制数为 n :(拆分为整数 zs ,余数 ys) 对 zs:需要将 zs 除 r 取余数,直到商为 0 停止,将余数倒序排列即可. 对 ys:需要将 ...

  4. Vertica的这些事(九)——-vertica存储统计信息

    vertica存储统计信息: 表数量: select count(distinct table_name) FROM tables; 分区表数量: select count(distinct tabl ...

  5. NLP(二十八)多标签文本分类

      本文将会讲述如何实现多标签文本分类. 什么是多标签分类?   在分类问题中,我们已经接触过二分类和多分类问题了.所谓二(多)分类问题,指的是y值一共有两(多)个类别,每个样本的y值只能属于其中的一 ...

  6. Azure SDK for Python Url

    Azure SDK for Python URL 明细表 AZURE_PUBLIC_CLOUD = Cloud( 'AzureCloud', endpoints=CloudEndpoints( man ...

  7. rem样板

    window.onload=window.onresize=function(){ var rem=document.documentElement.clientWidth*20/320; docum ...

  8. MariaDB使用数据库查询《三》

                                                                 MariaDB使用数据库查询 案例5:使用数据库查询 5.1 问题 本例要求配 ...

  9. vue技术栈进阶(02.路由详解—基础)

    路由详解(一)--基础: 1)router-link和router-view组件 2)路由配置 3)JS操作路由

  10. PHP程序员的能力水平层次(一)

    前言 之前看过很多篇关于服务端工程师和PHP开发者的能力模型介绍,每篇都对能力有侧重点. 下面我们来详细谈谈以开发能力为基准点的PHP程序员的能力水平层次. 层层递进 1.功能开发 这个水平的程序员一 ...