PHP168 v2008网站内容管理系统权限提升漏洞


添加时间:
2009-02-01

系统编号:
WAVDB-01317

影响版本:
php168 v2008

程序介绍:

PHP168整站是PHP领域当前功能最强大的建站系统,代码全部开源,可极其方便的进行二次开发,所有功能模块可以自由安装与删除,个人用户完全免费使用。

漏洞分析:

在common.inc.php页面代码当中

 
  1. if($_SERVER['HTTP_CLIENT_IP']){  
  2.      $onlineip=$_SERVER['HTTP_CLIENT_IP'];  
  3. }elseif($_SERVER['HTTP_X_FORWARDED_FOR']){  
  4.      $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];  
  5. }else{  
  6.      $onlineip=$_SERVER['REMOTE_ADDR'];  
  7. }  
  8. $onlineip = preg_replace("/^([\d\.]+).*/""\\1", filtrate($onlineip));  
//这个地方使用preg_replace存在着安全隐患,之前就暴过漏洞,官方修补的方法是用filtrate函数处理了下$onlineip看一下filtrate函数是怎么处理的。
在function.inc.php页面代码当中
 
  1. function filtrate($msg){  
  2.     $msg = str_replace('&','&',$msg);  
  3.     $msg = str_replace(' ',' ',$msg);  
  4.     $msg = str_replace('"','"',$msg);  
  5.     $msg = str_replace("'",''',$msg);  
  6.     $msg = str_replace("<","<",$msg);  
  7.     $msg = str_replace(">",">",$msg);  
  8.     $msg = str_replace("\t","       ",$msg);  
  9.     $msg = str_replace("\r","",$msg);  
  10.     $msg = str_replace("   ","   ",$msg);  
  11.     return $msg;  
  12. }  
过滤了'"<等,但是没有处理\。
common.inc.php
 
  1. if($usr_oltime>30||!$usr_oltime){  
  2.         $usr_oltime>600 && $usr_oltime=600;  
  3.         include(PHP168_PATH."php168/level.php");  
  4.         if( isset($memberlevel[$lfjdb[groupid]]) ){  
  5.             $SQL=",groupid=8";  
  6.             $lfjdb[money]=get_money($lfjuid);  
  7.             foreach$memberlevel AS $key=>$value){  
  8.                 if($lfjdb[money]>=$value){  
  9.                     $SQL=",groupid=$key";  
  10.                 }  
  11.             }  
  12.         }else{  
  13.             $SQL="";  
  14.         }  
  15.         $db->query("UPDATE {$pre}memberdata SET lastvist='$timestamp',lastip='$onlineip',oltime=oltime+'$usr_oltime'$SQL WHERE uid='$lfjuid'");  
//因为这个地方是拼接字符串的形式,所以可以使用\来转义',然后利用$usr_oltime来注射:)

解决方案:
厂商补丁:
PHP168
----------
目前厂商并没有发布任何升级补丁以修复这个安全问题
http://www.php168.com


信息来源:
<*来源 Ryat http://bbs.wolvez.org/topic/43/ *>