WAF绕过,HPP漏洞学习--2023/03/18

文章介绍了WAF(WebApplicationFirewall)的工作原理和类型,并详细探讨了多种WAF绕过技术,包括大小写绕过、关键字替换、编码、注释使用以及参数污染。同时,提到了HTTP参数污染(HPP)漏洞,解释了其原理和在SQL注入、XSS攻击、文件上传及逻辑漏洞利用中的应用,并提出了防范HPP的建议。
摘要由CSDN通过智能技术生成

2023/03/18

WAF绕过技巧—背景知识

渗透测试-浅析WAF绕过_渗透绕waf_Tr0e的博客-CSDN博客

WAF全称Web Application Firewall WEB应用防护系统,WAF针对的是应用层,

WAF是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一种网络安全产品,增大攻击者的攻击难度和攻击成本

市场上的WAF分这集中:

  • 基于硬件的WAF:绿盟WAF
  • 基于软件的WAF:安全狗
  • 部署在云端的WAF:百度加速乐,安全宝

1.大小写绕过:

大小写绕过用于只针对小写或大写的关键字匹配技术

z.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4

2. 替换关键字

  1. 关键字双写:

大小写无法绕过,正则表达式会替换,删除select,union关键字

z.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4
  1. 同价词替换
    在这里插入图片描述

  2. 特殊字符拼接

把特殊字符拼接起来绕过WAF的检测,比如在Mysql中,利用注释/**/来绕过

3. 使用编码

  1. URL编码;

4. 使用注释

常用于注释的符号://,/**/,#,—+,—a

z.com/index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4   
'union%a0select pass from users#

/**/在构造得查询语句中插入注释,规避对空格的依赖或关键字识别。#、--+
用于终结语句的查询

相比普通注释,内联注释用的更多,它有一个特性/!**/只有MySQL能识别(/*!*/表示注释里面的语句会被执行)。

5.参数污染

6. 缓冲区溢出

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

7. 性能因素:

  • WAF在设计的时候都会考虑到性能问题,检测数据包的包长或检测数据流长度,有一个限制。因此在设计WAF的时候可能就有一个默认值,默认多少个字节的流大小,或是多少个数据包。此时可以向HTTP POST添加填充数据,达到一定数目之后,POST中的sql注入恶意代码没有被检测了,达到了bypass的目的。
  • WAF的业务影响问题,一些传统硬件防护设备为了避免在高负载的时候影响用户体验,如延时等问题,会在高负载的时候关掉WAF防护功能,在低负载的时候又开启WAF功能。此方法,主要针对软件WAF——可将一个payload,使用脚本并发发送多次,发现有些通过了WAF,有些被WAF拦截了

WAF之HTTP参数污染HPP漏洞挖掘

Bypass WAF之HTTP参数污染(HPP)漏洞挖掘_J0hnson666的博客-CSDN博客

HPP是HTTP,Parameter Pollution的缩写,HTTP参数污染,注入型漏洞,攻击者通过在HTTP请求中插入特定的参数来发起攻击

1.漏洞原理:

浏览器与服务器进行交互时,浏览器提交GET/POST请求参数,参数会以‘名称-值对’的形式出现,HTTP协议中允许同样名称的参数出现多次

与服务器交互的过程中,HTTP协议允许GET/POST请求多次传同一参数值

在这里插入图片描述

2. HPP影响:

HTTP参数污染注入 源于网站对于提交的相同的参数的不同处理方式导致假设输入http://www.xxx.com/?id=1&id=union select 1,2,3,4 from table,服务端就有可能会将 key 处理为 1 union select 1,2,3,4 from table,从而导致SQL注入

HPP在WAF绕过,逻辑漏洞挖掘上的实例

1. SQL注入:

  1. 特定情况下,WAF对’union关键字’进行拦截
bbs=u&bbs=n&bbs=i&bbs=o&bbs=n&bbs=select 1,user(),3

由于HPP的特性,在后端又拼接成完整的union

  1. 常见的sql注入:
http://xxx/horse.php?id=7 union select 1,2,3,current_user

HPP绕过,将注入语句写到第二个参数位置,不会被WAF解析

http://xxx/horse.php?id=0&id=7%20union%20select%201,2,3,current_user

传递第二个参数时使用了”&”进行转移,含义就是‘&’

  1. 结合HPP参数污染进行注入
  • mysql用&连接多个参数,只输出最后一个参数的结果

在这里插入图片描述

2. XSS绕过

  1. Apple Cups的Xss:

系统对kerberos进行了黑名单过滤,通过前置一个重复参数可以出发XSS

http://xxx/?kerberos=οnmοuseοver=alert(1)&kerberos=

HPP,该系统指接受第二个参数,第一个kerberos直到被用于构建HTML内容前都没有被验证,在web站点的上下文中javascript语句被执行

  1. URL重定向+HPP+XSS:

点击连接,用户重定向到一个页面:

http://host/xxx.aspx?dest=http://whitelistedWebsite.com

dest参数接受的协议有https://,ftp://,javascripts://,尝试构造xss:

dest=javascript://alert(document.domain)

在这里插入图片描述

3. 文件上传

HPP:双文件上传

filename参数写了两次,可能绕过一些上传限制

也可以同时上传一个正常图片文件+一个木马文件尝试绕过

4. 逻辑漏洞

  • 篡改收账账户
  • 恶意链接跳转
  • 越权取消订阅

在这里插入图片描述

  • 越权获取关注

正常的情况:

在这里插入图片描述

在这里插入图片描述

使得受害者成功关注了我:

后台对于actorld的鉴权操作是对第二个,关注操作取的确实第一个

  • 越权编辑数据:

修复方案:

防范HPP漏洞:

  • 设备层面:让WAF或其它网关设备如IPS在检查URL时,对同一个参数被多次赋值的情况进行特殊处理,由于HTTP协议允许相同参数在URL中多次出现,因此这种特殊处理需要注意避免误杀的情况;
  • 代码层面:编写WEB程序时,要通过合理的$_GET方法获取URL中的参数值,而尝试获取 Web服务器返回给程序的其他值时要慎重处理,结合其他漏洞的产生进行组合排查。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值