phpWebLog 管理员认证绕过漏洞


添加时间:
2005-10-01

系统编号:
WAVDB-00699

影响版本:
phpWebLog 0.4.2

程序介绍:

phpWebLog 是一个开放源码的web新闻管理系统。

漏洞分析:

在3.0.26以前的版本中没有正确的使用perl的open()函数调用,将允许用户输入包含shell元字符的数据,并可以以CGI脚本运行权限执行任意命令。(通常是'nobody')
MailMan使用模板(template)文件定义输出界面,以便用户更方便地根据自己的需要使用。老版本的MailMan使用的模板文件路径是固定的。3.0以上的版本允许通过‘ALTERNATE_TEMPLATES’变量来指定模板文件的路径。由于使用open()函数打开模板文件时没有使用"<"操作符,也没有对用户输入的数据进行安全检查,而是使用如下的格式:
open("$ALTERNATE_TEMPLATES_.html");
因此,用户可以在$ALTERNATE_TEMPLATES中输入特殊的shell元字符来执行任意命令,例如:
/mmstdod.cgi?ALTERNATE_TEMPLATES=|%20echo%20"Content-Type:%20text%2Fhtml"%3Becho%20""%20%3B%20id%00


解决方案:
建议您在没有升级版本之前,按照漏洞发现者的方法来临时解决问题:
 在 common.inc.php中下列语句:
 for ($i=0;$i<$nrows;$i++) {
         $A      = mysql_fetch_array($result);
         $CONF[$A["Name"]] = $A["Value"];
 }
 之前添加一条初始化代码:
 $CONF = array();
 并且一定要改变缺省的"SiteKey"的值。
 Always remember to change your default "SiteKey".

 厂商补丁:
 暂无

信息来源:
<*来源:Joao Gouveia (cercthar@teleweb.pt) *>