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

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

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

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

LOGO

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

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

설치

의존성

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

설치

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

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

문서 및 예제

CLI 도구

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

MENU

PJF

라이브러리

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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
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 서버 포트와 같은 사용자 정의가 불가능한 표준 설정을 수정해야 할 수도 있습니다. 이는 다음과 같은 방식으로 수행할 수 있습니다.

root@kitploit:~
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 객체의 사용 가능한 모든 설정/사용자 정의 목록입니다:

구성 테이블

기법 테이블

스크린샷

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

CLI

CLI2

CLI3

내장 도구

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

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

FUZZ

FUZZ2

BROWSERAUTO

BROWSERAUTO2 이슈

문제가 있으면 GitHub를 통해 여기로 보내주세요. 가능한 한 빨리 수정하겠습니다.

결과

다음은 PyJFuzz가 발견한 알려진 문제 목록이며, 이 목록은 매주 업데이트됩니다

  • cJSON의 이중 해제 (https://github.com/DaveGamble/cJSON/issues/105)
  • picojson의 처리되지 않은 예외 (https://github.com/kazuho/picojson/issues/94)
  • simpleJSON의 메모리 누수 (https://github.com/nbsdx/SimpleJSON/issues/8)
  • frozen의 스택 기반 버퍼 오버플로 (https://github.com/cesanta/frozen/issues/14)
  • 사용자 지정 EIP로 인한 메모리 손상 (https://github.com/cesanta/frozen/issues/15)

끝

PyJFuzz를 사용해 주셔서 감사합니다!

mseclab에서 즐거운 퍼징하세요

도구 다운로드
이름유형설명
jsondict퍼징할 JSON 객체
json_filestrJSON 파일의 경로
parameterslist<str>퍼징할 매개변수 목록 (JSON 객체에서 가져옴)
techniquesstr<int>XSS, LFI 등과 같은 퍼징된 JSON을 생성하는 데 사용되는 활성화된 공격 문자열입니다. 예: "CHPTRSX" (**기법 테이블** 참조)
levelint0-6 범위의 퍼징 레벨
utf8booltrue이면 유니코드 인코딩에서 순수 바이트 표현으로 전환합니다
indentbool결과 객체를 들여쓸지 여부를 설정합니다
url_encodebool결과 객체를 URL 인코딩할지 여부를 설정합니다
strong_fuzzbool강력한 퍼징을 사용할지 여부를 설정합니다 (강력한 퍼징은 JSON 구조를 유지하지 않으며 파서 퍼징에 유용합니다)
debugbool디버그 출력을 활성화할지 여부를 설정합니다
excludeboolparameters 옵션으로 선택된 매개변수를 퍼징에서 제외합니다
notifybool충돌 발생 시 프로세스 모니터에 알릴지 여부를 설정하며 PJFServer에서만 사용됩니다
htmlstrPJFServer 내에서 제공할 HTML 디렉터리의 경로
ext_fuzzbool"command"의 바이너리를 외부 퍼저로 사용할지 여부를 설정합니다
cmd_fuzzbool"command"의 바이너리를 퍼징 대상으로 사용할지 여부를 설정합니다
content_typestrPJFServer 결과의 콘텐츠 유형을 설정합니다 (기본값 application/json)
commandlist<str>실행할 명령입니다. 각 매개변수는 리스트 요소이며, Python의 shlex.split을 사용할 수 있습니다
인덱스설명
0XSS 인젝션 (Polyglot)
1SQL 인젝션 (Polyglot)
2LFI 공격
3SQL 인젝션 polyglot (2)
4XSS 인젝션 (Polyglot) (2)
5RCE 인젝션 (Polyglot)
6LFI 공격 (2)
7Data URI 공격
8LFI 및 HREF 공격
9헤더 인젝션
10RCE 인젝션 (Polyglot) (2)
11일반 템플릿 인젝션
12Flask 템플릿 인젝션
13무작위 문자 공격