Hongcms 3.0.0后台SQL注入漏洞分析
作者:CQITer小编 时间:2018-07-28 01:05
HongCMS是一个轻量级的中英文企业网站系统,访问速度极快,使用简单,程序代码简洁严谨,功能强大,完全免费开源,可用于建设各种类型的中英文网站,同时它是一个小型开发框架。
二、漏洞描述程序在后台进行清空数据库操作时对传入的数据库名过滤不严格,可插入和执行恶意sql语句。
三、影响版本Hongcms < 3.0.0
四、漏洞细节首先,我们登录到网站后台管理定位到系统—>数据库维护。
系统默认情况下只允许我们对sessions和vvc数据表进行清空操作,我们随机选择一个,此处我使用vvc表来进行分析,随后我们点击清空按钮并结合phpstorm对执行流程进行动态调试。为了方便大家能清楚地看清执行过程,笔者已经在关键的函数位置设置了断点。

首先程序在APP.php第170行使用call_user_func函数对接受的参数进行动态函数回调:
跟进operate:

将数据表名称传递给ForceStringFrom函数,继续跟进ForceStringFrom:


ForceString判断Invalue是否为字符串之后随即将值传递给给EscapeSql,函数进行安全过滤,继续跟进。

首先函数判断了gpc是否开启,如果开启则使用stripslashes进行过滤,否则将使用htmlspecialchars并对\0和空格字符进行了替换,随后判断mysql_real_escape_string或mysql_escape_string函数是否存在,并调用相应的函数进行编码,否则使用addslashes。随后程序进入switch语句进行动作匹配,根据不同的action参数值进行相应的操作。

我们定位到emptytable,程序将tablename值传入了EmptyTable函数。

跟进EmptyTable。

在这里我们看到定义了要执行的sql语句,并将其传入了exe函数,跟进exe。

Exe接收了传递的sql语句后随即进行了执行,并返回执行结果。



