网安面经之文件上传漏洞

devtools/2024/10/18 23:24:11/

一、文件上传漏洞

1、文件上传漏洞的原理?危害?修复?

原理:⽂件上传漏洞是发⽣在有上传功能的应⽤中,如果应⽤程序对⽤户上传的⽂件没有控制或者存在缺陷,攻击者可以利⽤应⽤上传功能存在的缺陷,上传⽊⻢、病毒等有危害的⽂件到服务器上⾯,从而控制服务器。

危害:会造成⽹⻚篡改、⽹站挂⻢、服务器被远程控制、被安装后⻔等。

修复:1、使用白名单限制文件上传的类型。 2、对上传文件进行随机重命名,并且文件的扩展名不允许用户自定义。 3、对文件上传的文件夹进行权限限制,去掉脚本的执行权限。 4、对文件的内容进行恶意代码的检测。

2、一句话木马

第一句:任何可以访问此PHP文件的用户都可以向它发送包含PHP代码的POST请求,并通过shell字段执行这些代码。

第二句:当发送一个 POST 请求到包含这段代码的 PHP 脚本,并包含一个名为 shell 的参数时,这个参数的值(作为 PHP 代码)将被 assert() 执行。这意味着任何用户都可以发送恶意代码来执行,例如删除文件、访问数据库、执行系统命令等。

asp一句话木马:

3、文件上传有哪些绕过方式?

1,构造特殊后缀:构造特定的文件后缀来绕过文件上传的限制。例如,可以构造如 .pphphp 这样的后缀,因为某些系统可能只检查文件名的末尾部分来确定文件类型。

2,利用00截断:在PHP 5.3及更早版本中,可以利用 %00来截断文件名。当文件路径或文件名中包含 %00 时,PHP会将其视为字符串的结束,从而可能绕过对文件扩展名的检查。但是这种方法在较新版本的PHP中可能不再有效。

3,修改MIME类型:HTTP请求中的 Content-Type 字段用于指定上传文件的MIME类型。在某些情况下,可以通过修改此字段的值来绕过对文件类型的限制。

4,结合其他漏洞:有时,文件上传漏洞可能与其他类型的漏洞(如文件包含漏洞)结合使用,以实现更复杂的攻击。例如,可以上传一个被修改为具有特定前缀(如 GIF89a)的PHP文件,然后利用文件包含漏洞来执行该文件。

5,利用.htaccess文件:在Apache服务器上,.htaccess 文件用于配置目录的访问权限和其他设置。如果攻击者能够上传一个包含恶意配置的 .htaccess 文件,他们可能会改变目录的访问权限,从而绕过对文件上传的限制。

4、绕过黑白名单方法:

1、黑名单:a、后缀名不完整 .php5 .phtml等 ;b、上传.htacess c、大小写 d、在数据包中 后文件缀名前加空格 e、后缀名前加. f、加上::$DATA  g、未循环验证,可以使用x.php..类似的方法

2.白名单(一般需要配合其他漏洞一起利用) a:%00截断 ;b:图片马; c:条件竞争;

5、关于windows特性的绕过方式有哪些?


http://www.ppmy.cn/devtools/41952.html

相关文章

Rust :给数据类型起一个别名

在 Rust 中,你可以为类型定义别名,以便简化代码和提高可读性。类型别名使用 type 关键字来定义。这在你想要给复杂的类型,如闭包类型、结果类型(Result)或迭代器类型等,定义一个更具描述性的名称时特别有用…

Darknet+ros+realsenseD435i+yolo(ubuntu20.04)

一、下载Darknet_ros mkidr -p yolo_ws/src cd yolo_ws/src git clone --recursive https://github.com/leggedrobotics/darknet_ros.git #因为这样克隆的darknet文件夹是空的,将darknet_ros中的darknet的文件替换成如下 cd darknet_ros git clone https://github.…

docker版MySQL5.7重置root密码并授权localhost访问

启动docker版mysql5.7后,容器输出日志一直报错如下: [Note] Access denied for user rootlocalhost (using password: NO)通常第一次启动mysql时,会生成随机密码,这里我就不管有没有密码,以及是哪个密码,直…

第 397 场 LeetCode 周赛题解

A 两个字符串的排列差 模拟&#xff1a;遍历 s s s 记录各字符出现的位置&#xff0c;然后遍历 t t t 计算排列差 class Solution {public:int findPermutationDifference(string s, string t) {int n s.size();vector<int> loc(26);for (int i 0; i < n; i)loc[s…

python3.6+pycharm安装配置

python3.6安装 下载python3.6 官网&#xff1a;下载 安装及环境变量配置 等待几分钟安装成功&#xff0c;cmd中输入python后返回版本号&#xff0c;安装成功 环境变量path下能看到自动添加了环境变量 pycharm下载安装 pycharm社区版下载 官网&#xff1a;下载 等待…

Linux基本工具的使用

什么是工具&#xff1f; 在Linux中&#xff0c;工具的本质也是指令&#xff0c;只是因为这些指令与我们的开发的关系不是很大&#xff0c;所以就被称为工具 1 软件包管理器yum 在我们的Windows上如果想要安装软件&#xff0c;第一件事就是要先下载软件安装包&#xff0c;然后…

Java--初识类和对象

前言 本篇讲解Java类和对象的入门版本。 学习目的&#xff1a; 1.理解什么是类和对象。 2.引入面向对象程序设计的概念 3.学会如何定义类和创建对象。 4.理解this引用。 5.了解构造方法的概念并学会使用 考虑到篇幅过长问题&#xff0c;作者决定分多次发布。 面向对象的引入 J…

Android AOSP Ubuntu源码编译电脑卡顿问题定位解决

文章目录 问题概述分析问题解决问题查看交换分区创建交换分区删除交换分区调整交换分区的活跃度 问题概述 开发SystemUI时&#xff0c;使用内存为16G的主机&#xff0c;Ubuntu 20.04的系统编译SystemUI的源码&#xff0c;编译的过程中发现电脑卡顿&#xff0c;鼠标不能移动。必…