Fuzzing web: Una Inmersión Técnica

El arte de la prueba de fuzzing es una práctica esencial en la caja de herramientas de cualquier profesional de la ciberseguridad. Aunque la base de esta técnica, suministrar entradas aleatorias o «fuzz» a un sistema para identificar errores, es simple, las aplicaciones avanzadas de fuzzing pueden ser complejas y matizadas. En este artículo, exploraremos las técnicas avanzadas de fuzzing aplicadas al código JavaScript y a las URLs, utilizando las herramientas jsfuzz y wfuzz, respectivamente.

Fuzzing en JavaScript con jsfuzz

Paso 1: Configuración de jsfuzz

La instalación de jsfuzz se realiza a través de npm, utilizando el comando npm install -g jsfuzz. Asegúrate de tener Node.js instalado en tu sistema antes de proceder.

Paso 2: Desarrollo de un harness avanzado

La implementación de un harness para jsfuzz debe ser más que una simple función; es necesario considerar diferentes estrategias para ejercer presión sobre las diversas partes del código objetivo. Por ejemplo, podrías crear un harness que explore las diferentes formas de interactuar con un objeto de tu código:

javascriptCopy code// harness.js

const MyObject = require('./MyObject');

module.exports = {
    fuzz: function(data) {
        let obj = new MyObject();
        data = new Uint8Array(data);
        let methodIndex = data[0] % 3;
        let arg = data[1];

        switch(methodIndex) {
            case 0:
                obj.method1(arg);
                break;
            case 1:
                obj.method2(arg);
                break;
            case 2:
                obj.method3(arg);
                break;
        }
    }
};

En este ejemplo, el harness intenta llamar a tres métodos diferentes en un objeto con argumentos aleatorios. La variedad y la aleatoriedad son claves en el fuzzing eficaz.

Paso 3: Ejecución y análisis

Ejecuta jsfuzz en la línea de comandos, proporcionando la ubicación del código de prueba y los datos de prueba iniciales. Analiza los resultados con atención, no sólo buscando errores sino también observando comportamientos inesperados.

Fuzzing en URLs con wfuzz

Paso 1: Preparación de wfuzz

Puedes instalar wfuzz utilizando pip, el gestor de paquetes de Python. Usa el comando pip install wfuzz.

Paso 2: Técnicas avanzadas de fuzzing

A continuación, te mostramos cómo utilizar wfuzz de manera más efectiva en el fuzzing de URLs. Puedes aplicar múltiples payloads y utilizar filtros y scripts personalizados para crear pruebas de fuzzing más eficientes. Aquí te mostramos un ejemplo avanzado de cómo usar wfuzz:

cssCopy codewfuzz -c -z file,wordlist1.txt -z file,wordlist2.txt --script=html --hc 404 http://example.com/FUZZ/FUZ2Z

En este ejemplo, utilizamos dos listas de palabras para aplicar más variaciones en las pruebas. --script=html le dice a wfuzz que utilice un script personalizado (en este caso, un script que analiza HTML) para analizar las respuestas.

Consideraciones éticas y legales

A pesar de su utilidad, recuerda que el fuzzing no es una panacea. No detectará todas las vulnerabilidades y puede dar lugar a falsos positivos. Por lo tanto, deberías combinar el fuzzing con otras técnicas de prueba de seguridad.

Además, es crucial obtener el consentimiento antes de realizar pruebas de seguridad en sistemas ajenos. Participar en programas de recompensas por errores, o «bug bounty», puede ser una excelente manera de aplicar tus habilidades de fuzzing de forma ética y beneficiosa.

Fuzzing como Etapa en el Proceso de Integración y Entrega Continua (CI/CD)

Incorporar el fuzzing en el pipeline de Integración y Entrega Continua (CI/CD) puede fortalecer enormemente el proceso de desarrollo de software. Al hacerlo, se pueden detectar automáticamente las vulnerabilidades y errores de seguridad antes de que el código llegue a producción.

Considera el fuzzing como una etapa de pruebas automatizadas en tu pipeline de CI/CD. Después de las pruebas unitarias y de integración, pero antes de la entrega o despliegue, puedes ejecutar tus harness de fuzzing. Esto podría ser tan simple como un script de shell que ejecuta jsfuzz o wfuzz, o podría implicar el uso de una herramienta de CI/CD que integra las pruebas de fuzzing, como Jenkins con su plugin fuzzing.

Además, el fuzzing continuo también proporciona una retroalimentación útil para el proceso de desarrollo, permitiendo que los desarrolladores vean rápidamente si un cambio reciente ha introducido nuevas vulnerabilidades.

Al final, incorporar el fuzzing en tu pipeline de CI/CD permite un enfoque más proactivo hacia la seguridad, facilitando la detección temprana de vulnerabilidades y ayudando a mantener la integridad de tu código a medida que evoluciona y crece.

