Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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 퍼저

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

WuppieFuzz v1.7.1

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 , 221-231. SciTePress.

Proceedings of the 12th International Conference on Information Systems Security and Privacy (ICISSP), Volume 2
https://doi.org/10.5220/0000217100004061

라이선스

WuppieFuzz는 Apache-2.0 라이선스 하에 배포됩니다. LICENSE를 참조하세요.
타사 라이선스 고지는 THIRD_PARTY_NOTICES에 나열되어 있습니다.

빠른 설치

주요 운영 체제(MacOS, Windows, Linux)용 WuppieFuzz의 빠른 설치는 releases를 참조하거나 brew install wuppiefuzz를 사용하세요.

간단한 사용 방법

How to use WuppieFuzz? - YouTube

개발을 위한 사전 요구 사항

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

  • 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

실행

WuppieFuzz in action.

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

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

root@kitploit:~
$ cargo run -- --help # 필수 매개변수 및 플래그에 대한 도움말 표시

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

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

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

구성 파일

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

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

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

이 경우 예제 실행 명령은 다음과 같을 수 있습니다:

root@kitploit:~
$ 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 크레이트는 대부분의 Linux 배포판 패키지 관리자가 제공하는 버전보다 새로운 Z3 4.15+가 필요합니다. 호환 버전을 얻으려면 Homebrew를 통해 Z3를 설치하세요(brew install z3).

시스템 종속성

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

Debian/Ubuntu:

root@kitploit:~
sudo apt install libssl-dev libsqlite3-dev
brew install z3  # apt의 libz3-dev는 너무 오래됨; Homebrew 사용

Linux에서 Homebrew는 비표준 경로에 설치됩니다. 컴파일러와 런타임 링커가 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] 위 줄을 ~/.bashrc 또는 ~/.zshrc에 추가하여 영구적으로 적용하세요.

Fedora (42+):

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

macOS (Homebrew):

root@kitploit:~
brew install openssl sqlite z3

Cargo 별칭

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

root@kitploit:~
cargo dev-build          # 벤더링된 종속성 없이 빌드
cargo dev-run -- <args>  # 벤더링된 종속성 없이 실행
cargo dev-test           # 벤더링된 종속성 없이 테스트

문서 생성

cargo doc --no-deps를 실행하여 소스 코드의 주석에서 문서를 생성합니다. 문서의 기본 페이지는 target/doc/wuppiefuzz/index.html입니다.

도구 다운로드