zoukankan      html  css  js  c++  java
  • Pikachu-Unsafe Fileupload 不安全的文件上传

    0x00   不安全的文件上传漏洞概述不安全的文件上传漏洞概述

    文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。
    当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。

    比如上传头像  jpg  png  上传文档 dox
    如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
    所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
    --验证文件类型、后缀名、大小;
    --验证文件的上传方式;
    --对文件进行一定复杂的重命名;
    --不要暴露文件上传后的路径;
    --等等...

    0x01 客户端check

    选择php文件 上传失败 选择jpg文件上传成功

    查看源码,  上传文件时   运用到了function checkFileExt(filename)函数 对上传的文件做了判断

     在前端做限制   很容易做绕过  将unchange 删掉  ,再次上传1.php,就可以成功上传

     

    在实际操作中  要知道上传的路径 才能进行操作

    http://192.168.50.100/pikachu/vul/unsafeupload/uploads/l.php?x=ipconfig

     

     0x02 服务端check   MIME TYPE

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名文件用一种应用程序来打开的方式类型,

    当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义文件名,以及一些媒体文件打开方式。

    每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。
    常见的MIME类型(通用型):
    超文本标记语言文本 .html text/html
    xml文档 .xml text/xml
    XHTML文档 .xhtml application/xhtml+xml
    普通文本 .txt text/plain
    RTF文本 .rtf application/rtf
    PDF文档 .pdf application/pdf
     
     

    上传php文件 点提交

    查看源码,  定义了一个数组 并且调用了uploadfile函数

     

     函数 作用 获取mime类型 再进行比较

     

    上传1,jpg  抓包   观察 他的type

    上传ghz.php  抓包   观察 他的type

    修改ghz.php  的type

    页面显示  上传成功 

     

     0x04 getimagesize()

    getimagesize()函数将测定任何图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通HTML文件中<IMG>标记中的 height/width 文本字符串。

    如果用这个函数来获取类型 从而判断是否是图片  会存在问题

    是否可以绕过?  可以  因为图片头可以伪造

    查看图片第一行代码 发现 图片头都一致

     

    使用copy命令~ 

    补充:

    文件包含和文件上传 俩个漏洞结合起来的利用

    文件上传漏洞使用  将图片头复制过来 伪造图片  然后将恶意代码嵌入    将jpg上传成功后  得到路径

    再利用文件包含 漏洞  http://192.168.50.100/pikachu/vul/fileinclude/fi_local.php?filename=file1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

    就可以读取文件

    文件上传漏洞防范:

  • 相关阅读:
    JavaWeb-RESTful(一)_RESTful初认识
    【算法】简单题_球弹跳高度的计算
    【算法】简单题_鸡兔同笼问题
    【算法】贪心算法_节目时间安排问题
    SVN_SVN的基本认识
    JavaWeb_(视频网址)_二、用户模块1 注册登陆
    【知识库】-数据库_MySQL性能分析之Query Optimizer
    【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表
    【知识库】-数据库_MySQL之基本数据查询:子查询、分组查询、模糊查询
    【知识库】-数据库_MySQL常用SQL语句语法大全示例
  • 原文地址:https://www.cnblogs.com/xingyuner/p/12310214.html
Copyright © 2011-2022 走看看