Read more

Navegando en el Mundo de las Métricas : KPIs, OKR, Hitos y Más Allá

Written by: on 07/06/2023 @ 08:00

En el ámbito de la gestión de proyectos de desarrollo de software, los términos KPI (Indicadores Clave de Desempeño) y fechas de entrega se mencionan frecuentemente, a veces hasta el punto de la confusión. Ambos conceptos son fundamentales, pero sirven a propósitos diferentes y deben utilizarse en conjunto para el éxito del proyecto. Además de […]

Catogories: Otros
Read more

ATCNIA: Revolucionando la Validación de Contenido de las IA

Written by: on 31/05/2023 @ 08:00

En la era digital actual, la autenticidad y la procedencia de los contenidos son cruciales. En un mundo donde las noticias falsas y la desinformación se propagan rápidamente, necesitamos una solución confiable para garantizar la autenticidad del contenido. Ahí es donde entra el proyecto de Autenticación y Trazabilidad de Contenido No Generado por IA (ATCNIA). […]

Catogories: Otros
Read more

Análisis de contenedores en el proceso de CI/CD

Written by: on 12/04/2023 @ 21:16

El uso de contenedores en el desarrollo de aplicaciones ha experimentado un rápido crecimiento en los últimos años, gracias a la escalabilidad, portabilidad y eficiencia que ofrecen. Sin embargo, a medida que aumenta la adopción de contenedores, también lo hace la necesidad de abordar posibles problemas de seguridad y garantizar que las aplicaciones sean seguras […]

Catogories: Otros
Read more

Técnicas de fuzzing para mejorar la seguridad en aplicaciones web

Written by: on 05/04/2023 @ 08:00

El fuzzing, también conocido como fuzz testing, es una técnica de pruebas de seguridad que implica el envío de entradas aleatorias o malformadas a una aplicación para identificar posibles vulnerabilidades y fallos en la misma. En aplicaciones web, el fuzzing es especialmente útil para descubrir problemas de seguridad relacionados con la validación de entradas y […]

Catogories: Otros
Read more

Más allá de los gráficos de Gantt, alternativas modernas para metodologías Agile

Written by: on 30/03/2023 @ 08:00

Durante décadas, los gráficos de Gantt han sido una herramienta de gestión de proyectos ampliamente utilizada en diversos sectores. Sin embargo, en el mundo actual de desarrollo ágil y rápido, estos gráficos pueden resultar obsoletos y poco eficientes. En este artículo, analizaremos por qué los gráficos de Gantt están perdiendo terreno en el ámbito de […]

Catogories: Otros
Read more

Profundizando en el análisis dinámico de aplicaciones de seguridad (DAST): técnicas avanzadas y enfoques personalizados

Written by: on 25/03/2023 @ 10:13

El análisis dinámico de aplicaciones de seguridad (DAST) es una metodología crucial en el ámbito de la seguridad de aplicaciones. DAST identifica vulnerabilidades en tiempo de ejecución mediante pruebas de intrusión en aplicaciones web y móviles. En este artículo, nos adentraremos en técnicas avanzadas y enfoques personalizados en el contexto de DAST, incluyendo el análisis […]

Catogories: Otros
Read more

Inteligencia artificial en Telegram

Written by: on 26/12/2021 @ 12:53

Hemos oído mucho acerca de GPT-3, OpenAI y sus modelos entrenados para implementar tu propia AI de una forma rápida y pre-entrenada. Los resultados de sus demos son fascinantes, pero …. ¿son realmente así? ¿o están «preparados»? Pues planteando esa misma duda, he decidido hacer una implementacion para integrar tu usuario de Telegram con dicha […]

Catogories: AI, Python, Telegram
Read more

CryptoTrading para novatos

Written by: on 22/07/2016 @ 17:15

Tal y como os prometí en la charla de esta semana aquí os dejo la presentación para que podáis repasar lo aprendido en la sesión para iniciarse al trading. Espero que os resulte una ayuda, y podáis ir creciendo en esta linea de FinTech tan interesante.     Si estáis interesado en el script de gestión para […]

Catogories: bitcoin, bolsa, crytotrading, fintech, Otros, trading
Read more

Comenzando con Radare2

Written by: on 04/10/2014 @ 19:55

Esta semana hemos podido disfrutar de la cuarta edición del Congreso Navaja Negra, en el cual Pancake nos ha iniciado en el uso de Radare2, un Framework de reversing excepcional, con una potencia, rapidez y funcionalidades que no tiene nada que envidiar a otros comerciales existentes en el mercado. Hay que reconocer la complejidad del mismo, […]

Catogories: radare2, reversing
Read more