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

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PyJFuzz — PyJFuzz - Python JSON 퍼저 | Kitploit
도구/GitHubGitHub/mseclab/pyjfuzz
Dynamic Analysis (Sandboxing)Vulnerability AnalysisAPI Security TestingWeb SecurityFuzzing
GitHubmseclab/pyjfuzz

PyJFuzz

PyJFuzz - Python JSON 퍼저

저장소 보기
37767153년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

LOGO

PyJFuzz는 모바일 엔드포인트 REST API, JSON 구현체, 브라우저, CLI 실행 파일 등 JSON 입력을 퍼징하는 데 사용되는 작고 확장 가능하며 바로 사용할 수 있는 프레임워크입니다.

버전 1.1.0
홈페이지 http://www.mseclab.com/
Github https://github.com/mseclab/PyJFuzz
저자 Daniele Linguaglossa (@dzonerzy)
라이선스 MIT - (LICENSE 파일 참조)

설치

의존성

PyJFuzz가 작동하려면 몇 가지 의존성이 필요합니다: bottle, netifaces, GitPython, gramfuzz가 있으며, 자동 setup.py 설치를 통해 설치할 수 있습니다.

설치

다음 명령으로 PyJFuzz를 설치할 수 있습니다.

git clone https://github.com/mseclab/PyJFuzz.git && cd PyJFuzz && sudo python setup.py install

문서 및 예제

CLI 도구

설치가 완료되면 PyJFuzz는 Python 라이브러리와 pjf라는 명령줄 유틸리티를 생성합니다 (아래 스크린샷).

MENU

PJF

라이브러리

PyJFuzz는 라이브러리로도 작동할 수 있으므로 다음과 같이 프로젝트에 임포트할 수 있습니다.

from pyjfuzz.lib import *

클래스

사용 가능한 객체/클래스는 다음과 같습니다:

  • PJFServer - 내장 HTTP 및 HTTPS 서버를 시작/중지하는 데 사용됩니다.
  • PJFProcessMonitor - 프로세스 충돌을 모니터링하는 데 사용되며, 프로세스가 충돌할 때마다 자동으로 다시 시작합니다.
  • PJFTestcaseServer - 테스트케이스 서버는 PJFProcessMonitor와 함께 사용됩니다. 프로세스가 충돌할 때마다 테스트케이스 서버는 충돌을 유발한 JSON을 등록하고 저장합니다.
  • PJFFactory - JSON 객체를 실제로 퍼징하는 데 사용되는 주요 객체입니다.
  • PJFConfiguration - 사용 가능한 각 객체에 대한 구성 파일입니다.
  • PJFExternalFuzzer - PJFactory에서 사용되는 보조 클래스로, radamsa와 같은 다른 명령줄 퍼저에 대한 인터페이스를 제공합니다.
  • PJFMutation - PJFFactory에서 사용되며 퍼징 세션 중 사용되는 모든 변형(mutation)을 제공합니다.
  • PJFExecutor - 외부 프로세스와 상호작용할 수 있는 인터페이스를 제공합니다.

CLASSES

예제

아래는 PyJFuzz 기반 프로그램을 구현하는 방법에 대한 몇 가지 간단한 예제입니다.

simple_fuzzer.py

from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6))
fuzzer = PJFFactory(config)
while True:
    print fuzzer.fuzzed

custom_techniques.py

from argparse import Namespace
from pyjfuzz.lib import *

# Techniques may be defined by group , or by technique number
# groups are CHTPRSX , to understand what they are , please run pyjfuzz with -h switch or look at the command line screenshot
# This below will initalizate a config object which use only the P group attacks where P stay for Path Traversal
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, techniques="P"))
# once a config object is defined you can access to config.techniques to view the selected techniques for your group
print("Techniques IDs: {0}".format(str(config.techniques)))
# you can eventually modify them!
config.techniques = [2]
# This way only attack number 2 (LFI Attack) will be performed!
fuzzer = PJFFactory(config)
while True:
    print fuzzer.fuzzed

simple_server.py

from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, debug=True, indent=True))
PJFServer(config).run()

