Blog

El arte de las vulnerabilidades de día 0, Parte 2: Fuzzing manual

bienvenidos de nuevo mis maestros, profesores y compañeros de clase, en esta segunda parte de esta serie de 0 días aprenderemos lo básico del fuzzing, y compré un regalo para nullbyte (un vuln de 0 días que se lanzará hoy exclusivamente en null-byte) .

INTRODUCCIÓN

Como me encanta Wikipedia, según ellos, Fuzz testing o fuzzing es una técnica de prueba de software, a menudo automatizada o semiautomatizada, que implica proporcionar datos inválidos, inesperados o aleatorios a las entradas de un programa informático. Luego, el programa se monitorea para detectar excepciones como fallas, o fallos en las afirmaciones de código incorporado o para encontrar posibles fugas de memoria. Fuzzing se usa comúnmente para probar problemas de seguridad en software o sistemas informáticos. Es una forma de prueba aleatoria que se ha utilizado para probar hardware o software.

Los fuzzers funcionan mejor para problemas que pueden hacer que un programa se bloquee, como desbordamiento del búfer, secuencias de comandos entre sitios, ataques de denegación de servicio, errores de formato e inyección SQL. Estos esquemas suelen ser utilizados por piratas informáticos malintencionados con la intención de causar la mayor cantidad posible de estragos en el menor tiempo posible.

En mi opinión, Fuzzing es el primer paso para explotar vulnerabilidades desconocidas en el software. Cuanto más se familiarice con Fuzzing, más errores encontrará

FUZZING REMOTO Y LOCAL

Dependiendo de si el objetivo es local o remoto, usará diferentes herramientas para realizar fuzz. La mayoría de las veces, los errores de seguridad remota son muy importantes. Significa que para explotar la máquina de destino no necesitaremos la interacción del usuario, simplemente enviamos el exploit a la máquina remota y será atacado.

El fuzzing local trata con aplicaciones de fuzzing localmente o alojadas en el sistema de destino. Esto puede incluir, entre otros:

Difusión de línea de comandos: aplicaciones difusas a través de la línea de comando y / o variables ambientales
Fuzzing de formato de archivo: aplicaciones de fuzzing que leen archivos en un formato o formatos específicos
Kernel Fuzzing: funciones de kernel, módulos del kernel y
llamadas al sistema

La fuzzing remota se ocupa de la fuzzing de un objetivo de forma remota o en la red. Esto puede incluir, entre otros:

Difusión de protocolo de red: aplicaciones difusas o incluso un kernel que implementa un protocolo específico
Eliminación de bases de datos: eliminación de módulos de base de datos y / o políticas de saneamiento de entrada de base de datos
Difusión de aplicaciones web: vectores de entrada difusos de aplicaciones web alojadas en un servidor web

si un objetivo tiene entrada, probablemente se pueda confundir

EJEMPLO DE FUZZING LOCAL

Hay un montón de herramientas que puede utilizar para realizar fuzz localmente según el entorno del objetivo.
puedes usar el comando:
ahora, como ejemplo, usaremos un programa c simple que escribí que es vulnerable al desbordamiento del búfer aquí está el código:

#include
#include

int main (vacío)
{
char buff15;
int pass = 0;

printf (” n Ingrese la contraseña: n”);
obtiene (mejora);

si (strcmp (buff, “mrnakupenda”))
{
printf (” n Contraseña incorrecta n”);
}
demás
{
printf (” n Contraseña correcta n”);
pasar = 1;
}

si (pasa)
{
printf (” n bienvenido Sr.Nakup3nda tienes privilegios de root n “);
}

return 0;
}
guarde este código como buffer.c, compílelo y ejecútelo

EJECUTANDO NUESTRO EJEMPLO

para compilar use el siguiente comando:
cc buffer.c -o buffer
luego ejecútalo con el comando
./buffer

De la captura de pantalla anterior, intenté ingresar la contraseña correcta e incorrecta y funciona bien, pero cuando ejecuto una entrada de longitud mayor que la que puede contener el búfer (técnica de fuzzing) y en una longitud particular de entrada, el desbordamiento del búfer tuvo lugar que sobrescribió la memoria del entero ‘pase’. Entonces, a pesar de una contraseña incorrecta, el valor de ‘pasar’ se volvió distinto de cero y, por lo tanto, se otorgaron privilegios de root a un atacante, por lo que ahora que sabemos que nuestro programa es vulnerable, guárdelo y en el próximo tutorial lo probaremos con herramientas automatizadas. que nos mostrará la misma vulnerabilidad que encontramos al zumbar manualmente.

REGALO 0 DÍAS

hoy estaba buscando errores en la web y descubrí que algunos sitios web creados por una empresa sufren una vulnerabilidad de omisión de autenticación, soy demasiado perezoso para contactarlos, además de encontrar el idiota perfecto de Google para los otros sitios web, pero lo probé algunos de ellos y funciona perfectamente. Supongo que los sitios web que ejecutan el pie de página de 2009 se ven afectados, de nuevo no tuve tiempo de revisarlos todos, así que si quieres saber más al respecto, avísame. Te daré detalles sobre la vulnerabilidad para que puedas practicar haciéndolo saber a la empresa. sobre el error, luego dales tiempo para que lo arreglen y luego podremos exponer la vulnerabilidad, pero haz cualquier cosa por tu cuenta, no soy responsable de ningún daño que puedas hacer con esta información.

la vulnerabilidad puede explotarse de esta manera

http://www.website.com/admin/
nombre de usuario: ADMIN ‘OR 1 = 1 #
contraseña: cualquier cosa
Póngase en contacto conmigo para más información

Por cierto, hay algo en nullbyte, si intenta escribir caracteres especiales en su biografía, los caracteres no aparecerán, supongo que tiene que ser algo con la codificación en la base de datos, no profundicé en eso también, podría llevar a algunas vulnerabilidades ..

ok por ahora eso es todo nos vemos en el próximo tutorial
Sres__nakup3nda

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar