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_
因此,用户可以在$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) *>