博客
关于我
24 WEB漏洞-文件上传之WAF绕过及安全修复_阿里云盾waf绕过怎么修复
阅读量:791 次
发布时间:2023-01-25

本文共 1294 字,大约阅读时间需要 4 分钟。

目录
    • WAF绕过
    • 上传参数名解析:明确哪些东西能修改?
    • 常见绕过方法:
      • `符号变异-防匹配(' " ;)`
      • 数据截断-防匹配(%00 ; 换行)
      • 重复数据-防匹配(参数多次)
      • 搜索引擎搜索fuzz web字典
    • 文件上传安全修复方案

WAF绕过

safedog BT(宝塔) XXX云盾 宝塔过滤的比安全狗厉害一些,在真实情况下现在很多网站都是用宝塔。

上传参数名解析:明确哪些东西能修改?

Content-Disposition: 表单数据,一般可更改

name:表单参数值,不能更改
Filename:文件名,可以更改,但意义不大
Content-Type:文件MIME,视情况更改

防护软件通常通过数据包中的代码判断数据包异常,从而拦截文件上传。通过研究发现,许多WAF会对特定关键字进行检测,如.php或其他常见文件扩展名。如果能将这些关键字隐藏或改变格式,通常可以绕过WAF的过滤。例如,可以采用如`.php`或`ph p`等变形方式,但需要注意这些方法是否会被检测到。

常见绕过方法:

数据溢出-防匹配(xxx…)

在form-data;处添加大量垃圾数据,末尾加上分号,以绕过防护。

`符号变异-防匹配(' " ;)`

通过变换引号类型或添加分号,改变WAF的匹配规则。例如,将单引号替换为双引号或前后交替使用,使得WAF无法正确识别文件扩展名。

数据截断-防匹配(%00 ; 换行)

通过添加特殊字符或换行,干扰WAF的匹配逻辑,例如filename="x.p h" 或 "x.jpg;.php"。

重复数据-防匹配(参数多次)

通过在Content-Disposition中多次重复filename参数,如filename="x.php"; filename="x.php";,使WAF难以检测真实文件扩展名。

搜索引擎搜索fuzz web字典

使用fuzz工具生成大量可能的文件名或参数值,通过大量尝试实现绕过WAF。例如,在filename或Content-Disposition中插入随机字典后的字符串,测试成功率。

文件上传安全修复方案

后端验证:采用服务端验证模式,严禁前端编辑表单数据

后缀检测:基于黑名单或白名单过滤
MIME检测:严格验证文件扩展名和MIME类型
内容检测:完整性检查文件头或使用高级正则表达式

建议采用的方案包括:

1. 采用服务端验证模式,确保前端不能编辑表单数据
2. 对于常见文件类型(如jpg、png)开启双重验证,既检查扩展名又检查MIME类型
3. 使用自带的过滤函数或自定义验证函数,对于传入参数进行严格检查

最后,建议使用专业的WAF产品(如宝塔云盾等)进行额外防护,确保漏洞无法被攻击者绕过。

转载地址:http://fkryk.baihongyu.com/

你可能感兴趣的文章
2025版最新开发一款大模型需要经过哪些步骤?开发一款大模型的完整流程,收藏这篇就够了
查看>>
$.inArray函数判断数组中的是否包含字符串
查看>>
2025版最新渗透测试和黑客工具列表,零基础入门到精通,收藏这一篇就够了
查看>>
2025版最新网络安全入门书籍整理大全,零基础入门到精通,收藏这篇就够了
查看>>
2025版最新网络安全知识入门及学习流程(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
2025版最新网络安全等级保护测评指南,零基础入门到精通,收藏这篇就够了
查看>>
2025版最新运维怎么转行网络安全?零基础入门到精通,收藏这篇就够了
查看>>
2025版最新黑客学习网站(非常详细),零基础入门到精通,看这一篇就够了
查看>>
2025版网络工程11个高含金量证书(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
2025自学成为黑客必读的5本书籍,带你从小白进阶成大佬
查看>>
20万高薪专业-网络安全(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
23张图告诉你组建一个网络需要用到哪些硬件设备?路由器、交换机、防火墙是不是就够了?
查看>>
24 WEB漏洞-文件上传之WAF绕过及安全修复_阿里云盾waf绕过怎么修复
查看>>
#12 btrfs文件系统
查看>>
#3194. 去月球
查看>>
24.线程
查看>>
#Leetcode# 28. Implement strStr()
查看>>
$route 和 $router详解、区别、示例代码
查看>>
$scope angular在controller之外调用
查看>>
&和&&的区别
查看>>