【网络安全】-文件上传漏洞

devtools/2024/9/24 3:33:23/

文件操作漏洞包括文件上传漏洞,文件包含漏洞,文件下载漏洞。

文章目录

前言  什么是文件上传漏洞?

文件上传的验证与绕过:

1.前端js验证:  

          Microsft Edge浏览器:

    Google Chrome浏览器:

2.后端黑名单与白名单验证

     黑名单验证

           白名单验证

3.内容及其它验证

总结


前言  什么是文件上传漏洞?

文件上传漏洞指hacker利用网站能让用户上传文件的功能,在上传过程中上传木马,直接连接或配合文件包含漏洞获取webshell,从而导致用户权限丢失,隐私泄露。

而hacker成功getshell后还可以长期控制受影响的网站或服务器,进行持续性的攻击和破坏,甚至会将受控制的服务器作为攻击其他目标的跳板,利用该服务器的资源和网络带宽发起更广泛的网络攻击。


文件上传的验证与绕过:

1.前端js验证:

  禁用js

 Microsft Edge浏览器:

右上方三个点,点击设置:

Cookie和网站权限->所有权限->JavaScript

  

点击JavaScript,允许关闭

Google Chrome浏览器:

右上方三个点,点击设置->隐私和安全->网站设置

下拉滚动条 内容->JavaScript,不允许使用。

2.后端黑名单与白名单验证
黑名单验证

[阻止已知的恶意实体访问网络资源]

定义:一种阻止机制,通过列出不受信任或已知有害的实体-IP地址、域名、用户ID、电子邮件地址等,来阻止这些实体访问网络资源。

特点

负面表列:以“负面表列”的方式禁止某些行为或访问。

灵活性较高:在识别出威胁后,可以快速地将其加入黑名单,以阻止其进一步活动。

安全性相对较低:虽然能有效阻止已知威胁,但是无法及时应对未知攻击或新出现的恶意实体。

绕过方式

1.大小写绕过:

例:upload第六题

2.点绕过:

例:upload第五题

3.空格绕过

例:upload第七题

4.双写绕过

例:upload第十一题

 5.htaccess特殊后缀解析

例:upload第四题

第一步:.png文件

<?php @eval($_POST[cmd]);  ?>

第二步:.htaccess文件

<IfModule mime_module>
AddHandler php5-script .gif          
SetHandler application/x-httpd-php   
</IfModule>

6.流数据(::$$DATA)绕过

例:upload第九题

白名单验证

通过限制访问权限来提高系统的整体安全性。

定义:一种权限机制,策略是一种严格的访问控制方法,只有白名单中的实体才允许访问网络资源,这种方式适用于对安全性要求较高的环境,如企业内部网络、关键业务系统等。

特点

正向表列:以“正向表列”的方式允许某些行为或访问。

安全性高:只有经过验证和信任的实体才能访问系统,从而有效防止未经授权的访问和恶意攻击。

灵活性较低:在需要允许新的实体访问时,白名单需要手动更新,会增加管理成本和时间。

绕过方式

1.文件格式验证mime绕过

修改 MIME 类型:
攻击者可以在上传文件时修改 HTTP 请求中的 Content-Type 头部,使其显示为一个无害的 MIME 类型(如 image/jpeg),但实际上传的是恶意脚本(如 PHP 脚本)。

利用客户端软件的漏洞:
有时,文件上传的客户端软件(浏览器插件或自定义上传工具)可能存在漏洞,允许用户绕过 MIME 类型的限制。

服务端验证不足:
如果服务端仅依赖客户端提供的 MIME 类型,而没有进行文件内容检查(如文件扩展名检查、文件签名检查、文件内容分析等),则攻击者可以通过修改 MIME 类型来绕过这些简单的安全检查。

2.%00截断

条件:php<5.3.4,magic_quotes_gpc函数关闭,get提交

例:upload第十二题

3.0x00截断

条件:php<5.3.4,magic_quotes_gpc函数关闭,post提交

例:upload第十三题

把%00换成0x00

或手动编码:

4.0xoa截断    ASCII->换行

3.内容及其它验证

1.文件头检测:

例:upload第十四题

直接页面截图,重命名为.txt文件,打开文件,将一句话木马黏贴进去,再进行重命名为3.png文件。

重命名的.png就有验证特征:

2.二次渲染

例:upload第十七题

上传的图片后,后端代码会重新生成画布 然后把上传的图片重新渲染一次,使得png(图片+木马)->png(图片)。

3.条件竞争

例:upload第十八题

