Hongcms 3.0.0后台SQL注入漏洞分析

2018 年 7 月 27 日 FreeBuf

* 本文作者:BlackWater,本文属FreeBuf原创奖励计划,未经许可禁止转载。

一、背景介绍

HongCMS是一个轻量级的中英文企业网站系统,访问速度极快,使用简单,程序代码简洁严谨,功能强大,完全免费开源,可用于建设各种类型的中英文网站,同时它是一个小型开发框架。

二、漏洞描述

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

三、影响版本

Hongcms < 3.0.0

四、漏洞细节

首先,我们登录到网站后台管理定位到系统-→数据库维护。

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

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

跟进operate:

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

ForceStringForm通过$_GET[$VariableName]获取我们传递的tablename参数值并传递给了ForceString,跟进ForceString

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语句后随即进行了执行,并返回执行结果。

最后调用PrintResults将结果打印到后台显示,我们可以看到在整个执行过程中程序仅仅使用了内置的函数和简单的替换函数对传入的参数值进行了安全处理,而这些函数是可以被绕过的。

五、漏洞复现

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

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

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

可以看到我们成功的绕过了程序的安全防护并正确的进行了返回,我们继续往下走看看最终的要执行的sql语句,是否是我们想要的结果。

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

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

六、修补措施

系统已停止维护,可以考虑自行安装WAF进行防护。

* 本文作者:BlackWater,本文属FreeBuf原创奖励计划,未经许可禁止转载。

登录查看更多
0

相关内容

SQL 全名是结构化查询语言,是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
60+阅读 · 2020年6月26日
【圣经书】《强化学习导论(2nd)》电子书与代码,548页pdf
专知会员服务
208+阅读 · 2020年5月22日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【IJCAI2020】TransOMCS: 从语言图谱到常识图谱
专知会员服务
35+阅读 · 2020年5月4日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
《计算机研究与发展》投稿常见问题
计算机研究与发展
25+阅读 · 2019年6月13日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
17+阅读 · 2019年5月13日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
Arxiv
5+阅读 · 2019年10月11日
Arxiv
5+阅读 · 2017年7月23日
VIP会员
相关资讯
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
《计算机研究与发展》投稿常见问题
计算机研究与发展
25+阅读 · 2019年6月13日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
17+阅读 · 2019年5月13日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
Top
微信扫码咨询专知VIP会员