PHP 'create_function()'代码注入漏洞

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

BUGTRAQ ID: 31398 CNCAN ID:CNCAN-2008092610 PHP是一款流行的WEB编程语言。 PHP不正确过滤传递给'create_function()'的输入,远程攻击者可以利用漏洞以特权应用程序权限执行任意代码。 PHP使用create_function函数用于CREATE一个匿名函数: 1,使用create_function()建立一个匿名函数: <?php $newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);'); echo "New anonymous function: $newfunc\n"; echo $newfunc(2, M_E) . "\n"; // outputs // New anonymous function: lambda_1 // ln(2) + ln(2.718281828459) = 1.6931471805599 ?> 80sec发现这个函数可注入命令,可不需要建立一个lambda形式函数来直接执行PHP代码,这在不能调用函数但能建立函数的情况下非常有用,代码如下: <?php $sort_by=stripslashes($_GET[sort_by]); $databases=array(”test”); $sorter = ‘var_dump’; $sort_function = ‘ return ‘ . ($sort_order == ‘ASC’ ? 1 : -1) . ‘ * ‘ . $sorter . ‘($a["' . $sort_by . '"], $b["' . $sort_by . '"]); ‘; usort($databases, create_function(’$a, $b’, $sort_function)); ?> 如上可以建立函数,但是因为$databases只有一个值,函数将不被调用,因此注入的代码不能被执行,但是提供如下输入: test.php?sort_by="]);}phpinfo();/*...

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