19、SQL注入之SQLMAP绕过WAF

目录

    • 逻辑层
      • 1、逻辑问题
      • 2、性能问题
    • 白名单
      • 方式一:IP白名单
      • 方式二:静态资源
      • 方式三:url白名单
      • 方式四: 爬虫白名单

sqlmap在测试漏洞的时候,选择了no,它就不会去测试其它的了,我们一般选择yes,为了保证正确性。因为我们也不知道它是否就真的就是那个注入点、数据库类型,或者就是那个注入类型

在攻防实战中,往往需要掌握一些特性,比如服务器、数据库、应用层、WAF层等,以便我们更灵活地去构造Payload,从而可以和各种WAF进行对抗,甚至绕过安全防御措施进行漏洞利用

逻辑层

1、逻辑问题

(1)云waf防护,一般我们会尝试通过查找站点的真实IP,从而绕过CDN防护
(2)当提交GET、POST同时请求时,进入POST逻辑,而忽略了GET请求的有害参数输入,可尝试Bypass
(3)HTTP和HTTPS同时开放服务,没有做HTTP到HTTPS的强制跳转,导致HTTPs有WAF防护,HTTP没有防护,直接访问HTTP站点绕过防护
(4)特殊符号%00,部分waf遇到%00截断,只能获取到前面的参数,无法获取到后面的有害参数输入,从而导致Bypass。比如: id=1%00and 1=2 union select1,2,column_name from information_schema.columns

2、性能问题

猜想1:在设计WAF系统时,考虑自身性能问题,当数据量达到一定层级,不检测这部分数据。只要不断的填充数据,当数据达到一定数目之后,恶意代码就不会被检测了。

猜想2:不少WAF是C语言写的,而c语言自身没有缓冲区保护机制,因此如果WAF在处理测试向量时超出了其缓冲区长度就会引发bug,从而实现统过。

例子1:
?id=1 and (select 1)=(Select0xA1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),
8,9
ps:0xA
1000指0xA后面"A"重复1000次,一般来说对应用软件构成缓冲区溢出都需要较大的测试长度,这里1000只做参考也许在有些情况下可能不需要这么长也能溢出。

例子2:
?a0=0&a1=1&…&a100=100&id=1 union select 1,schema_name,3 from INFORMATTON_SCHEMA.schemata
备注:获取请求参数,只获取前100个参数,第101个参数并没有获取到,导致SQL注入绕过。

白名单

方式一:IP白名单

从网络层获取的ip,这种一般伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情况。
测试方法:修改http的header来bypass waf
x-forwarded-for
x-remote-IP
x-orginating-IP
x-remote-addr
X-Real-ip

IP白名单在实战中意义不是很大,因为它的条件实在是很多,很难去满足;一个是获取IP是不是通过脚本去获取,如果是的话,可以去伪造IP,通过tcp/udp网络层方式获取的,那是没有办法伪造的

方式二:静态资源

特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),类似白名单机制,waf为了检测效率,不去检测这样一些静态文件名后缀的请求
http://10.9.9.201/sql.php?id=1
http://10.9.9.201/sql.php/1.js?id=1
备注:Aspx/php只识别到前面的.aspx/.php 后面基本不识别

有些WAF过滤是基于脚本过滤的参数,是针对脚本去过滤,针对某些其它格式就不会去过滤,比如图片格式、文本格式,因为图片格式、文本格式一般不会带参数,或者说图片格式、文本格式造成不了危害,只有脚本里面有代码,文本和图片的代码是没有什么作用的

http://10.9.9.201/sql.php/x.txt?id=1

我们这样去访问之后,网站并不会受到结果上的影响,数据还能够正常接收;waf认为注入的参数是建立在x.txt文件上面的,所以waf有可能放心这个注入,x.txt是一个很正常的文本文件,即使传参数,也不会造成很大的影响。但是网站这样子访问,参数并不是给了x.txt,而是给了.php
以前老版本的WAF可以通过这个方式直接绕过,但是现在不行了,但是我们还是要对这个东西进行了解

方式三:url白名单

正常文件涉及到敏感的操作,那我们在访问正常文件的时候,就会被拦截了,这个时候为了让正常的拦截去访问的话,它会对这个文件进行白名单设置

为了防止误拦,部分waf内置默认的白名单列表,如admin/manager/system等管理后台。只要url中存在白名单的字符串,就作为白名单不进行检测。常见的url构造姿势:
http://10.9.9.201/sql.php/admin.php?id=1
http://10.9.9.201/sgl.php?a=/manager/&b=…/etc/passwd
http://10.9.9.201/…/…/…/manager/…/sql.asp?id=2
waf通过/manage/进行比较,只要uri中存在/manage/就作为白名单不进行检测,这样我们可以通过/sql.php?a=/manage/&b=…/etc/passwd 绕过防御规则。

