[代码审计] beescms SQL注入漏洞分析

  • A+
所属分类:代码审计

一、Cms初识:

BEES企业网站管理系统是一个基于PHP+Mysql架构的企业网站管理系统。BEES采用模块化方式开发,功能强大灵活易于扩展,并且完全开放源代码,多种语言分站,为企业网站建设和外贸提供解决方案。



-目录结构:

[代码审计] beescms SQL注入漏洞分析




二、漏洞描述:

后台登陆页面由于程序对传参过滤不全,导致过滤代码可以被绕过,从而造成SQL注入。




三、漏洞分析过程:

定位到漏洞代码:/admin/login.php

这里使用了fl_html()fl_value()函数对POST的传参进行了处理:

[代码审计] beescms SQL注入漏洞分析


fl_html()fl_value()函数:/includes/fun.php

可以看到fl_value()函数是使用正则表达式将一些常见的SQL注入敏感字符都替换为空,仅此而已,绕过方法就很简单了,双写即可,看是仔细观察此正则,发现有些是左右包含了一对空格的,那么绕过方式也是差不多,比如:


select => seselectlectand => a空格and空格nd

[代码审计] beescms SQL注入漏洞分析


然后fl_html()函数是对传参进行html实体编码,默认只对双引号进行编码,我们使用单引号进行注入即可

[代码审计] beescms SQL注入漏洞分析


然后交给check_login()函数进行处理:/includes/fun.php

可以看到直接将传参拼接到SQL语句中进行执行了:

[代码审计] beescms SQL注入漏洞分析


跟进fetch_asc()函数:/includes/mysql.class.php

[代码审计] beescms SQL注入漏洞分析


继续跟进query():可以看到SQL语句出错会输出报错信息,所以导致了报错注入

[代码审计] beescms SQL注入漏洞分析




四、漏洞利用:

访问后台登陆页面:

/admin/login.php

[代码审计] beescms SQL注入漏洞分析



抓包,将用户名处输入payload:

admin'a and nd(extractvalue(1,concat(0x7e,(selselectect user()),0x7e)))#


[代码审计] beescms SQL注入漏洞分析


注入其他数据绕过方式也是很简单的,如果要写shell的话可以用hex编码等方式进行绕过,具体就不一一演示了。



点个赞和在看吧,欢迎转发!

点个赞和在看吧,欢迎转发!

点个赞和在看吧,欢迎转发!

[代码审计] beescms SQL注入漏洞分析




本文始发于微信公众号(哈拉少安全小队):[代码审计] beescms SQL注入漏洞分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: