• 文件上传漏洞(pikachu)


    文件上传漏洞

    文件上传功能在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

    往下拉就能看到

  • 相关阅读:
    在Android初次的前期学习中的十二个小例子(附案例下载)
    实验二 汇编命令(伪指令)实验
    实验一 用机器指令和汇编指令编程
    用汇编实现十六进制数转化为八进制数(除法)
    用汇编语言实现从1加到100(1+2+...+100)
    实验一 绘制任意斜率的直线段 | 使用VS2017工具
    Nginx+Keepalived实现Nginx高可用负载均衡
    Linux系统在线扩容(根目录)磁盘空间
    Redis集群部署
    CentOS7安装OpenStack-11.部署Ceph分布式存储架构
  • 原文地址:https://www.cnblogs.com/qxxaq/p/11634435.html
Copyright © 2020-2023  润新知