漂亮但不安全的CTB

2018-09-07 15:00

阅读:274

  
>>>DedicatedThisScrapToCaoJing<<<

涉及版本:
^^^^^^^
目前所有版本(现在1.3Alpha为最高版本)

描述:
^^^^^^
CTB是一款由实易数码gt;;开发和维护的源代码开放的PHP论坛。由于其后台管理文件验证存在缺陷,可能导致非法用户直接添加论坛超级管理员,进而威胁论坛或服务器安全。

具体:
^^^^
CTB书写非常规范,代码井然有序,赏心悦目,的确是优美的程序;特别是其功能模块,着实让小弟学习了一把。但安全方面却令人堪忧:

试看如下代码:

/admin/main.php
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//获取get变量
if(is_array($_GET)){
foreach($_GETas$k=>$v){
if(is_array($_GET[$k])){
foreach($_GET[$k]as$k2=>$v2){
$return[$k][$k2]=$v2;
}
}else{
$return[$k]=$v;
}
}
}
...
$mod=isset($_GET[mod])?$_GET[mod]:$_POST[mod];
if(!file_exists($mod..php{
$mod=mainright;
}
require_once($mod..php;
//-----------------------------------------------------------------------------

//初始化类变量
$ctb=newModule;
$ctb->set=$set;
$ctb->tplPath=./templates;
$ctb->input=$return;
$ctb->sess=isset($_COOKIE[sess_adminname])?$_COOKIE:$_SESSION;
$ctb->execute();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这里没有任何验证,我们看看添加管理员的文件:

/admin/systemuser.php
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
classModuleextendsCommonClass
//系统管理模块子类
{
functionexecute(){
switch($this->input[action]){
...
caseaddSystemUser:
$this->addSystemUser();
break;
...
}
}

functionaddSystemUser()
{
//输入数据简单格式化
$this->inputCheck(main.php?mod=systemuser&action=showSystemUser;
//执行添加操作
$this->file=../.$this->set[dataPath]./users/list.php;
$systemLine=$this->select(4,$this->input[systemUserName]);
....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

依然没有验证,一路顺利啊!

利用方法:
^^^^^^^
先注册一个用户:

登陆ID:cat
用户名:dog
密码:ilikecat
重复密码:ilikecat
信箱nbsp;

接着提交如下URL:



哈哈,你现在已经是超级管理员了,不相信?提交如下URL后台登陆:



管理名称:cat
管理密码:ilikecat

咦...还真成功了!

你现在是不是想更改后台上传文件类型,然后uploadwebshell?哼,被我猜到了吧...

后记:另外发现CTB代码注释有些扎眼的错别字,大煞风景,希望可以一起修正。


评论


亲,登录后才可以留言!