来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 上一篇:http://www.2cto.com/Article/201212/174596.html一:Dedecms变量覆盖新型绕过:请看看文件:include/filter.inc.php引用一哥话语:这是2B的dede再次变量覆盖漏洞根源。。这是过滤或替换非法关键字。...
上一篇:http://www.2cto.com/Article/201212/174596.html
一:Dedecms变量覆盖新型绕过: 请看看文件:include/filter.inc.php 引用一哥话语: 这是2B的dede再次变量覆盖漏洞根源。。 这是过滤或替换非法关键字。正常的。 /* 对 _GET,_POST,_COOKIE 进行过滤 */ foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) { ${$_k} = _FilterAll($_k,$_v); } } 等同于重新赋值了,之前做的过滤无效了。 这是过滤或替换非法关键字。正常的。 漏洞关键是主要是下面的代码: function _FilterAll($fk, &$svar) // 这是过滤或替换非法关键字。 { global $cfg_notallowstr,$cfg_replacestr; if( is_array($svar) ) { foreach($svar as $_k => $_v) { $svar[$_k] = _FilterAll($fk,$_v); } } else { if($cfg_notallowstr!='' && preg_match("#".$cfg_notallowstr."#i", $svar)) { ShowMsg(" $fk has not allow words!",'-1'); exit(); } if($cfg_replacestr!='') { $svar = preg_replace('/'.$cfg_replacestr.'/i', "***", $svar); } } return $svar; } /* 对 _GET,_POST,_COOKIE 进行过滤 */ foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) { ${$_k} = _FilterAll($_k,$_v); // 这里只有过滤或替换非法关键字 , 当 GPC 为 off 的时候可以用注入了 . } } 所以在GPC=OFF的时候,被转义的变量又会被重新覆盖而变成正常代码。 Eg: typeid=2\' 经过覆盖typeid=2' 看他的过滤会把脏话替换成***, 如果我们传如的参数里面有这样的一个字符 /他妈/ 他就会成为/***/,我相信大家已经想到了什么。 我联想到了XSS . <script>/**/alert(1)/**/</script> csse:gainover :http://www.2cto.com/Article/201212/174759.html 更多连接: https://forum.90sec.org/thread-4228-1-1.html 没ID搜索:[【原创】] (首发)dedecms 5.7 最新漏洞(绝非网上公布的) https://forum.90sec.org/thread-4249-1-1.html 没ID搜索:[【原创】] 对最近dedecms注入的分析 http://www.2cto.com/Article/201211/169202.html 二.boblog任意变量覆盖漏洞-----php内置函数的问题 80vul :http://www.2cto.com/Article/201102/84406.html 1.简单说说流程: $_SERVER["REQUEST_URI"]; 控制了 $q_url-> 绕过正则 $RewriteRules[] 不够细致 -> 经过一些过程 ->parse_url 出 url-> 最后 parse_str($parsedURL['query']); (parse_str 函数变量覆盖 !) 然后有两个出路 :1. 虽然用了 basename() 来限制 , 但是可以利用 data:// 来执行命令 . 只是这种方式的利用是有限制的 [PHP>5.2.0&allow_url_include=On]. 2. 可以变量覆盖绕过系统 global.php 文件中防御变量覆盖的函数 unregister_GLOBALS() 。 程序写得不错^-^ 赞一个! 可惜 我们可以利用unset()就让他消失了.从而引发各种漏洞。。。 一些链接: php data:// 高级PHP应用程序漏洞审核技术 (百度搜索下) ->此文章中概括了大量php内置函数能引发变量覆盖的问题! 吐槽WB |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com