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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Explotar un Buffer Overflow con "limitaciones" (0day en VDJ)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Explotar un Buffer Overflow con "limitaciones" (0day en VDJ)  (Leído 6,173 veces)
AlexAltea

Desconectado Desconectado

Mensajes: 31



Ver Perfil WWW
Explotar un Buffer Overflow con "limitaciones" (0day en VDJ)
« en: 26 Marzo 2013, 03:46 am »

Muy buenas! Acabo de encontrar en un programa un buffer overflow algo gracioso:

Se leen todos los bytes de un archivo y se guardan en un buffer en la dirección 0x088399C8. Hasta ahí todo bien. Luego se comprueban cuáles de todos esos bytes están en el rango 'A'-'Z' y si es así, se meten en un segundo buffer de caracteres en el stack. Si rellenamos el archivo con muchos bytes 'A'-'Z', este segundo buffer peta y acabamos con varios registros modificados, incluido el EIP.

El problema es cómo desviar la ejecución a la dirección que me interesa si solo soy capaz de meter bytes de la 'A' a la 'Z' en el EIP, es decir, solo puedo lograr cosas como 0x41414141, 0x41424344, 0x534E4F50, ... En el EAX o ECX creo que aún podría hacer un apaño para que cogiese un valor arbitrario.
¿Alguna idea de por donde seguir? ¿Es esto una limitación imposible de saltar al diseñar un exploit?

Tan solo bastaría lograr de alguna manera un salto a 0x088399C8 para lograr la queridísima "ejecución de código arbitrario", por desgracia 0x08, 0x83, 0x99 y 0xC8 no son "letras mayúsculas".
 :-\
« Última modificación: 30 Marzo 2013, 22:09 pm por AlexAltea » En línea

int_0x40


Desconectado Desconectado

Mensajes: 300


Ver Perfil
Re: Explotar un Buffer Overflow con "limitaciones"
« Respuesta #1 en: 27 Marzo 2013, 18:38 pm »

¿Notaste si puedes modificar la dirección de retorno de la función en cuestión? Vuelve a releer con atención este clásico sobre el tema--->

http://www.phrack.org/issues.html?issue=49&id=14&mode=txt

Saludos.
En línea

"The girl i love...she got long black wavy hair ”
AlexAltea

Desconectado Desconectado

Mensajes: 31



Ver Perfil WWW
Re: Explotar un Buffer Overflow con "limitaciones"
« Respuesta #2 en: 30 Marzo 2013, 22:06 pm »

Todo solucionado.
Aprovechando que EDI apuntaba a un buffer que contenía todos los bytes (y no solo las mayúsculas), me bastó con buscar una dirección de la memoria representable con letras mayúsculas que contuviese un CALL EDI.

Al final lo encontré en 0x44465346 ("FSFD"), que correspondía en este programa a "urlmon.dll". Luego me encontré con que el cabrón del programa metía un 0xC3 (RETN) delante de cada byte no imprimible en ASCII, así que tuve que hacer algunas cosa más, pero bueno fue fácil.

El resultado es éste (podeis considerarlo el PoC de un 0day si quereis):

« Última modificación: 30 Marzo 2013, 22:08 pm por AlexAltea » En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: Explotar un Buffer Overflow con "limitaciones" (0day en VDJ)
« Respuesta #3 en: 31 Marzo 2013, 21:16 pm »

felicidades, lo resolviste bien

una pregunta, dejame ver si lo entendi

lo que hiciste fue, buscar un buffer que aceptara ascii y en este caso fue mediante el lector de Tag que invocaba un Call para guardar el buffer en EDI,  sobreescribiste el buffer guardado en EDI para llegar al ret y brincar a la direccion de memoria que buscabas y como Call suma el siguiente registro, lograste sobreescribir el buffer de la direccion que buscabas junto la EIP,  logrando despues la ejecucion de la shell?

otra pregunta, podrias poner tu codigo, seria inetresante saber como lo hiciste, todavia me cuesta trabajo entender las direcciones de memoria, lo estoy aprendiendo con el uso de PEB y lo poco que llevo de ASM

saludos y nuevamente felicidades por tu exploit 0day
En línea

.                                 
AlexAltea

Desconectado Desconectado

Mensajes: 31



Ver Perfil WWW
Re: Explotar un Buffer Overflow con "limitaciones" (0day en VDJ)
« Respuesta #4 en: 31 Marzo 2013, 21:30 pm »

Hola! No he entendido muy bien eso XD..
Pero he escrito un post en mi blog sobre la vulnerabilidad y como explotarla:
http://functionmixer.blogspot.com.es/2013/03/vulnerabilidad-virtualdj-prohome-73.html

Me refiero es que hay dos buffers que toman el valor del título del MP3:
  • El primero almacena todos los caracteres ASCII imprimibles del título (si no lo son, mete un RETN delante "por si acaso"). Este primer buffer no es vulnerable
  • El segundo, de longitud 4100, almacena caracters ASCII de la A a la Z que contenga el título y es en este donde esta el problema.

...el resto lo explico en el artículo de antes y mi mensaje anterior.  ;)
Incluyo el código también así que puedes explotarlo y con algun depurador ver lo que sucede.
En línea

AlexAltea

Desconectado Desconectado

Mensajes: 31



Ver Perfil WWW
Re: Explotar un Buffer Overflow con "limitaciones" (0day en VDJ)
« Respuesta #5 en: 20 Abril 2013, 21:23 pm »

Aunque corrigieron la vulnerabilidad que dije, resulta que acabo de encontrar otra más en la última versión del programa (VirtualDJ Pro/Home v7.4). Vuelve a ser un buffer overflow por culpa de los tags ID3. Se produce cuando el programa intenta buscar automáticamente una caráctula en Google Imágenes para un archivo MP3 malintencionado. El buffer que contiene la request a Google ("http://images.google.com/images?q=[Tag_ID3_'Título]") puede resultar "pequeño" y dado que el programa no comprueba si el título que se va a meter después de "?q=" es demasiado grande, pues pasa lo que pasa.
 ;D

Si quereis más info podeis entrar aquí:
http://functionmixer.blogspot.de/2013/04/virtualdj-prohome-74-buffer-overflow.html

Y la demo la teneis aquí:



PD: He puesto el mensaje en este hilo porque en la demo vuelvo a enseñar como bypassear los filtros de caracteres que es al fin y al cabo de lo que iba el hilo al principio.

Saludos!!
« Última modificación: 20 Abril 2013, 21:54 pm por AlexAltea » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
Dark4ngel 7 14,265 Último mensaje 3 Noviembre 2011, 10:42 am
por Dark4ngel
Duda sobre explotar troyanos "ajenos"
Análisis y Diseño de Malware
boanerxe 5 4,525 Último mensaje 21 Octubre 2013, 23:15 pm
por boanerxe
Lavadoras Samsung podrían "explotar" por mal funcionamiento
Noticias
wolfbcn 0 1,299 Último mensaje 29 Septiembre 2016, 02:25 am
por wolfbcn
Intentando explotar buffer overflow
Bugs y Exploits
pepitopepote 2 5,359 Último mensaje 29 Noviembre 2017, 20:23 pm
por pepitopepote
Problema al intentar explotar buffer overflow
Bugs y Exploits
Vannox991 7 5,917 Último mensaje 7 Enero 2021, 00:39 am
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines