网站地图    收藏   

主页 > 后端 > 网站安全 >

shopex绕过补丁本地包含漏洞#4 - 网站安全 - 自学

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

[导读] 360提交的漏洞,官方修复不严谨http://bbs.webscan.360.cn/forum.php?mod=viewthreadtid=8613extra=page%3D1修复前:修复后(\core\api\shop_api.php):if ( isset($_REQUEST[#39;appname#39;]) ) { ......

360提交的漏洞,官方修复不严谨

http://bbs.webscan.360.cn/forum.php?mod=viewthread&tid=8613&extra=page%3D1
 
修复前:
 
修复后(\core\api\shop_api.php):
 
 
if ( isset($_REQUEST['appname']) ) {
            $appName = preg_replace('/[^a-z0-1_~]/i', '', $_REQUEST['appname']);
        } elseif ( strpos($apiAct, ':') > 0 ) {// request plugin api
            list($appName, $apiAct) = explode(':', $apiAct);
        } elseif ( 0 === strpos($apiAct,'shopex_') ) { // 照顾"商品助理"
            $appName = 'goodsassistant';
        }

        if ( $appName && file_exists(PLUGIN_DIR."/app/{$appName}/api/api_link.php") ) {
            $APIs = include PLUGIN_DIR."/app/{$appName}/api/api_link.php";
        } else {// request traditional api
            $APIs = include CORE_DIR.'/api/include/api_link.php';
        }

 

 
 
 
看起来$appName = preg_replace('/[^a-z0-1_~]/i', '', $_REQUEST['appname']);已经过滤掉了,但是再往下看:list($appName, $apiAct) = explode(':', $apiAct);
 
可以通过变量$apiAct去给$appName赋值 

die($appName);测试看
 
http://127.0.0.1/api.php?act=可控路径:cc
 

 
后面还有file_exists函数做检查,所以只对多域名的虚拟机危害较大 

 
修复方案:

过滤代码往下移几行 
 

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

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

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

添加评论