可以结合静态资源展开攻击,有的waf是不行的,但是我们还是要去学一下

方式四: 爬虫白名单

部分waf有提供爬虫白名单的功能,识别爬虫的技术一般有两种:
1、根据UserAgent 2、通过行为来判断
UserAgent可以很容易欺骗,我们可以伪装成爬虫尝试绕过。
User Agent Switcher (Firefox 附加组件),下载地址:https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/
这个方式不是讲注入绕过,他是讲扫描绕过,这个方式我们经常用到

我们在服务器上创建自己网站之后,那么百度、google、搜狗等搜索引擎会对我们的网站页面进行收录,在搜索相关资料的时候会请求到我们的网站上来。
爬虫白名单就是伪造搜索引擎,当我们对网站部署waf之后,我们会发现我们对网站访问速度过快、请求过多的话,会拦截

搜索引擎会对我们的网站进行爬取,因为它的收录就是对我们的网站采取爬虫技术,而且速度很快,也是符合拦截规则的,但是WAF却不会去拦截,因为WAF会去识别你这个是用户访问,还是搜索引擎爬取,所以我们可以通过数据包的伪造,伪造成搜索引擎,对目标的网站进行访问,这个时候waf肯定会放行,因为它觉得这个是搜索引擎的访问,是正常的、官方的一种收录行为,不会是用户的攻击行为

我们对网站的后台进行目录爆破,我们发现爆出了很多结果,但是我们去验证的时候,发现这些东西压根都不存在,全部是误报
这里有两类问题,一个是请求速度过快,触发了规则;一个是扫描结果是个错误
伪造成官方搜索引擎的爬虫,去对网站进行扫描,就不会触发它的规则,因为它是白名单
dirsearch 爆破后台目录的数据包的UA可以使用搜索引擎爬虫的UA

我们学习的是绕过WAF的方法,不是学习某个工具,方法最重要

/*!50001 select * from test */

这里的50001表示,假如数据库是5.00.01以上版本,该语句才会被推行,反之就不行

50001会干扰WAF的识别,但是在数据库当中会被正常执行,这种绕过方式只针对mysql

%20union%20a11%23%0a%20select%201,2,3%23

写与不写all都会执行,不会影响任何结果,但是all能够绕过匹配规则里面的union select的一个结合, 因为中间有个all
总之来说,绕过WAF的匹配就是防止他们匹配到,我们要学FUZZ的话,就需要去学写脚本

我们在实际的工作当中,不可能全部用到手工注入,肯定是要借助检测工具

sqlmap自带绕过WAF的脚本,但是这些脚本肯定是不能够绕过常见WAF的,是用来绕过CTF比赛的,因为是比赛,所以WAF不会写的很死,肯定是存在问题的,就可以用这些脚本来绕过。

因为用自带的脚本绕不了,我们只能自己去编写,可以在sqlmap脚本的基础上去改,把注释删掉便于查看。
只要在if payload这个地方换就可以了,把符合WAF匹配规则的给替换掉,例如

