Personal information:

A Coruña, Galicia, Spain

sábado, 20 de noviembre de 2010

FuzzMe, please!

Saludos a tod@s!,

a través de Linkedin, he encontrado algo de información útil a la hora de desarrollar fuzzers en general, y aquí estamos para recomendárosla!

En los siguientes links, podréis leer una aproximación a los distintos tipos de fuzzers a programar,las cosas básicas a tener en cuenta cuando los desarrollas, etc...

[+] Fuzzing?: Buzz on Fuzzing

[+] Aumentar la cobertura de fuzzeo: Metrics and Coverage

[+] Fuzzing XML: XML

Espero que os sea útil, pillines!

-H4ppyH4ck1n9-

lunes, 1 de noviembre de 2010

Sybase Advantage Data Architect "*.SQL" Format Heap Oveflow

Saludos!,

como explican en la web de Sybase:

"Advantage Data Architect Utility: A complete data management system for Advantage developers.
Advantage Data Architect assists in designing, creating and maintaining the database layer of a developer's applications
."

ADA es una utilidad que entre todas esas cosas, actúa como cliente para realizar consultas a las bases de datos de los servidores de Sybase como, por ejemplo,Advantage Database Server.
Concretamente para automatizar y agilizar esta tarea, ADA permite ejecutar scripts de código SQL programados por nosotros mismos.

El problemita reside en que la aplicación reserva memoria insuficiente para almacenar el contenido del script después de convertirlo a UNICODE; esto conlleva a la sobreescritura de un puntero a funcion (algún tipo de SEH), y de otras tantas variables necesarias para el programa.
Al acceder a una de estas variables sobreescritas se produce el ACCESS VIOLATION, y acto seguido se dispara el manejador de excepciones que anteriormente nos hemos
apropiado (p0wnd!):



Como se puede apreciar y ya comenté antes, nuestros datos se convierten a UNICODE, por lo que tendremos que ingeniárnoslas para que EAX contenga algún puntero interesante que cumpla esa condición, además de construir una shellcode funcional (podeis ver cómo crearla en la revista Phrack, aquí y acá).

[+] Un posible PoC:



Nota: no es suficiente con abrir el fichero desde la aplicación; una vez hecho esto, se nos mostrará el contenido del script.Escribiendo algo en él, se disparará el error.

-H4ppyH4ck1n9-

sábado, 23 de octubre de 2010

HP Data Protector Media Operations 6.11 HTTP Server Remote Integer Overflow DoS

Hola de nuevo!,

hace un par de post (aquí) hablamos sobre una denegación de servicio en esta aplicación de HP.
De nuevo, otra denegación de servicio ha sido encontrada pero esta vez en el servidor HTTP que el módulo DBServer.exe implementa en el socket TCP/80.

Esta es disparada cuando el cliente envía al server una petición POST con un contenido suficientemente largo, como mínimo 0x8000 bytes.

Cuando el servidor se para a manejar la longitud de esta petición lo hará de forma incorrecta, manipulándola sin comprobaciones y como si se tratase de un signed int:



Esto conlleva a un comportamiento inesperado del flujo de ejecución, que por el camino inicia un puntero a 0x00 y es desreferenciado más adelante:



Bajo estas circunstancias este bug no puede ser explotado.

El PoC:



-H4ppyH4ck1n9-

sábado, 16 de octubre de 2010

Novell eDirectory DHost Console 8.8 SP3 Local SEH Overwrite

Buenas a tod@s!,

acabo de encontrarme con un stack overflow en la consola (DHOSTCON.exe) para el servicio DHOST.exe de Novell eDirectory, en el cúal suministrando en la entrada un string suficientemente largo (1074 bytes) podremos sobreescribir el SEH, y alcanzar la ejecución de código de forma local.

Esto se debe a la ausencia de comprobaciones que deberían aplicarse a los parámetros suministrados por el usuario; así, los argumentos son copiados a pelo a un búfer de tamaño fijo,y claro está que menor que nuestro string :) .

En el screenshot inferior se puede apreciar el SEH sobreescrito, la dirección que contiene el PPR al que salta, y nuestro shellcode (INT3 - 0xCC):



Aquí el PoC:



-H4ppyH4ck1n9-

miércoles, 6 de octubre de 2010

HP Data Protector Media Operations 6.11 “DBServer.exe” NULL Pointer dereference Remote Denial of Service

Buenas a tod@s!,

otro bug (pre-auth) en esta aplicación de HP, causado por un puntero inicializado a 0, que gracias a nosotros permanecerá en ese valor y será desreferenciado :).

Si estáis interesados, aquí podréis encontrar más información.

[+] PoC:



Sed buenos :)

-H4ppyH4ck1n9-

domingo, 3 de octubre de 2010

Bypassing SEHOP

Pues si, un nuevo método anda circulando por la red.
Se trata de un nuevo bypass de esta protección, que podréis encontrar bien explicadito
aquí.

Es interesante y está bien saberlo ;)

-H4ppyH4ck1n9-

viernes, 10 de septiembre de 2010

HP Data Protector Media Operations 6.11 NULL Pointer Dereference Local DoS

Os traigo un bug en este conjunto de aplicaciones de Hewlett-Packard, el cúal provoca una denegación de servicio a sus usuarios legítimos si estos intentan operar con un fichero especialmente creado para el tema.

El fallo reside en los módulos "DBTools.exe" y "DBServer.exe", únicamente explotable de forma local en los dos casos.

Una breve y rápida descripción de como manipular dicho fichero, sería decir que se trata de el formato ".4DC" (.4DC - 4th Dimension provide software
solutions to business problems),cuyo header está compuesto por 0x24 bytes que contiene el Signature, comienzo del Image Data,etc... y concretamente, el offset +8 es usado como un puntero a una zona del propio fichero en donde guarda un valor que representa el número maximo de secciones que tiene(no estoy seguro de que es exactamente :( ):



Manipulando los bytes contenidos en el offset al que apunta, ejecutándo los módulos y cargando nuestro archivo, podremos comenzar a depurar.

Traceando podremos llega la zona en la que se realiza el siguiente CALL; y vemos en el stack la variable [ESP+14] que es igual a 0x00000000:



En una situación normal, veríamos que el CALL anterior encuentra lo que anda buscando usando el WORD que contiene nuestro byte como índice en una estructura de datos (ignorando el posible integer overflow :) ):



Si tiene éxito, la variable [ESP+14] cambiará su valor; pero cambiando dicho byte a un valor de los siguientes [0x1-0xA], ambos inclusive, el CALL anterior no tendrá éxito, y [ESP+14] seguirá siendo NULL:



Más adelante este valor se carga en EAX y es desreferenciado , provocando un "crash" de la aplicación:



En el caso de "DBTools.exe" basta con ejecutarlo y abrir el fichero.
En "DBServer.exe", tendríamos que sustituirlo en su directorio de instalación, ya que lo carga automáticamente al iniciarse la aplicación.

Un apunte, "DBServer.exe" por defecto es autoiniciado con el SO como SYSTEM, así que en el caso de ejecutar algún tipo de código arbitrario podría producirse un Privilege Escalation.

Podréis encontrar un PoC aquí.


-H4ppyH4ck1n9-