때로는 HTTPS 또는 HTTP 서버 포트와 같은 사용자 정의가 불가능한 표준 설정을 수정해야 할 수도 있습니다. 이는 다음과 같은 방식으로 수행할 수 있습니다.

from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, indent=True))
print config.ports["servers"]["HTTP_PORT"]   # 8080
print config.ports["servers"]["HTTPS_PORT"]  # 8443
print config.ports["servers"]["TCASE_PORT"]  # 8888
config.ports["servers"]["HTTPS_PORT"] = 443  # Change HTTPS port to 443

기억하세요: 기본 포트를 변경할 때는 필요한 권한으로 인한 예외를 항상 처리해야 합니다!

다음은 PJFConfiguration 객체의 사용 가능한 모든 설정/사용자 정의 목록입니다:

구성 테이블

이름 유형 설명
json dict 퍼징할 JSON 객체
json_file str JSON 파일의 경로
parameters list<str> 퍼징할 매개변수 목록 (JSON 객체에서 가져옴)
techniques str<int> XSS, LFI 등과 같은 퍼징된 JSON을 생성하는 데 사용되는 활성화된 공격 문자열입니다. 예: "CHPTRSX" (**기법 테이블** 참조)
level int 0-6 범위의 퍼징 레벨
utf8 bool true이면 유니코드 인코딩에서 순수 바이트 표현으로 전환합니다
indent bool 결과 객체를 들여쓸지 여부를 설정합니다
url_encode bool 결과 객체를 URL 인코딩할지 여부를 설정합니다
strong_fuzz bool 강력한 퍼징을 사용할지 여부를 설정합니다 (강력한 퍼징은 JSON 구조를 유지하지 않으며 파서 퍼징에 유용합니다)
debug bool 디버그 출력을 활성화할지 여부를 설정합니다
exclude bool parameters 옵션으로 선택된 매개변수를 퍼징에서 제외합니다
notify bool 충돌 발생 시 프로세스 모니터에 알릴지 여부를 설정하며 PJFServer에서만 사용됩니다
html str PJFServer 내에서 제공할 HTML 디렉터리의 경로
ext_fuzz bool "command"의 바이너리를 외부 퍼저로 사용할지 여부를 설정합니다
cmd_fuzz bool "command"의 바이너리를 퍼징 대상으로 사용할지 여부를 설정합니다
content_type str PJFServer 결과의 콘텐츠 유형을 설정합니다 (기본값 application/json)
command list<str> 실행할 명령입니다. 각 매개변수는 리스트 요소이며, Python의 shlex.split을 사용할 수 있습니다

기법 테이블

인덱스 설명
0 XSS 인젝션 (Polyglot)
1 SQL 인젝션 (Polyglot)
2 LFI 공격
3 SQL 인젝션 polyglot (2)
4 XSS 인젝션 (Polyglot) (2)
5 RCE 인젝션 (Polyglot)
6 LFI 공격 (2)
7 Data URI 공격
8 LFI 및 HREF 공격
9 헤더 인젝션
10 RCE 인젝션 (Polyglot) (2)
11 일반 템플릿 인젝션
12 Flask 템플릿 인젝션
13 무작위 문자 공격

스크린샷

아래는 PyJFuzz에서 기대할 수 있는 내용을 보여주는 몇 가지 스크린샷입니다.

CLI

CLI2

CLI3

내장 도구

PyJFuzz에는 PyJFuzz Web Fuzzer라는 내장 도구가 포함되어 있습니다. 이 도구는 HTTP 및 HTTPS 서버를 통해 자동 퍼징 콘솔을 제공하며, 프로세스 상태를 제어할 수 없는 경우에도 거의 모든 웹 브라우저를 쉽게 퍼징하는 데 사용할 수 있습니다!

이 도구를 실행하는 데 사용되는 두 가지 스위치가 있습니다 (--browser-auto 및 --fuzz-web). 첫 번째는 충돌 발생 시 브라우저를 자동으로 다시 시작하고, 두 번째는 브라우저가 더 이상 요청을 보내지 않을 때를 감지하려고 시도합니다. 둘 다 항상 테스트케이스를 저장합니다. 아래는 몇 가지 스크린샷입니다.

도구 다운로드