freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Hongcms 3.0.0后台SQL注入漏洞分析
FreeBuf_286835 2018-07-27 08:00:53 878908

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

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

一、背景介绍

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

二、漏洞描述

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

三、影响版本

Hongcms < 3.0.0

四、漏洞细节

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

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

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

f2.png跟进operate:

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

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

f5.png

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

f6.png

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

f7.png

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

f8.png

跟进EmptyTable。

f9.png

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

f10.png

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

f11.png

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

五、漏洞复现

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

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

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

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

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

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

六、修补措施

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

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

# SQL注入 # 框架
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 FreeBuf_286835 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
FreeBuf_286835 LV.1
这家伙太懒了,还未填写个人描述!
  • 1 文章数
  • 0 关注者
文章目录