ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2612字,纯文字阅读大概需要4分钟。
内容图文
. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考
1. 漏洞描述
ECShop存在一个盲注漏洞,问题存在于/api/client/api.php文件中,提交特制的恶意POST请求可进行SQL注入攻击,可获得敏感信息或操作数据库
http://sebug.net/vuldb/ssvid-21007
2. 漏洞触发条件
1. /api/client/api.php存在未过滤漏洞 2. 服务器magic_quote_gpc = off //magic_quote_gpc特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除,即默认情况下,magic_quote_gpc = Off
0x1: POC
http://localhost/ecshop2.7.2/api/client/api.php?Action=UserLogin POST: UserId=%27%20or%20user_id=1%23
Relevant Link:
http://php.net/manual/zh/info.configuration.php
3. 漏洞影响范围
4. 漏洞代码分析
/api/client/api.php
<?php define(‘IN_ECS‘, true); include_once ‘./includes/init.php‘; //分发处理POST数据 dispatch($_POST); ?>
/api/client/includes/lib_api.php
function dispatch($post) { // 分发器数组 $func_arr = array(‘GetDomain‘, ‘UserLogin‘, ‘AddCategory‘, ‘AddBrand‘, ‘AddGoods‘, ‘GetCategory‘, ‘GetBrand‘, ‘GetGoods‘, ‘DeleteBrand‘, ‘DeleteCategory‘, ‘DeleteGoods‘, ‘EditBrand‘, ‘EditCategory‘, ‘EditGoods‘); //当$_POST[‘Action‘] == ‘UserLogin‘的时候调用API_UserLogin if(in_array($post[‘Action‘], $func_arr) && function_exists(‘API_‘.$post[‘Action‘])) { return call_user_func(‘API_‘.$post[‘Action‘], $post); } else { API_Error(); } }
/api/client/includes/lib_api.php
function API_UserLogin($post) { $post[‘username‘] = isset($post[‘UserId‘]) ? trim($post[‘UserId‘]) : ‘‘; $post[‘password‘] = isset($post[‘Password‘]) ? strtolower(trim($post[‘Password‘])) : ‘‘; /* 检查密码是否正确 */ //$post[‘username‘]未进行过滤,造成盲注漏洞,参数是直接从原始$_POST获取的,未进行任何预处理,不受内核过滤影响 $sql = "SELECT user_id, user_name, password, action_list, last_login". " FROM " . $GLOBALS[‘ecs‘]->table(‘admin_user‘) . " WHERE user_name = ‘" . $post[‘username‘]. "‘"; $row = $GLOBALS[‘db‘]->getRow($sql); ..
Relevant Link:
http://www.wooyun.org/bugs/wooyun-2010-02969
5. 防御方法
/api/client/includes/lib_api.php
function API_UserLogin($post) { /* SQL注入过滤 */ if (get_magic_quotes_gpc()) { $post[‘UserId‘] = $post[‘UserId‘] } else { $post[‘UserId‘] = addslashes($post[‘UserId‘]); } /* */ $post[‘username‘] = isset($post[‘UserId‘]) ? trim($post[‘UserId‘]) : ‘‘; ..
Relevant Link:
http://www.topit.cn/ecshop-tutorial/ecshop_mangzhu_bug_for_ecshop_v2.7.2-195.html
6. 攻防思考
Copyright (c) 2015 LittleHann All rights reserved
ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul
标签:
本文系统来源:http://www.cnblogs.com/LittleHann/p/4523963.html
内容总结
以上是互联网集市为您收集整理的ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul全部内容,希望文章能够帮你解决ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。