文件上传漏洞

文件上传功能在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. WiX 自定义

    WiX 允许用户做一些自定义操作 用户界面向导 对于安装界面,用户可以用自己的位图.图标和许可证文本替换默认的.它们的路径存储在变量中,您可以在命令行或直接在源代码中指定这些变量: <WixVa ...

  2. CSS盒子模型(boeder)+浮动(float)+定位(position)

    盒子的上下层:margin--background-color--background-image--padding--content--border(最外层) 计算一个盒子宽 =  内容的宽(wid ...

  3. 面试常问的 Java 虚拟机运行时数据区

    写在前面 本文描述的有关于 JVM 的运行时数据区是基于 HotSpot 虚拟机. 概述 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以 ...

  4. App 性能测试分享

    在本文内,主要以Android性能测试为主进行分析 一.性能测试包含 1.启动时间测试   测试场景包括 - - - 首次安装启动时间.冷启动.热启动测试 2.页面响应时间:   用户从点击一个控件, ...

  5. Go语言笔记(1)变量的定义与赋值

    变量的定义与赋值 在go笔记系列开始之前,我强烈建议大家使用Goland的IDM,配合vscode使用真的非常亲民. 1.go程序基本结构 首先,是go程序的基本结构,主要有package引入包.im ...

  6. Zabbix报警机制,Zabbix进阶操作,监控案例

                                                                                                        ...

  7. 好玩Python——PIL项目实训

    PIL学习总结: 1. 2,PIL库概述: pil库可以完成图像归档和图像处理两方面功能的需求: 图像归档:对图像进行批处理,生成图像预览,图像转换格式等: 图像处理:图像基本处理,像素处理,颜色处理 ...

  8. scrapy中使用selenium来爬取页面

    scrapy中使用selenium来爬取页面 from selenium import webdriver from scrapy.http.response.html import HtmlResp ...

  9. idea运行gradle项目报错,找不到符号符号,方向xxxx类未知

    报错: 解决:把build和run设置为idea

  10. 一个不错的java学习博客

    http://iteye.blog.163.com/blog/static/18630809620131484835129/