太阳集团2138备用网址

  • 防弹少年团金泰亨蓝发登各国热搜 玩儿转红粉金黑棕各种发色实力演绎“有颜任性”【组图】 2019-04-25
  • 龙烨为袁竹逍遥画派配画诗欣赏之三 2019-04-25
  • 因应增值税下调 多个豪车品牌在华降价 2019-04-25
  • “小屏论”话两会:“习语”暖人心 2019-04-25
  • 低价 贴心 保障 国美3.15,为消费者保驾护航低价贴心保障 国美315,为消费者保驾护航-国美 2019-04-25
  • 中央政治局同志向党中央和习近平总书记述职 2019-04-25
  • China Daily Website 2019-04-25
  • 【守护好我们的美丽家园】新疆的明天一定会更好 2019-04-25
  • 22年后紫霞仙子归来 可至尊宝已经不是他了 2019-04-25
  • 【独家V观】你好 意大利 2019-04-25
  • 合肥一文化公司人去楼空老板跑路 老人购买保健品被骗上万元 2019-04-25
  • 北京二手房交易实现一网通办 20分钟就办完 ——凤凰网房产北京 2019-04-25
  • NBA史上最牛的9大名帅 波波在这里只能排倒三 2019-04-25
  • 《阿丽塔》要和《流浪地球》抢票房 2019-04-24
  • 百城住宅均价环比涨幅持续收窄 变化大多在1%内 2019-04-24
  • 欢迎来到 黑吧太阳集团2138备用网址 是业内专业的游戏平台,为你提供各式各样的精品游戏,最全的游戏项目,同时还为您提供各种游戏专题游戏攻略人气论坛。

    CMS代码审计之emlog 6.0

    来源:本站整理 作者:佚名 时间:2019-02-24 TAG: 我要投稿

    太阳集团2138备用网址 www.r-island.com 一、前言
    本小菜也是刚开始玩代码审计,最近发现个比较有趣的CMS跟大家分享一波,虽然只找到一些鸡肋漏洞。废话不多说开始进入正题,本次审计的CMS是emlog 6.0.0版本,官方地址为:http://www.emlog.net。

    二、审计思路
    在学习前辈们的文章后,自己稍微总结一下代码审计的思路主要可以分为以下四种。
    1) 查找可控变量,正向追踪变量传递过程,查看变量是否进行进行过滤,是否进行后台交互。
    2) 查找敏感函数,如Select、Insert等,回溯该函数的参数是否进行过滤、是否可控。
    3) 寻敏感功能点,通读功能点模块,如上传点。
    4) 直接通读全文代码,这种方式能够更好的理解代码的业务逻辑,能够挖掘出更有价值的漏洞
    三、审计过程
    1. Sql注入
    废话不多说,像本小菜这种级别的还是比较喜欢第一种思路,简单粗暴。
    首先了解一下代码大概逻辑结构,然后用notepad大法搜索一下$_GET参数看看哪些输入没进行过滤,我们再进行切入。通过搜索发现/admin/comment.php中未对$_GET[‘ip’]进行任何限制,接下来就查看IP这个参数是否进行了敏感操作。

    当action等于delbyip时,对token进行判定,查看是否是管理员,然后将$_GET[‘ip’]赋值给$ip,然后再调用dleCommentByIp($ip)函数,代码如下:
    if ($action== 'delbyip') {
        LoginAuth::checkToken();
        if (ROLE != ROLE_ADMIN) {
            emMsg('权限不足!', './');
        }
        $ip = isset($_GET['ip']) ? $_GET['ip'] : '';
        $Comment_Model->delCommentByIp($ip);
        $CACHE->updateCache(array('sta','comment'));
        emDirect("./comment.php?active_del=1");
    }
    接下来进行跟进class Comment_Model的delCommentByIp函数,继续使用搜索大法,在/inludes/model/comment_model.php中发现delCommentByIp函数,跟进delCommentByIp函数,可以看出这个函数直接将传入的参数$ip,代入“SELECT DISTINCT gid FROM “.DB_PREFIX.”comment WHERE ip=’$ip’”进行sql查询,此过程中未发现任何过滤行为,我们只需通过封闭单引号然后进行报错注入。
    function delCommentByIp($ip) {
            $blogids = array();
            $sql = "SELECT DISTINCT gid FROM ".DB_PREFIX."comment WHERE ip='$ip'";
            $query = $this->db->query($sql);
            while ($row = $this->db->fetch_array($query)) {
                $blogids[] = $row['gid'];
            }
            $this->db->query("DELETE FROM ".DB_PREFIX."comment WHERE ip='$ip'");
            $this->updateCommentNum($blogids);
        }
    接下来就进行漏洞验证了,访问http://127.0.0.1/emlog/admin/comment.php,点击根据ip删除,用burpsuite抓取数据包,构造payload
    /emlog/admin/comment.php?action=delbyip&token=abac6e12c2abe9b29797b64481ef6ed4&ip=127.0.0.1′and (extractvalue(1,concat(0x7e,(select user()),0x7e)))#  注入时得进行编码处理才能成功,当然各位师傅的骚操作比我多。

    比较尴尬的是该注入点进行了权限校验,也就是说只有管理员才能注入,所以该漏洞十分的鸡肋,当然也只是分享一下自己的学习审计过程。
    2. 文件上传漏洞
    在admin/plugin.php插件上传处存在上传漏洞,通过上传zip压缩的文件,即可上传木马文件。在plugin.php约79行处的上传点当action为upload_zip进行判断,先判断是否上传文件是否为空..
    if ($action == 'upload_zip') {
        LoginAuth::checkToken();
        $zipfile = isset($_FILES['pluzip']) ? $_FILES['pluzip'] : '';
        if ($zipfile['error'] == 4) {
            emDirect("./plugin.php?error_d=1");
        }
        if (!$zipfile || $zipfile['error'] >= 1 || empty($zipfile['tmp_name'])) {
            emMsg('插件上传失败');
        }
        if (getFileSuffix($zipfile['name']) != 'zip') { //判断后缀名是否为zip
            emDirect("./plugin.php?error_f=1");
        }
        $ret = emUnZip($zipfile['tmp_name'], '../content/plugins/', 'plugin');//解压zip文件到../content/plugins/目录下

    [1] [2] [3]  下一页

    【声明】:太阳集团2138备用网址(http://www.r-island.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@www.r-island.com,我们会在最短的时间内进行处理。