if payload:payload = payload.replace("union","%23a%oaunion")payload = payload.replace("select","/*!44575select*/")payload = payload.replace("%20","%23a%0a")payload = payload.replace(" ",%23a%0a")payload = payload.replace( "database()","database%23a%0a()")
return payload

我们所有的步骤都做对了,但是我们就是被拦截了,这个时候我们可以通过代理,把完整的数据包抓到BP上面去看一下,看一下数据包里面是不是有问题

WAF可以通过数据包的指纹,发现我们使用了sqlmap这个工具在搞事情,所以被拦截了,不是因为我们的绕过脚本没搞好,才被拦截的

当我们在使用工具进行检测的时候,我们首先要解决一个问题,那就是工具会不会被拦截的问题。因为每个作者在写工具的时候,都有一个初衷,他在对网站进行扫描,会有一个数据包体系,这个数据包肯定会有他的特征,比如特定的指纹头,其实就是我们常说的指纹库,通过这个指纹库,我们可以识别出他使用的工具,不同的浏览器对网站进行访问是不一样的,因为他们的内核不同,所以他可以通过这些判断出你是人为的,还是工具扫描的,从而进行拦截

sqlmap的访问量会触发WAF的CC流量拦截,这个时候,就跟我们的注入没有关系了,我们可以采取延迟、代理池,爬虫白名单三种方式绕过

搜索引擎爬虫 http 指纹头——》获取搜索引擎爬虫 http 指纹头——》sqlmap user-agent注入——》更改sqlmap的请求头,用来绕过WAF或者使用–user-agent=""来自定义
随机是模拟用户的访问,我们可以通过–user-agent来模拟搜索引擎的访问
sqlmap只要是一直在跑,那他就是正常的,只要一旦停下来,那就遇到问题了
我们可以通过刷新网站来判断我们是否被封堵

delay延迟,按照我们延迟的时间,隔一段时间,发送一个数据包。正常访问网站的时候,就会速度过快,导致被封堵,隔一秒发一个。

代理池涉及到的东西比较复杂,我们现在也讲不到,代理池就是随机刷IP,我们需要学完python的安全开发,然后再去写一个;或者我们用网上现成的工具和脚本改一下,结合sqlmap去跑一下。

只要涉及到流量检测,基本上就会用到代理池。

我们要去学开发,我们要去学Python,因为python简单容易上手,工具大都是python开发的,我们可以直接拿别人的工具二次开发,也可以直接用Python写二次开发,现在的安全形式,如果你不懂代码那是不行的

中转脚本,本地写个脚本(请求远程地址数据包可以自定义编写),这个脚本去请求远程注入地址,sqlmap去注入本地的脚本地址

<?php
$url='http://xxxx/job_bystjb/yjs_byszjs.asp?id=';
$payload=base64_encode($_GET['x']);
echo $payload;
$urs=$ur1.$payload;
file_get _contents($urls);
echo $urls;
?>

php发送http请求的几种方法

https://blog.csdn.net/qq_34827048/article/details/78892700

绕过waf不是单纯的,除了技术上的,还可能是因为检测工具的原因;出了问题要去抓包看看,不要一直在代码上面找问题;分析是很重要的,那些绕过的方法,网上去找资料,多试几遍,用fuzz就完了。

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

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

相关文章

Deep Learning With Pytorch - 最基本的感知机、贯序模型/分类、拟合

文章目录 如何利用pytorch创建一个简单的网络模型&#xff1f;Step1. 感知机&#xff0c;多层感知机&#xff08;MLP&#xff09;的基本结构Step2. 超平面 ω T ⋅ x b 0 \omega^{T}xb0 ωT⋅xb0 or ω T ⋅ x b \omega^{T}xb ωT⋅xb感知机函数 Step3. 利用感知机进行决策…

SpringBoot整合Minio

SpringBoot整合Minio 在企业开发中&#xff0c;我们经常会使用到文件存储的业务&#xff0c;Minio就是一个不错的文件存储工具&#xff0c;下面我们来看看如何在SpringBoot中整合Minio POM pom文件指定SpringBoot项目所依赖的软件工具包 <?xml version"1.0" …

Ubuntu上安装RabbitMQ

在Ubuntu上安装RabbitMQ并设置管理员用户为"admin"&#xff0c;密码为"123456"&#xff0c;并开启开机自启 更新系统软件包列表。在终端中执行以下命令&#xff1a; sudo apt update安装RabbitMQ服务器软件包。运行以下命令&#xff1a; sudo apt insta…

DaVinci Resolve Studio 18 for Mac 达芬奇调色

DaVinci Resolve Studio 18是一款专业的视频编辑和调色软件&#xff0c;适用于电影、电视节目、广告等各种视觉媒体的制作。它具有完整的后期制作功能&#xff0c;包括剪辑、调色、特效、音频处理等。 以下是DaVinci Resolve Studio 18的主要特点&#xff1a; - 提供了全面的视…

Linux 设置 ssh 内网穿透

背景&#xff1a;有三台机器A、B、C&#xff0c;机器 A 位于某局域网内&#xff0c;能够连接到互联网。机器 B 有公网 IP&#xff0c;能被 A 访问到。机器 C 位于另外一个局域网内&#xff0c;能够连接到互联网&#xff0c;能够访问 B。 目标&#xff1a;以 B 为中介&#xff…

Jmeter-压测时接口按照顺序执行-临界部分控制器

文章目录 临界部分控制器存在问题 临界部分控制器 在进行压力测试时&#xff0c;需要按照顺序进行压测&#xff0c;比如按照接口1、接口2、接口3、接口4 进行执行 查询结果是很混乱的&#xff0c;如果请求次数少&#xff0c;可能会按照顺序执行&#xff0c;但是随着次数增加&a…

Python-OpenCV中的图像处理-模板匹配

Python-OpenCV中的图像处理-模板匹配 模板匹配单对象的模板匹配多对象的模板匹配 模板匹配 使用模板匹配可以在一幅图像中查找目标函数&#xff1a; cv2.matchTemplate()&#xff0c; cv2.minMaxLoc()模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。 OpenCV 为我们提…

无线充电底座

<项目>无线充电器 前言 个人DIY的无线充电底座&#xff08;带磁吸&#xff09;&#xff0c;基于IP6829方案。 Drawn By:67373 硬件部分 3D模型 资料开源链接 https://github.com/linggan17/WirelessCharge

面试热题(每日温度)

请根据每日 气温 列表 temperatures &#xff0c;重新生成一个列表&#xff0c;要求其对应位置的输出为&#xff1a;要想观测到更高的气温&#xff0c;至少需要等待的天数。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 输入: temperatures [73,74,75,71,69…

SpringBoot + Mybatis多数据源

一、配置文件 spring: # datasource: # username: root # password: 123456 # url: jdbc:mysql://127.0.0.1:3306/jun01?characterEncodingutf-8&serverTimezoneUTC # driver-class-name: com.mysql.cj.jdbc.Driverdatasource:# 数据源1onedata:jdbc-url: j…

SCF金融公链新加坡启动会 链结创新驱动未来

新加坡迎来一场引人瞩目的金融科技盛会&#xff0c;SCF金融公链启动会于2023年8月13日盛大举行。这一受瞩目的活动将为金融科技领域注入新的活力&#xff0c;并为广大投资者、合作伙伴以及关注区块链发展的人士提供一个难得的交流平台。 在SCF金融公链启动会上&#xff0c; Wil…

CentOS7的journalctl日志查看方法

多台服务器间免密登录|免密拷贝 Cenos7 搭建Minio集群部署服务器(一) Cenos7 搭建Minio集群Nginx统一访问入口|反向动态代理(二) Spring Boot 与Minio整合实现文件上传与下载(三) CentOS7的journalctl日志查看方法 MySQL8.xx一主两从复制安装与配置 1、概述 日志管理工…

【ElasticSearch入门】

目录 1.ElasticSearch的简介 2.用数据库实现搜素的功能 3.ES的核心概念 3.1 NRT(Near Realtime)近实时 3.2 cluster集群&#xff0c;ES是一个分布式的系统 3.3 Node节点&#xff0c;就是集群中的一台服务器 3.4 index 索引&#xff08;索引库&#xff09; 3.5 type类型 3.6 doc…

【佳佳怪文献分享】MVFusion: 利用语义对齐的多视角 3D 物体检测雷达和相机融合

标题&#xff1a;MVFusion: Multi-View 3D Object Detection with Semantic-aligned Radar and Camera Fusion 作者&#xff1a;Zizhang Wu , Guilian Chen , Yuanzhu Gan , Lei Wang , Jian Pu 来源&#xff1a;2023 IEEE International Conference on Robotics and Automat…

kubernetes企业级高可用部署

目录 1、Kubernetes高可用项目介绍 2、项目架构设计 2.1、项目主机信息 2.2、项目架构图 1、Kubernetes高可用项目介绍 2、项目架构设计 2.1、项目主机信息 2.2、项目架构图 2.3、项目实施思路 3、项目实施过程 3.1、系统初始化 3.2、配置部署keepalived服务 3.3、…

强制Edge或Chrome使用独立显卡【WIN10】

现代浏览器通常将图形密集型任务卸载到 GPU&#xff0c;以改善你的网页浏览体验&#xff0c;从而释放 CPU 资源用于其他任务。 如果你的系统有多个 GPU&#xff0c;Windows 10 可以自动决定最适合 Microsoft Edge 自动使用的 GPU&#xff0c;但这并不一定意味着最强大的 GPU。 …

Linux/centos上如何配置管理NFS服务器?

Linux/centos上如何配置管理NFS服务器&#xff1f; 1 NFS基础了解1.1 NFS概述1.2 NFS工作流程 2 安装和启动NFS服务2.1 安装NFS服务器2.2 启动NFS服务 3 配置NFS服务器和客户端3.1 配置NFS服务器3.2 配置NFS客户端 4 实际示例4.1 基本要求4.2 案例实现 1 NFS基础了解 NFS&…

LAXCUS如何通过技术创新管理数千台服务器

随着互联网技术的不断发展&#xff0c;服务器已经成为企业和个人获取信息、进行计算和存储的重要工具。然而&#xff0c;随着服务器数量的不断增加&#xff0c;传统的服务器管理和运维方式已经无法满足现代企业的需求。LAXCUS做为专注服务器集群的【数存算管】一体化平台&#…

Jtti:Windows server如何备份与还原注册表

在 Windows Server 中&#xff0c;备份和还原注册表是一项重要的任务&#xff0c;可以帮助你在系统配置更改之前创建一个恢复点&#xff0c;以防止出现问题。以下是在 Windows Server 上备份和还原注册表的步骤&#xff1a; 备份注册表&#xff1a; 1.打开“运行”对话框&…

企业数据库遭到360后缀勒索病毒攻击,360勒索病毒解密

在当今数字化时代&#xff0c;企业的数据安全变得尤为重要。随着数字化办公的推进&#xff0c;企业的生产运行效率得到了很大提升&#xff0c;然而针对网络安全威胁&#xff0c;企业也开始慢慢引起重视。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器遭到了…