太阳集团2138备用网址

欢迎来到 黑吧太阳集团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,我们会在最短的时间内进行处理。