躺在地上看代码ecshop后台注入漏洞预警 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    简要描述:

    后台注入没啥价值- -不过这个点可以任意构造语句 包括drop database;和select into outfile 顺便还自带爆路径 拿来getshell不错

    详细说明:

    admin\include\lib_main.php 行718

    function get_filter($param_str = '')

    {

    $filterfile = basename(PHP_SELF, '.php');

    if ($param_str)

    {

    $filterfile .= $param_str;

    }

    if (isset($_GET['uselastfilter']) && isset($_COOKIE['ECSCP']['lastfilterfile'])

    && $_COOKIE['ECSCP']['lastfilterfile'] == sprintf('%X', crc32($filterfile))) //如果如果巴拉巴拉

    {

    return array(

    'filter' => unserialize(urldecode($_COOKIE['ECSCP']['lastfilter'])),

    'sql'  => base64_decode($_COOKIE['ECSCP']['lastfiltersql']) //直接从cookie取的base64 无视GPC了

    );

    }

    else

    {

    return false;

    }

    }

    这一个无视GPC的输入点太爽了 而且看数组的key是sql,一般就快进查询了 继续翻翻哪里调用了get_filter

    好多地方都调用了,

躺在地上看代码ecshop后台注入漏洞预警

。这里拿article.php开刀

    行624:

    function get_articleslist()

    {

    $result = get_filter();

    if ($result === false)

    {

    /*省略一堆*/

    }

    else

    {

    $sql  = $result['sql']; //来自cookie base64无视GPC

    $filter = $result['filter'];

    }

    $arr = array();

    $res = $GLOBALS['db']->selectLimit($sql, $filter['page_size'], $filter['start']); //直接进查询

    /*省略另一堆*/

    }

    可以看到 如果get_filter()返回不为false就直接取出里面的sql进查询了...

    漏洞证明

    登陆ecshop后台

    然后打开一次

    http://127.0.0.1/admin/article.php?act=list

    这次的get_filter()是false 所以他会进入if里面 在这个if的最底下会用set_filter()设置cookie

    会看到多了3个cookie

   

    修改cookie

    ECSCP[lastfiltersql]=base64后的sql语句 这里用的爆管理员账号密码的payload其他的比如 导出shell啊啥的都行

    然后在url后面加上参数uselastfilter=1来进入get_filter()函数里的那个if

   

    只要让查询返回的结果不是正确的资源 是会报错把路径显示出来的,

电脑资料

躺在地上看代码ecshop后台注入漏洞预警》(https://www.unjs.com)。然后select into outfile

    修复方案:

    base64_decode啊urldecode之后啊再做一次检查吧

最新文章