首页 > 其他分享 >文件上传漏洞

文件上传漏洞

时间:2023-04-20 14:34:20浏览次数:37  
标签:文件 后缀 前端 漏洞 file 绕过 php 上传

基础知识

上传文件,使用burp抓包,会出现如下两种情况:
- ①若burp抓到请求包:
	- 则说明存在服务端检测,
		- 可通过修改数据包中文件的content-type 类型、修改filename为.htaccess、添加文件头GIF89a,等操作进行绕过。
- ②若burp未抓到请求包:
	- 则说明存在前端检测,
		- 需禁用浏览器JavaScript后再重新抓包绕过。

1.在前端校验

  • 绕过方式:在浏览器中禁用JavaScript直接用Burp重命令后发送注册请求
    • 修改文件名绕过(.jpg → .php)
  • 注意:虽可以在前端禁用JavaScript代码执行,但不建议这么做,因为前端页面中可能还存在很多JS的功能全部都可能被禁用。

2.在后端校验

  • 绕过方式:
    • 大小写转换(.php → .PhP)
    • 使用Burp修改content.type后绕过

3.upload-labs靶场环境绕过方式提醒

前端绕过
类型绕过
黑名单绕过
大小写绕过
图片马包含
空格绕过
点绕过
点空格点绕过
双写绕过
条件竞争
Windows专用
Apache解析机制

dvwa
pikachu

靶场实战

upload-labs:http://127.0.0.1/uploadlabs

Pass-01-前端JS检查

【提示】本pass在客户端使用js对不合法图片进行检查!

  • 三种方法:
    • 前端禁用JS
    • 修改后缀,通过Burp上传改回后缀
    • 部分浏览器可直接修改前端代码

Pass-02-只验证Content-type

【提示】本pass在服务端对数据包的MIME进行检查!

  • 方法:
    • 上传shell.php,抓包修改content-type为图片类型:
      • image/jpeg,image/png,image/gif

Pass-03-黑名单绕过

【提示】本pass禁止上传.asp|.aspx|.php|.jsp后缀文件!

黑名单:禁止XXX,限制范围有限
白名单:只允许XXX

  • 源代码:本关对文件进行了重命名,部分代码如下:(第三行)
if(!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;            
            if (move_uploaded_file($temp_file,$img_path)) {
                 $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
        }
  • 方法:
    • 用黑名单不允许上传.asp .aspx .php .jsp后缀的文件,但可以上传.phtml .phps .php5 .pht,前提条件:且还需要后台配置,即在apache的httpd.conf(路径:D:\Tools\phpstudy_pro\Extensions\Apache2.4.39\conf)中加入如下一条配置命令:
      • AddType application/x-httpd-php .php .phtml .php5

Pass-04-htaccess绕过

【提示】本pass禁止上传 .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf 后缀文件!

黑名单拒绝了几乎所有有问题的后缀名,除了.htaccess

标签:文件,后缀,前端,漏洞,file,绕过,php,上传
From: https://www.cnblogs.com/xiaosu23/p/17336710.html

相关文章

  • 根据题库表文件抽取题目形成试卷表格
    试卷指的是抽取的题目类似试卷,但是不是格式是试卷那种格式。应对考试搞得一个,题库里面的题非常之多,每次都看完不太可能,就想着自动抽取汇总成题目文件。1'''2抽取100道题目:单选30,多选10,填空10,判断改错10,名词解释20,问答203'''45importxlwings6impor......
  • logstast filebeat 文件
    logstast filebeat 文件#ampleLogstashconfigurationforcreatingasimple#Beats->Logstash->Elasticsearchpipeline.input{beats{port=>5044}}#output{#stdout{codec=>rubydebug}#}filter{json{......
  • 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
    评:建立好一个Maven项目后,如果JavaResources资源文件下没有src/main/java文件夹,并且在手动创建这个文件时提示“已存在文件”。这说明,在这个项目配置中已经有了src/main/java这个文件夹,至于为什么不显示,我暂时也还不清楚,希望谁明白了跟我下,谢了。(已解决)[b]第二种方法:这是最......
  • C# Web实现文件上传下载功能实例解析
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传......
  • struts2文件上传的采用的三种方式解析
    文件上传几乎是每个项目实现的一个必须的模块。上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上,让网络上的人都能看到。将制作好的网页、文字、图片等发布到互联网上去,以便让其他人浏览、欣赏。这一过程称为上传。JAVA实现文件上传的几个组件:......
  • Linux下查看及修改进程打开的文件句柄数量
    评:编写的通讯程序,tomcat启动用户无法登录,且报Causedby:java.lang.OutOfMemoryError:unabletocreatenewnativethread,问题原因是当前用户文件句柄设置导致,操作系统当时设置为1024,[b]且需要注意,重新打开shell终端才能ulimit查看生效[/b] ----查看Linux系统默认的最大文件句......
  • PHP Web实现文件上传下载功能实例解析
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • Oracle MySQL Server 拒绝服务漏洞(CVE-2023-21912) 修复
    CVE编号公告标题和摘要最高严重等级受影响的软件CVE-2023-21912OracleMySQLServer拒绝服务漏洞未经身份验证的远程攻击者可通过MySQL协议网络访问MySQLServer,成功利用此漏洞可导致目标MySQLServer挂起或频繁重复崩溃,造成拒绝服务攻击重要MySQLServer<=5.7.41......
  • Web 下载文件名乱码解决以及多浏览器兼容方案
    在web开发中,经常我们会遇到如导出或者下载网页这种需求,但是往往会遇到在chrome浏览器下载的文件名正常,但是到firefox,Safari上却乱码的情况,经过网上的资料多次研究,最终总结出了如下的方法,代码如下:///<summary>///浏览器下载文件,完整文件下载,不支持分片下载,为了兼容safari,下......
  • 1、Git初始化、环境配置、文件创建提交到版本库、比较文件变动
    Git初始化、环境配置、文件创建提交到版本库、比较文件变动1.git基本信息查看git版本[root@ubuntu2004~]#git--versiongitversion2.25.1创建项目根[root@ubuntu2004~]#mkdirdeploy-demoapp[root@ubuntu2004~]#cddeploy-demoapp/初始化Git仓库,生成.git目录结构[ro......