Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
WuppieFuzz — Un fuzzer de API REST guiado por cobertura desarrollado sobre LibAFL | Kitploit
Herramientas/GitHubGitHub/tno-s3/wuppiefuzz
Análisis de VulnerabilidadesPruebas de Seguridad de APIsSeguridad WebFuzzingPruebas de PenetraciónSeguridad de APIs
GitHubtno-s3/wuppiefuzz

WuppieFuzz

Un fuzzer de API REST guiado por cobertura desarrollado sobre LibAFL

Ver Repositorio
2178hace 2 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

WuppieFuzz v1.6.0

Logo de WuppieFuzz.

TNO desarrolló WuppieFuzz, un fuzzer de API REST guiado por cobertura desarrollado sobre LibAFL, dirigido a un amplio público de usuarios finales, con un fuerte enfoque en la facilidad de uso, la explicabilidad de los fallos descubiertos y la modularidad. WuppieFuzz admite las tres modalidades de pruebas (caja negra, caja gris y caja blanca).

[!NOTE]
Para una guía rápida y práctica, sigue el tutorial.

Cobertura en medios

WuppieFuzz ha aparecido en:

  • The ONE Conference e-magazine 2024
  • Prueba tus APIs fácilmente con el nuevo fuzzer de API REST de TNO
  • Listado en OpenAPI.tools: WuppieFuzz
  • Detección automatizada de vulnerabilidades en API REST con WuppieFuzz (Nordic APIs en YouTube)
  • Radar tecnológico de Thoughtworks: WuppieFuzz

Publicación científica

Si quieres citar WuppieFuzz en trabajos académicos, utiliza la publicación preferida indicada en CITATION.cff:

Rooijakkers, T., Nijsten, A., Daniele, C., Weitenberg, E., Groenewegen, R., & Melissen, A. (2026). WuppieFuzz: Coverage-Guided, Stateful REST API Fuzzing. In Proceedings of the 12th International Conference on Information Systems Security and Privacy (ICISSP), Volume 2, 221-231. SciTePress. https://doi.org/10.5220/0000217100004061

Licencia

WuppieFuzz tiene licencia Apache-2.0; consulta LICENSE.
Los avisos de licencia de terceros se enumeran en THIRD_PARTY_NOTICES.

Instalación rápida

Para una instalación rápida de WuppieFuzz en los sistemas operativos más populares (MacOS, Windows, Linux), consulta releases o usa brew install wuppiefuzz

Breve guía práctica

¿Cómo usar WuppieFuzz? - YouTube

Requisitos previos para el desarrollo

Para compilar el proyecto necesitas instalar las siguientes dependencias y herramientas

  • build-essential sudo apt install build-essential
  • pkg-config sudo apt install pkg-config
  • Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Ejecución

WuppieFuzz en acción.

Antes de ejecutar WuppieFuzz, debes iniciar tu aplicación objetivo (instrumentada).

Además, debes proporcionar a WuppieFuzz una especificación OpenAPI para que sepa cómo generar y mutar sus solicitudes. Para obtener ayuda sobre los argumentos de la línea de comandos, usa lo siguiente:

root@kitploit:~
$ cargo run -- --help # shows help for required parameters and flags

Usage: wuppiefuzz [OPTIONS] [OPENAPI_SPEC.YAML]
...

Por ejemplo, para ejecutar WuppieFuzz contra un objetivo Java con el agente JaCoCo adjunto, especifica su archivo OpenAPI (que contiene la URL en la que se ejecuta el objetivo dentro de la especificación de la API). Además, indica que el formato de cobertura es JaCoCo y proporciona el directorio de clases de la siguiente manera:

root@kitploit:~
cargo run -- fuzz openapi.yaml --coverage-format jacoco --jacoco-class-dir ../Targets/app/target/classes/

Archivo de configuración

Si quieres usar un archivo de configuración en lugar de los argumentos de línea de comandos, o en combinación con ellos, puedes usar la opción --config <CONFIG_FILE>. Si usas argumentos de línea de comandos junto con un archivo de configuración, los argumentos de línea de comandos tienen prioridad.

El archivo de configuración debe ser un archivo YAML y contener una línea por cada argumento de línea de comandos que quieras especificar, por ejemplo:

root@kitploit:~
coverage_format: jacoco
output_format: human-readable
source_dir: "/swagger-petstore/src/main/java"
jacoco_class_dir: "/swagger-petstore/target"
timeout: 20

