欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

ZZCMS v8.3最新版SQL注入漏洞

来源: 作者: 时间:2019-02-24 19:29 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

偶然发现有大佬审计了这款CMS的8.2版本,并且发现了SQL注入漏洞,到官网看了一下,官网已经更新了8.3版本,发现源码不大,于是想要重新审计一下,看看是否能够寻找到新的漏洞,顺便学习此CMS的架构的思想。
0×01 简介

zzcms,站长招商网cms,适用于招商代理型的行业网站,可用于医药招商网站程序源码,服装招商网站程序源码,化妆品招商网站的程序源码等
官网地址:http://www.zzcms.net/
这次就直接按照思路来审计,记录一下过程…
***************安装步骤***************第一步:上传程序到服务器网站目录第二步:运行install目录进行安装(在地址栏输入http://你的域名/install)*****************安装平台要求*****************1.Windows 平台:IIS/Apache/Nginx + PHP4/PHP5.2/PHP5.3/PHP7 + MySQL4/52.Linux/Unix 平台Apache + PHP4/PHP5/PHP7 + MySQL4/5 (PHP必须在非安全模式下运行)3.PHP必须环境或启用的系统函数:allow_url_fopenGD扩展库MySQL扩展库mysqli扩展库
0×02 寻找敏感信息泄漏/重装漏洞
重装漏洞不存在,与install/install.lock 文件关联,安装的时候,还得先把这个文件删除,因为默认存在~
1.默认后台管理登录地址:./admin/login.php
2.安装完成后没有删除./install/data.sql文件导致数据库结构信息泄漏
0×03 寻找SQL注入XSS
在./3/alipay/notify_url.php和./3/alipay/return_url.php,这两个回调验证支付文件中,有写数据库的操作,同时对于写入数据库的参数没有过滤,有XSSSQL注入的风险
两者差不多,因此选择./3/alipay/return_url.php 为例子吧
24行左右开始$alipayNotify = new AlipayNotify($alipay_config);$verify_result = $alipayNotify->verifyReturn();if($verify_result) {//验证成功    ···//此处代码省略}?>
看到上面的代码,有一个AlipayNotify()的对象实例化,这个初始化只要配置数据有就能成功初始化,然后我们进入verifyRetuen()函数看看。
// 在./3/alipay/lib/alipay_notify.class.php 第77行左右    function verifyReturn(){        if(empty($_GET)) {//判断POST来的数组是否为空            return false;        }        else {            //生成签名结果            $isSign = $this->getSignVeryfy($_GET, $_GET["sign"]);            //获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)            $responseTxt = 'true';            if (! empty($_GET["notify_id"])) {$responseTxt = $this->getResponse($_GET["notify_id"]);}            //写日志记录            //if ($isSign) {            //    $isSignStr = 'true';            /

偶然发现有大佬审计了这款CMS的8.2版本,并且发现了SQL注入漏洞,到官网看了一下,官网已经更新了8.3版本,发现源码不大,于是想要重新审计一下,看看是否能够寻找到新的漏洞,顺便学习此CMS的架构的思想。
0×01 简介

zzcms,站长招商网cms,适用于招商代理型的行业网站,可用于医药招商网站程序源码,服装招商网站程序源码,化妆品招商网站的程序源码等
官网地址:http://www.zzcms.net/
这次就直接按照思路来审计,记录一下过程…
***************安装步骤***************第一步:上传程序到服务器网站目录第二步:运行install目录进行安装(在地址栏输入http://你的域名/install)*****************安装平台要求*****************1.Windows 平台:IIS/Apache/Nginx + PHP4/PHP5.2/PHP5.3/PHP7 + MySQL4/52.Linux/Unix 平台Apache + PHP4/PHP5/PHP7 + MySQL4/5 (PHP必须在非安全模式下运行)3.PHP必须环境或启用的系统函数:allow_url_fopenGD扩展库MySQL扩展库mysqli扩展库 本文来自无奈人生安全网
0×02 寻找敏感信息泄漏/重装漏洞
重装漏洞不存在,与install/install.lock 文件关联,安装的时候,还得先把这个文件删除,因为默认存在~
1.默认后台管理登录地址:./admin/login.php
2.安装完成后没有删除./install/data.sql文件导致数据库结构信息泄漏
0×03 寻找SQL注入XSS
在./3/alipay/notify_url.php和./3/alipay/return_url.php,这两个回调验证支付文件中,有写数据库的操作,同时对于写入数据库的参数没有过滤,有XSSSQL注入的风险
两者差不多,因此选择./3/alipay/return_url.php 为例子吧
24行左右开始$alipayNotify = new AlipayNotify($alipay_config);$verify_result = $alipayNotify->verifyReturn();if($verify_result) {//验证成功    ···//此处代码省略}?>

www.wnhack.com


看到上面的代码,有一个AlipayNotify()的对象实例化,这个初始化只要配置数据有就能成功初始化,然后我们进入verifyRetuen()函数看看。
// 在./3/alipay/lib/alipay_notify.class.php 第77行左右    function verifyReturn(){        if(empty($_GET)) {//判断POST来的数组是否为空            return false;        }        else {            //生成签名结果            $isSign = $this->getSignVeryfy($_GET, $_GET["sign"]);            //获取支付宝远程服务器ATN结果(验证是否是支付宝发来的消息)            $responseTxt = 'true';            if (! empty($_GET["notify_id"])) {$responseTxt = $this->getResponse($_GET["notify_id"]);}            //写日志记录            //if ($isSign) {            //    $isSignStr = 'true';            /。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。