Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
WuppieFuzz — LibAFL 기반으로 개발된 커버리지 기반 REST API 퍼저 | Kitploit
도구/GitHubGitHub/tno-s3/wuppiefuzz
Vulnerability AnalysisAPI Security TestingWeb SecurityFuzzingPenetration TestingAPI Security
GitHubtno-s3/wuppiefuzz

WuppieFuzz

LibAFL 기반으로 개발된 커버리지 기반 REST API 퍼저

저장소 보기
2178313일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

WuppieFuzz v1.8.0

Logo of WuppieFuzz.

TNO는 LibAFL을 기반으로 개발된 커버리지 기반 REST API 퍼저인 WuppieFuzz를 개발했습니다. 이는 폭넓은 최종 사용자를 대상으로 하며, 사용 편의성, 발견된 결함의 설명 가능성, 모듈성에 중점을 두고 있습니다. WuppieFuzz는 세 가지 테스트 방식(블랙 박스, 그레이 박스, 화이트 박스)을 모두 지원합니다.

[!NOTE]
빠르게 따라 하며 배우고 싶다면 튜토리얼을 참고하세요!

미디어 보도

WuppieFuzz는 다음 매체에 소개되었습니다:

  • The ONE Conference e-magazine 2024
  • Test your APIs easily with TNO's new REST API fuzzer
  • OpenAPI.tools listing: WuppieFuzz
  • Automated REST API Vulnerability Detection with WuppieFuzz (Nordic APIs on YouTube)
  • Thoughtworks Technology Radar: WuppieFuzz

학술 발표

학술 연구에서 WuppieFuzz를 인용하려면 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

라이선스

WuppieFuzz는 Apache-2.0에 따라 라이선스가 부여됩니다. LICENSE를 참고하세요.
서드파티 라이선스 고지는 THIRD_PARTY_NOTICES에 나열되어 있습니다.

빠른 설치

주요 운영체제(MacOS, Windows, Linux)용 WuppieFuzz를 빠르게 설치하려면 releases를 참고하거나 brew install wuppiefuzz를 사용하세요.

Docker

docker build . -t wuppiefuzz:local로 도커 이미지를 빌드할 수 있습니다. 사용하려면 openapi 스펙이 포함된 폴더를 마운트해야 합니다. 로컬(도커가 아닌)에서 실행 중인 서비스를 퍼징할 때는 호스트 네트워킹을 지정해야 합니다:

docker run \
  --network host \
  -v ./fuzzing-folder:/fuzzing-folder \  # The folder will be populated with wuppiefuzz outputs
  -w /fuzzing-folder \
  wuppiefuzz:local fuzz --timeout 60 --report openapi.json

간단 사용법

How to use WuppieFuzz? - YouTube

개발을 위한 사전 요구사항

프로젝트를 빌드하려면 다음 종속성과 도구를 설치해야 합니다:

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

실행

WuppieFuzz in action.

WuppieFuzz를 실행하기 전에 (계측된) 대상 애플리케이션을 시작해야 합니다.

또한 WuppieFuzz가 요청을 생성하고 변이하는 방법을 알 수 있도록 OpenAPI 명세를 제공해야 합니다. 명령줄 인수에 대한 도움말은 다음을 사용하세요:

$ cargo run -- --help # shows help for required parameters and flags

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

예를 들어, JaCoCo 에이전트가 연결된 Java 대상에 대해 WuppieFuzz를 실행하려면 OpenAPI 파일(API 명세에 대상이 실행 중인 URL이 포함됨)을 지정합니다. 또한 커버리지 형식이 JaCoCo임을 지정하고 classes 디렉터리를 다음과 같이 제공합니다:

cargo run -- fuzz openapi.yaml --coverage-format jacoco --jacoco-class-dir ../Targets/app/target/classes/

구성 파일

명령줄 인수 대신 또는 이와 함께 구성 파일을 사용하려면 --config <CONFIG_FILE> 플래그를 사용할 수 있습니다. 명령줄 인수를 구성 파일과 함께 사용하는 경우 명령줄 인수가 우선합니다.

