专栏首页安恒网络空间安全讲武堂zzcms 8.3 最新CVE漏洞分析

zzcms 8.3 最新CVE漏洞分析

前言

上次我们分析了一下zzcms 8.2版本的一些漏洞,但是很快8.3版本就推出更新了,但是在更新不久,就有新的漏洞爆了出来,那就跟随大师傅们的脚步学习一下。有关8.2版本的分析在我之前发的文章.

zzcms 的全局过滤

首先系统也使用了伪全局变量的设置,我们找到了关键的代码:/inc/stopsqlin.php

可以看到所有的代码在默认传进来的时候,会被addslashes转义,所以如果有单引号包围是不存在sql注入的,但是这里也容易出现问题,如果是数字型没有严密验证,或者是表名等等位置,不需要单引号闭合的位置都是很危险的,上一篇的很多的问题就是这里疏忽产生的。

CVE-2018-13056

简单看一下漏洞说明,又是一个任意文件删除漏洞,我们在之前的文章总结中就说过了整个系统在文件处理上是很明显有问题的,那我们就来分析一下这次的问题: 漏洞点出现在 /user/del.php 的55行到64行

看到是从数据库中取出的img字段,然后直接判断了是不是默认值,然后检查文件存在,最后是删除,这其中并没有涉及到文件合法性检查。 那我们就可以去找一下这个字段是怎么进入数据库的:

首先找到表名,是zzcms_main表,然后找一下insert或者update操作,然后我们在/user/zssave.php中发现了有关操作。

然后查看是否经过了过滤,因为经过了伪全局过滤,这里的$img并没有经过任何过滤。

所以向数据库中插入污点数据是很简单的,只要在发布招商信息的时候,抓包,修改掉img的数据即可,这里我们测试/install/install.lock:

然后就可以到/user/del.php中去删除文件,这样就能触发删除操作。 但是这里有一个问题,就是删除的时候需要知道这一条记录在数据库中的id编号,可以采用爆破的方法来得到。

发包以后,我们刷新页面就可以发现,安装的锁文件已经被成功删除:

然后就可以配合之前的漏洞,任意文件写入拿到webshell。

CVE-2018-14961

一个前台的sql注入漏洞,发现又是使用了stripfxg这个函数解除了自己的过滤,但是其实这里即使没有引号,也是可以直接注入的,下面详细分析一下: 代码出现问题是在:/dl/dl_sendmail.php 的 42到45行 简单整理一下逻辑就是:

所以很简单,也没有什么逻辑,可以直接注入,测试脚本如下:

aaaa

测试结果为:

可以成功注入出管理员的密码hash

CVE-2018-14963

csrf漏洞,这个问题也是从上个版本就存在的问题,就是整个管理员后台的,所有表单都是没有设置csrf的token的,所以只要涉及到敏感操作的表单,都可以使用csrf来攻击,达成很多攻击利用。 这里的攻击是产生在了/admin/adminadd.php的添加管理员操作,构造的表单如下:

构造好了payload以后,放到vps上,然后诱导管理员点击恶意链接,即可成功添加管理员。 未添加管理员之前:

点击链接之后:

发现可以成功达到添加管理员的目的。

CVE-2018-14962

一个存储型xss,最底层的原因还是因为调用了stripfxg函数,消除了自己的过滤,然后在输出的时候,导致了xss漏洞。

先看一下输出位置,在/zt/show.php 的211 行:

然后追踪这个变量的值,找到了是在用户在修改自己公司简介处添加的数据 然后我们来测试一下:

保存,然后访问一下/zt/show.php?id=1,就可以看到效果:

成功触发漏洞

其实感觉这种漏洞还是普遍存在于这个系统中的,可以顺着这个危险的函数stripfxg入手,逐个分析,估计还是有不少漏网之鱼。

后记

虽然zzcms更新了版本,但是看到很多安全问题并没有从底层去解决,有的只是暂时性的修补了一下,这样其实是不太可取的,底层的问题存在,只要在找到另外一条可以利用的通路就一样可以利用。

本文分享自微信公众号 - 安恒网络空间安全讲武堂(cyberslab),作者:执念于心

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP的libcurl中存在的一些问题

    PHP的libcurl中存在的一些问题 看了近来的几场ctf题目,学习了一些关于php libcurl的一些知识,在这里总结一下。 0x1发送POST请求时造成...

    安恒网络空间安全讲武堂
  • PHP 邮件漏洞小结

    PHP中,mail的函数在底层是写好的,调用linux的sendmail程序来发送邮件,在额外参数中,sendmail还支持其他三个选项。

    安恒网络空间安全讲武堂
  • 为安全出把力:CVE-2011-1938漏洞分析以及exp编写

    ## 0x01 前言 首先这是我第一次尝试在linux写实际的漏洞利用的exp,水平有限欢迎指出。本次要讲的是php的一个栈溢出漏洞,远程的exp说实在的,现在...

    安恒网络空间安全讲武堂
  • PHP的libcurl中存在的一些问题

    PHP的libcurl中存在的一些问题 看了近来的几场ctf题目,学习了一些关于php libcurl的一些知识,在这里总结一下。 0x1发送POST请求时造成...

    安恒网络空间安全讲武堂
  • MATLAB一键安装LIBSVM(无需手动配置)

    种花家的奋斗兔
  • 如何科学减肥?这款小程序,教你边吃边瘦

    不过在加强运动的同时,我们也不能忽视饮食这个更为重要的因素,比如说控制食物摄入的热量。

    知晓君
  • Linux命令(53)——exit命令(builtin)

    (1)状态码n的范围是0255。如果是0255之外的数值,则会被强制转换为uint8_t类型的数值,比如-1会被转换为255,256会发生类型宽度截断,被转换为...

    Dabelv
  • LNMP环境搭建

    Nginx的PHP安装和LAMP环境搭建中的PHP安装是有区别的。因为Nginx中的PHP是以fastcgi的方式结合Nginx的,而httpd是把PHP作为自...

    刘銮奕
  • linux 中php以及nginx的重启命令

    关闭php killall php-fpm 注意:php关闭之前,使用ps aux|grep 'php' 查看一下php的服务及进程 php重启 /usr/lo...

    joshua317
  • 公平锁与非公平锁

     其实好多人,在面试的时候都被问到过,可能是因为没有碰见过,在这里说一下吧,也当是为大家填一个坑

    彼岸舞

扫码关注云+社区

领取腾讯云代金券