用户
搜索

[代码审计] ZZCMS的代码审计

  • TA的每日心情
    奋斗
    2017-11-10 23:27
  • 签到天数: 147 天

    连续签到: 1 天

    [LV.7]常住居民III

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    1

    主题

    78

    帖子

    1098

    魔法币
    收听
    0
    粉丝
    3
    注册时间
    2015-11-20

    i春秋签约作者

    发表于 2016-11-2 20:07:51 1517100
    本帖最后由 betula 于 2016-11-2 20:11 编辑
    本小菜,发现社区有很多大牛,年龄比我小的都很多,确实感到很忏愧。我看到一些同志发的帖子是很常规的渗透过程,我之前会对这帖子嗤之以鼻,但是现在我慢慢意识到我的很大的错误,想到自己刚开始学的时候也是这样子,毕竟成就感是自己学下去的一部分动力,所以在这里向各位道歉。在以后的日子里面,我会虚心向大家学习,加油!我们的黑客梦不能因为有一点阻碍就放弃,只要我们还有梦,我们就永不止步!

    一、为什么要选择ZZCMS

    1.前几天看到sqler发的  WEB安全系列之如何挖掘任意文件读取  就下载了里面说的ZZCMS,下载完发现这个可能是以前的版本吧,文件结构完全不一样。

    2.社区是有一篇写文件上传的代码审计的,但是不怎么详细。


    二、要用到的工具
    1.notepad++
    2.火狐浏览器
    3.火狐插件firebug和hackbar
    4.sqlmap
    5.burp suite
    6.ZZCMS源代码
    7.phpstudy(这个集成环境可以选自己喜欢的)

    三、安装ZZCMS
    1.输入http://127.0.0.1/zzcms/install/ 进行安装,在这之前要先创建一个数据库名为mys的库再进行安装,如下图:
    K}M20PB_L1QY{3FA`18SC6M.png
    四:开始代码审计之旅

    1.about页面的SQL注入漏洞

    http://127.0.0.1/zzcms/About.php?id=1后面加上分号'出现错误信息

    [SQL] 纯文本查看 复制代码
    Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in D:\phpStudy\WWW\zzcms\lib\ZC_Mysql.php on line 40


    去文件目录找到About.php的文件:

    2.png

    发现是用了文件包含include/global.php,然后就继续找下去,发现这个文件也是包含了其他文件

    3.png

    发现这个About.php是没有任何过滤的

    4.png

    在这我们可以手工也可以sqlmap,但是我们要进行学习的,我们要看到注入执行的语句。我们看到文件里面利用了get_one这个函数来执行SQL语句,我们可以用notepad++来搜索这个函数
    5.png

    可以看到这段代码是没有任何过滤函数的:
    [PHP] 纯文本查看 复制代码
    function get_one($sql){
                    $query = $this->query($sql);
                    $rs = $this->fetch_array($query);
                    $this->free_result($query);
                    return $rs ;
            }}


    我们可以在里面加入echo来输出我们的执行语句:
    [PHP] 纯文本查看 复制代码
    function get_one($sql){
    [color=Magenta]echo $sql;[/color]
                    $query = $this->query($sql);
                    $rs = $this->fetch_array($query);
                    $this->free_result($query);
                    return $rs ;
            }}


    然后我们就可以看到我们所执行的SQL语句了
    6.png



    2.downfile.php页面的盲注

    我们打开这个文件:
    7.png
    发现也是没有过滤函数的,于是乎我们就开始我们的注入语句。

    不知道你们发现了没有,当我们加入让SQL语句报错的语句的时候发现并没有输出错误。但是代码里面确实有SQL执行的语句,如果有经验的同学就可能会是要注盲。一般我们测试的方法和语句是:
    1.打开火狐的firebug工具点到网络那里重新载入
    2.在后面输入
    [PHP] 纯文本查看 复制代码
    http://127.0.0.1/zzcms/downfile.php?id=1 union select sleep(5)


    这个时候我们发现了请求前后的时候不一样

    8.png

    9.png

    盲注可以用sqlmap更方便具体看:
    用SQLMap进行SQL盲注测试

    3.ZZCMS的上传漏洞

    我们前天因为没有上传的地方,所以我们登陆后台来拿shell,我们来随便上次一个文件,看到生成文件的目录
    10.png

    下面我们就按上面的方法来查找这个上传函数,找到up,php和ZC_Upload.php这两个文件,看到一处检查文件类型的函数:
    [PHP] 纯文本查看 复制代码
    function check_type(){
                            if($this->getext()==strtolower('exe')){
                                    showmsg("禁止上传exe文件!");
                            }
                            if(!in_array($this->file_type,$this->allow_type)){
                                    showmsg("上传文件类型不正确");
                            }
                    }


    这个函数的作用就是看
    我们上传的 类型file_type是否在allow_type里面,然而allow_type也是在同文件里面的一个变量:
    [PHP] 纯文本查看 复制代码
    public $allow_type=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png');


    这段代码就是allow_type的值。

    发现我们只要
    Content-Type的值在这个变量里面就行了

    利用方法:
    1.打开burp suite
    2.把
    Content-Type修改为
    image/jpeg(只要是allow_type里面的值)就行了

    我就在一个文件里面输入查看PHP函数的变量改名为1.php

    [PHP] 纯文本查看 复制代码
    <?php
    phpinfo();
    ?>


    11.png

    burp的用法就不用详细再讲了吧,百度有多教程

    12.png

    在这里面修改下
    Content-Type就行了

    13.png

    我们点击go的时候可以去zzcms\upload\目录下看这个文件生成

    14.png

    这个文件名是利用date()函数生成的文件名,可以用脚本来遍历出来。

    [PHP] 纯文本查看 复制代码
    function set_name(){                        
                            return [color=Magenta]time()[/color].".".$this->getext();
                    }


    15.png



    五、收尾
    其实ZZCMS还有很多可以利用的地方,和上面的方法类似。
    如果你还看不懂上面的代码的话建议你去学一遍PHP和MYSQL。
    上面有什么错误可以指出来,我虚心请教,技术嘛,都是不断碰撞才能出新的。
    谢谢大家的观看,以后的日子我会和大家一起努力一起学习的!
    本文的ZZCMS的源码下载: zzcms.rar (758.61 KB, 下载次数: 113)

    评分

    参与人数 1价值分 +12 收起 理由
    zusheng + 12 价值分奖励

    查看全部评分

    本帖被以下淘专辑推荐:

    发表于 2016-11-4 13:47:49
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!

    基本项加分项
    作者帖子标题内容要求内容稀缺性文章篇幅文章深度文章可读性是否系列文章排版优化总分奖金点评
    betulaZZCMS的代码审计22223011270思路清晰,值得新手一看的好文

    Hacking the earth.My Blog:https://isbase.cc
    使用道具 举报 回复
    发表于 2016-11-3 10:01:04
    写的很好,这个应该是低版本吧,没记错的话,新版本并没有这两个文件吧。
    Hacking the earth.My Blog:https://isbase.cc
    使用道具 举报 回复
    发表于 2016-11-3 10:23:22
    可以可以
    使用道具 举报 回复
    不错不错
    使用道具 举报 回复
    发表于 2016-11-3 12:16:09
    zusheng 发表于 2016-11-3 02:01
    写的很好,这个应该是低版本吧,没记错的话,新版本并没有这两个文件吧。 ...

    一看你就是老司机来着。。。
    hello world
    使用道具 举报 回复
    发表于 2016-11-3 13:12:21
    我觉得我写的不怎么样,下次我会写得思路更清晰和目的更明确,谢谢大家支持
    使用道具 举报 回复
    发表于 2016-11-3 13:43:04
    情痴 发表于 2016-11-3 12:16
    一看你就是老司机来着。。。

    哪里哦,你才是老司机,带带我吧
    Hacking the earth.My Blog:https://isbase.cc
    使用道具 举报 回复
    发表于 2016-11-3 15:38:09
    学习了,下了个7.2的版本,完全都不过滤
    使用道具 举报 回复
    发表于 2016-11-3 17:17:55
    使用道具 举报 回复
    发表于 2016-11-7 15:30:04
    不错的
    使用道具 举报 回复
    发表于 2016-11-7 21:35:54
    666666
    使用道具 举报 回复
    发表于 2016-11-15 22:12:55
    楼主,安装zzcms出现显示菜单出现错误,这个是源码的问题吧
    使用道具 举报 回复
    发表于 2016-11-15 23:12:48
    Gokoururi了 发表于 2016-11-15 22:12
    楼主,安装zzcms出现显示菜单出现错误,这个是源码的问题吧

    使用道具 举报 回复
    发表于 2017-11-18 20:54:01
    学习!
    用代码将梦想照进现实!
    使用道具 举报 回复
    12下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册