Hongcms 3.0.0后台SQL注入漏洞分析

一、背景先容

HongCMS是一个轻量级的中英文企业网站系统,造访速率极快,应用简单,法度榜样代码简洁严谨,功能强大年夜,完全免费开源,可用于扶植各类类型的中英文网站,同时它是一个小型开拓框架。

二、破绽描述

法度榜样在后台进行清空数据库操作时对传入的数据库名过滤不严格,可插入和履行恶意sql语句。

三、影响版本

Hongcms

四、破绽细节

首先,我们登录到网站后台治理定位到系统—>数据库掩护。

系统默认环境下只容许我们对sessions和vvc数据表进行清空操作,我们随机选择一个,此处我应用vvc表来进行阐发,随后我们点击清空按钮并结合phpstorm对履行流程进行动态调试。为了方便大年夜家能清楚地看清履行历程,笔者已经在关键的函数位置设置了断点。

首先法度榜样在APP.php第170行应用call_user_func函数对吸收的参数进行动态函数回调:

跟进operate:

将数据表名称通报给ForceStringFrom函数,继承跟进ForceStringFrom:

ForceStringFrom经由过程$_GET[$VariableName]获取我们通报的tablename参数值并通报给了ForceString,跟进ForceString

ForceString判断Invalue是否为字符串之后随即将值通报给给EscapeSql,函数进行安然过滤,继承跟进。

首先函数判断了gpc是否开启,假如开启则应用stripslashes进行过滤,否则将应用htmlspecialchars并对和空格字符进行了调换,随后判断mysql_real_escape_string或mysql_escape_string函数是否存在,并调用响应的函数进行编码,否则应用addslashes。随后法度榜样进入switch语句进行动作匹配,根据不合的action参数值进行响应的操作。

我们定位到emptytable,法度榜样将tablename值传入了EmptyTable函数。

跟进EmptyTable。

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

Exe接管了通报的sql语句后随即进行了履行,并返回履行结果。

着末调用PrintResults将结果打印到后台显示,我们可以看到在全部履行历程中法度榜样仅仅应用了内置的函数和简单的调换函数对传入的参数值进行了安然处置惩罚,而这些函数是可以被绕过的。

五、破绽复现

颠末上一节的阐发,下面我们就要动手构造我们的sql语句,同样我们定位到数据表操作的页面点击要清空的数据表,随后我们用burp截断来改动我们的数据表名称来注入我们构造的sql语句。

此处我们将数据表名称改为` where vvcid=1 orupdatexml(2,concat(0x7e,(version())),0) or `

同样我们来跟踪我们传入的参数值:

可以看到我们成功的绕过了法度榜样的安然防护并精确的进行了返回,我们继承往下走看看终极的要履行的sql语句,是否是我们想要的结果。

看到履行的sql语句和我们预想的一样,我们返回后台页面看看履行的结果:

可以看到当前应用的数据库版本已经被查询了出来。

六、修补步伐

系统已竣事掩护,可以斟酌自行安装WAF进行防护。

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包