实质:多个请求同时处理同一个文件或资源

第一次:

上传了一个恶意文件

服务器在将文件保存到磁盘后还需要进行一些额外的检查

验证失败

第二次:

上传了一个恶意文件

服务器在将文件保存到磁盘后还需要进行一些额外的检查

验证失败

......

第n次:

上传了一个恶意文件

服务器被占用

验证成功

4.函数验证

getimagesize / exif_imagestype  ->检测上传文件类型是否为图片

例:upload第十五题

与文件头检测没有大的区别。

文件上传漏洞防范措施:

1.修改文件存储路径:

将用户上传的文件存储在一个独立的目录下,避免与应用程序的代码混合在一起。同时,确保该目录的权限设置合理,防止未授权访问。

2.文件权限和访问控制设置

将上传的文件设置为只读权限,以防止被恶意修改。同时,限制用户对上传文件的访问权限,只允许特定的用户或角色访问这些文件。

3.限制文件上传

限制用户在一定时间内可以上传的文件数量,防止恶意用户进行无限制的文件上传。


总结

文件上传漏洞是一种常见的Web应用程序安全漏洞,它允许攻击者利用网站或应用程序中的文件上传功能,上传恶意文件到服务器上,并通过这些文件执行恶意代码,从而控制服务器、窃取数据或执行其他恶意操作。


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

相关文章

css grid布局属性详解

Grid布局 前言一、认识Grid1.1容器和项目1.2行和列1.3单元格和网格线 二、容器属性2.1.grid-template-columns与grid-template-rows属性2.1.1 直接使用长度单位比如px2.1.2 使用百分比 %2.1.3 使用repeat函数2.1.4 按比例划分 fr 关键字2.1.5 自动填充 auto 关键字2.1.6 最大值…

基于R语言结构方程模型分析与实践技术应用

结构方程模型&#xff08;Sructural Equation Model&#xff09;是一种建立、估计和检验研究系统中多变量间因果关系的模型方法&#xff0c;它可以替代多元回归、因子分析、协方差分析等方法&#xff0c;利用图形化模型方式清晰展示研究系统中变量间的因果网络关系&#xff0c;…

Oracle数据库中的动态SQL(Dynamic SQL)

Oracle数据库中的动态SQL是一种在运行时构建和执行SQL语句的技术。与传统的静态SQL&#xff08;在编写程序时SQL语句就已经确定&#xff09;不同&#xff0c;动态SQL允许开发者在程序执行过程中根据不同的条件或用户输入来构建SQL语句。这使得动态SQL在处理复杂查询、存储过程中…

【系统分析师】-安全体系

考点综述 (1)综合知识:包括加密密钥和公开密钥算法:计算机病毒及防治技术计算机犯罪基本概念与防范措施、入侵检测与防范、系统访问控制技术;信息删除、修改、插入和丢失;伪造与重放攻击的防止;SHA、MD5;私有信息保护。 (2)案例:根据具体案例&#xff0c;说明在网络与分布式环境…

从Prompt到创造:解锁AI的无限潜能

文章目录 &#x1f34a;AI内容创作核心&#xff1a;提示词Prompt1 什么是提示词工程?1.1 提示词的原理是什么&#xff1f;1.2 提示词工程师&#xff1a;百万年薪的职业&#xff1f;1.3 谁都能成为提示词工程师吗&#xff1f; 2 提示词书写的基本技巧3 常见的提示词框架3.1 CO-…

Vue3实现打印功能

1、安装插件 npm i vue3-print-nb --save 2、main.js全局配置 import print from vue3-print-nb app.use(print) 3、设置打印区域 为打印区域设置 id 选择器 <div id"printData"><el-table border :data"tableData" style"width: 100%…

安装配置filebrowser

安装配置filebrowser ​ 这章就简单搞个工具用一下&#xff0c;这个工具就是一个像安卓软件一样的文件浏览器&#xff0c;可以设置用户权限啥的&#xff0c;挺好用的下面直接粘的安装步骤&#xff0c;注意一下配置别错了就行&#xff0c;json文件和命令配置要一样。访问效果放…

兴趣推送与相似推送逻辑设计

兴趣推送 这里的兴趣推送不涉及大数据&#xff0c;或者大模型的兴趣推送&#xff0c;而是从内容标签的角度去构建用户画像/模型达到的兴趣推送。 内容标签 如果要根据某个用户的模型去选择内容标签&#xff0c;再到对应的内容标签集合中推送具体的内容id&#xff0c;就需要知…