구성 파일은 yaml 파일이어야 하며 지정하려는 각 명령줄 인수에 대한 줄을 포함해야 합니다. 예를 들어:

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

이 경우 예시 실행 명령은 다음과 같습니다:

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

이 줄은 명령줄과 구성 파일의 인수를 결합합니다. --timeout 플래그가 양쪽 모두에 지정되어 있으므로 명령줄에 지정된 타임아웃(10초)이 우선합니다.

example_configs/ 디렉터리에는 Java 코드에 대한 JaCoCo 커버리지 보고서 생성과 Python 코드에 대한 LCOV 커버리지 보고서 생성에 사용할 두 개의 예시 구성 파일이 있습니다.

보고서

--report 플래그와 함께 WuppieFuzz를 실행하면 reports/ 내부에 타임스탬프를 이름으로 하는 하위 디렉터리가 생성됩니다. 지원되는 모든 커버리지 보고서가 이 하위 디렉터리에 작성됩니다. 두 가지 유형의 커버리지 보고서가 있습니다:

  1. 엔드포인트 커버리지: OpenAPI 명세만 필요하므로 항상 생성할 수 있습니다.
  2. 코드 커버리지: 현재 JaCoCo만 지원하지만 더 많은 지원을 목표로 하고 있습니다. 까다로운 부분은 커버리지에서 소스 파일로의 매핑과 이를 사용하는 견고한 보고서 생성이 필요하다는 점입니다.

그 위에 퍼징 캠페인과 관련된 모든 요청 정보로 데이터베이스가 채워집니다. 이 데이터베이스는 Grafana 대시보드를 통해 시각화하고 탐색할 수 있습니다.

이 저장소의 구조

  • assets: 로고, 이미지 등
  • coverage_agents: 다양한 대상에 적용할 커버리지 추적을 위한 코드 및 지침
  • example_configs: WuppieFuzz를 구성하기 위한 예시 구성 파일
  • src: WuppieFuzz의 소스 코드
  • tutorial: 특정 대상을 퍼징하는 방법과 퍼징 결과를 해석하는 방법에 대한 심층적이고 저수준의 튜토리얼
  • dashboard: 퍼징 결과와 성능을 분류하기 위한 도구

각 항목에 대한 자세한 내용은 해당 디렉터리의 README를 참고하세요.

개발 빌드

기본적으로 WuppieFuzz는 C 종속성(OpenSSL, SQLite, Z3)을 벤더링하여 일반 cargo build가 바로 작동하도록 합니다. 개발 중 더 빠른 컴파일을 위해 모든 벤더링된 종속성을 비활성화하고 시스템에 설치된 라이브러리에 대신 링크할 수 있습니다.

[!NOTE] z3 크레이트는 Z3 4.15+를 요구하며, 이는 대부분의 Linux 배포판 패키지 관리자가 제공하는 버전보다 최신입니다. 호환되는 버전을 얻으려면 Homebrew(brew install z3)를 통해 Z3를 설치하세요.

시스템 종속성

시스템에 다음 라이브러리를 설치하세요:

Debian/Ubuntu:

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

Linux에서 Homebrew는 비표준 경로에 설치됩니다. 컴파일러와 런타임 링커가 Z3를 찾을 수 있도록 라이브러리 디렉터리를 환경에 추가하세요:

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

[!TIP] 위 줄을 ~/.bashrc 또는 ~/.zshrc에 추가하면 영구적으로 적용됩니다.

Fedora (42+):

sudo dnf install openssl-devel sqlite-devel z3-devel

macOS (Homebrew):

brew install openssl sqlite z3

Cargo 별칭

저장소에는 --no-default-features로 빌드하여 모든 시스템 라이브러리에 링크하는 cargo 별칭이 .cargo/config.toml에 포함되어 있습니다:

cargo dev-build          # build without vendored dependencies
cargo dev-run -- <args>  # run without vendored dependencies
cargo dev-test           # test without vendored dependencies

문서 생성

cargo doc --no-deps로 소스 코드의 주석에서 문서를 생성합니다. 문서의 메인 페이지는 target/doc/wuppiefuzz/index.html이 됩니다.

도구 다운로드