PITS /
01271: PHP Code Injection Vulnerability
Summary: PHP Code Injection Vulnerability
Created: 2011-11-11 05:23
Status: Closed, fixed for 2.2.35
Category: Bug
From: Egidio Romano?
Assigned:
Priority: 5
Version: from 2.0.0 to 2.2.34
OS: All
Description:
Hi,
I found a critical security vulnerability that could allow malicious users to execute arbitrary PHP code.
The vulnerable code is in PageListSort() function defined into /scripts/pagelist.php:
452. $code = ''; 453. foreach($opt['=order'] as $o => $r) { 454. if (@$PageListSortCmp[$o]) 455. $code .= "\$c = {$PageListSortCmp[$o]}; "; 456. else 457. $code .= "\$c = @strcasecmp(\$PCache[\$x]['$o'],\$PCache[\$y]['$o']); "; 458. $code .= "if (\$c) return $r\$c;\n"; 459. } 460. StopWatch('PageListSort sort'); 461. if ($code) 462. uasort($list, 463. create_function('$x,$y', "global \$PCache; $code return 0;")); 464. StopWatch('PageListSort end');
Input passed through 'order' parameter of 'pagelist' directive isn't properly sanitized before being used in a
call to create_function() at line 463. So an attacker could be able to create a page with a directive such this:
( : pagelist order=']);phpinfo();die;# : )
Successful exploitation of this vulnerability might require authentication if the wiki isn't public writable.
Regards,
EgiX
Thanks for this report, this bug was fixed in Subversion and a new version will be released today. --Petko November 11, 2011, at 07:40 AM