Un ejemplo de comando de ejecución en este caso podría ser:

root@kitploit:~
$ cargo run -- fuzz --config=config.yaml --report --coverage-host=localhost:6300 --timeout=10 ./openapi.yaml

Esta línea combinaría los argumentos de la línea de comandos y los del archivo de configuración. Dado que la opción --timeout está especificada en ambos, el tiempo de espera indicado en la línea de comandos (10 segundos) tendrá prioridad.

En el directorio example_configs/ encontrarás dos archivos de configuración de ejemplo para generar informes de cobertura con JaCoCo para código Java y para generar informes de cobertura con LCOV para código Python.

Informes

Cuando ejecutas WuppieFuzz con la opción --report, se crea un subdirectorio dentro de reports/ cuyo nombre es una marca de tiempo. Todos los informes de cobertura compatibles se escriben en este subdirectorio. Hay dos tipos de informes de cobertura:

  1. cobertura de endpoints: esta siempre se puede generar, ya que solo requiere la especificación OpenAPI.
  2. cobertura de código: actualmente solo compatible con JaCoCo, pero nuestro objetivo es admitir más. La parte complicada es que requiere un mapeo de la cobertura a los archivos fuente y una generación robusta de informes que lo utilice.

Además, se rellena una base de datos con toda la información de solicitudes relacionada con tu campaña de fuzzing. Esta base de datos se puede visualizar y explorar mediante el panel de Grafana.

Estructura de este repositorio

  • assets: logotipos, imágenes, etc.
  • coverage_agents: código e instrucciones para el seguimiento de cobertura que se pueden adjuntar a varios objetivos.
  • example_configs: archivos de configuración de ejemplo para configurar WuppieFuzz.
  • src: código fuente de WuppieFuzz.
  • tutorial: un tutorial detallado y de bajo nivel sobre cómo fuzzear un objetivo específico y cómo interpretar los resultados del fuzzing.
  • dashboard: herramientas para clasificar los resultados del fuzzing y el rendimiento.

Para obtener más información sobre cada uno de ellos, consulta los README en esos directorios.

Compilación de desarrollo

De forma predeterminada, WuppieFuzz incluye sus dependencias C (OpenSSL, SQLite, Z3) para que un cargo build normal funcione directamente. Para una compilación más rápida durante el desarrollo, puedes deshabilitar todas las dependencias incluidas y enlazar contra las bibliotecas instaladas en el sistema.

[!NOTE] El crate z3 requiere Z3 4.15+, que es más reciente que la versión distribuida por la mayoría de los gestores de paquetes de las distribuciones Linux. Instala Z3 mediante Homebrew (brew install z3) para obtener una versión compatible.

Dependencias del sistema

Instala las siguientes bibliotecas en tu sistema:

Debian/Ubuntu:

root@kitploit:~
sudo apt install libssl-dev libsqlite3-dev
brew install z3  # apt's libz3-dev is too old; use Homebrew instead

En Linux, Homebrew se instala en una ruta no estándar. Añade su directorio de bibliotecas a tu entorno para que el compilador y el enlazador en tiempo de ejecución puedan encontrar Z3:

root@kitploit:~
eval "$(brew shellenv)"
export LIBRARY_PATH="$(brew --prefix z3)/lib:$LIBRARY_PATH"
export LD_LIBRARY_PATH="$(brew --prefix z3)/lib:$LD_LIBRARY_PATH"

[!TIP] Añade las líneas anteriores a tu ~/.bashrc o ~/.zshrc para que sean permanentes.

Fedora (42+):

root@kitploit:~
sudo dnf install openssl-devel sqlite-devel z3-devel

macOS (Homebrew):

root@kitploit:~
brew install openssl sqlite z3

Alias de Cargo

El repositorio incluye alias de cargo en .cargo/config.toml que compilan con --no-default-features, enlazando contra todas las bibliotecas del sistema:

root@kitploit:~
cargo dev-build          # build without vendored dependencies
cargo dev-run -- <args>  # run without vendored dependencies
cargo dev-test           # test without vendored dependencies

Generación de documentación

Ejecuta cargo doc --no-deps para generar documentación a partir de los comentarios del código fuente. La página principal de la documentación será target/doc/wuppiefuzz/index.html.

Descargar herramienta