TikiWiki Tiki-Graph_Formula.PHP白名单检查代码注入漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

TikiWiki是一款基于PHP、ADOdb以及smarty开发的内容管理系统/门户系统/群件系统。 TikiWiki包含的tiki-graph_formula.php不正确过滤用户提交的参数,远程攻击者可以利用漏洞注入恶意PHP代码并以WEB权限执行。 TikiWiki的tiki-graph_formula.php脚本使用PHP的create_function()创建匿名函数来动态计算由用户通过'f' URL参数提供的数学函数。 为了保护针对任意PHP代码的执行,TikiWiki开发者组合黑名单和白名单。一方面他们对三个字符进行黑名单过滤,另一方面用户提供的输入中只允许部分数字字符串。 三个黑名单列表字符为: ` - 允许SHELL命令执行Allows execution of shell commands ' - 字符串分隔符 " - 字符串分隔符 允许的数字字符串白名单只允许在部分数学函数中使用如:sin, cos, tan, pow, ... 当ShAnKaR审核TikiWiki时白名单列表检查不正确实现,可导致执行PHP函数。这个漏洞已经在CVE-2007-5423公布并在TikiWiki 1.9.8.1 update中得到修补。 但是由于PHP支持变量函数和可变变量,修补的白名单列表没有保护任意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; //...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息