Bugtraq mailing list archives

PmWiki <= 2.2.34 (pagelist) Remote PHP Code Injection Vulnerability


From: n0b0d13s () gmail com
Date: Wed, 23 Nov 2011 15:06:51 GMT

-------------------------------------------------------------------
PmWiki <= 2.2.34 (pagelist) Remote PHP Code Injection Vulnerability
-------------------------------------------------------------------

author...............: Egidio Romano aka EgiX
mail.................: n0b0d13s[at]gmail[dot]com
software link........: http://www.pmwiki.org/
affected versions....: from 2.0.0 to 2.2.34

[-] vulnerable code 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. This can be exploited to inject and execute arbitrary PHP code.
Successful exploitation of this vulnerability might require authentication if the wiki isn't public writable.

[-] Disclosure timeline:

[09/11/2011] - Vulnerability discovered
[11/11/2011] - Issue reported to http://www.pmwiki.org/wiki/PITS/01271
[11/11/2011] - Version 2.2.35 released: http://www.pmwiki.org/wiki/PmWiki/ChangeLog#v2235
[12/11/2011] - CVE number requested
[15/11/2011] - Assigned CVE-2011-4453
[23/11/2011] - Public disclosure

[-] Proof of concept:

http://www.exploit-db.com/exploits/18149


Current thread: