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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pFuzz — 모듈형 WAF 우회 퍼저로, 멀티스레딩, 요청 조작, 페이로드 인코딩을 지원하는 레드팀 웹 애플리케이션 테스트 도구입니다. | Kitploit
도구/GitHubGitHub/redsection/pfuzz
WAF BypassWeb SecurityFuzzingPenetration TestingRed Teaming
GitHubredsection/pfuzz

pFuzz

모듈형 WAF 우회 퍼저로, 멀티스레딩, 요청 조작, 페이로드 인코딩을 지원하는 레드팀 웹 애플리케이션 테스트 도구입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

pFuzz란 무엇인가 / pFuzz Nedir ❓

pFuzz는 우리의 연구를 위해 개발한 고급 레드 팀 퍼징 도구입니다. 동시에 다양한 방법을 사용하여 웹 애플리케이션 방화벽을 우회하는 데 도움을 줍니다.

pFuzz는 웹 애플리케이션 연구를 위해 개발한 고급 퍼징 도구입니다. 다양한 보안 애플리케이션에서 여러 공격 방법을 시도하는 과정을 가속화하기 위해 개발되었습니다.

설명 [EN]

pFuzz는 웹 애플리케이션 연구에서 고급 퍼징 기능을 갖추기 위해 Python 언어로 개발된 도구입니다. 애플리케이션은 모듈식 구조를 가지므로 새로 발견되거나 발견될 WAF 우회 방법을 pFuzz에 빠르게 추가하고 다른 모든 WAF에서 테스트할 수 있는 기능이 있습니다. 모듈식 구조 외에도 도구를 더 유연하게 만들기 위해 멀티스레딩, 멀티프로세싱, 큐 구조를 사용했으며, 향후 개발을 위한 기반이 마련되었습니다.

이 도구는 주어진 요청을 파싱하여 객체를 통해 쉽게 변경할 수 있도록 프로그래밍되었습니다. 이 구조 덕분에 애플리케이션을 개발할 사람들은 애플리케이션의 핵심 구조를 변경하지 않고 배울 필요 없이 쉽게 기여할 수 있고, 자신의 필요에 맞게 도구를 개발할 수 있습니다.


참고: 개발에 기여하고 싶다면 pFuzz를 개발하는 것뿐만 아니라 새 모듈을 추가하는 방식으로도 할 수 있습니다. 자유롭게 새 PR을 열어주세요 :)


설명 [TR]

pFuzz, 웹 애플리케이션 연구에서 고급 퍼징 기능을 갖추기 위해 Python 언어로 개발된 도구입니다. 애플리케이션은 모듈식 구조를 가지므로 새로 발견되거나 발견될 WAF 우회 방법을 pFuzz에 빠르게 추가하고 다른 모든 WAF에서 테스트할 수 있는 기능이 있습니다. 모듈식 구조 외에도 멀티스레딩, 멀티프로세싱, 큐와 같은 구조를 사용하여 도구를 더 유연하게 만들었고, 향후 개발을 위한 기반이 마련되었습니다.

애플리케이션은 주어진 요청을 파싱하여 객체를 통해 쉽게 변경할 수 있도록 프로그래밍되었습니다. 이 구조 덕분에 애플리케이션을 개발할 사람들은 애플리케이션의 핵심 구조를 변경하지 않고 배울 필요 없이 쉽게 기여할 수 있고, 자신의 필요에 맞게 애플리케이션을 개발할 수 있습니다.


참고: 개발에 기여하고 싶다면 핵심 '코어' 개발뿐만 아니라 새 모듈을 추가하는 방식으로도 할 수 있습니다. 새 PR을 기다리고 있습니다 :)


root@kitploit:~
        _____                 
 _ __  |  ___|_   _  ____ ____
| '_ \ | |_  | | | ||_  /|_  /
| |_) ||  _| | |_| | / /  / / 
| .__/ |_|    \__,_|/___|/___|
|_|                           

개발자 💁

흐름 📋

pFuzz

설치 및 사용법 📚

root@kitploit:~
sudo pip3 install virtualenv
python3 -m venv myvenv
source myvenv/bin/activate
pip3 install -r requirements.txt
python3 pfuzz.py --help

의존성:

root@kitploit:~
cffi==1.14.3
cryptography==3.1.1
numpy==1.19.2
pandas==1.1.3
pycparser==2.20
pyOpenSSL==19.1.0
python-dateutil==2.8.1
pytz==2020.1
six==1.15.0
xlrd==1.2.0

사용법

  • 도움말
root@kitploit:~
python3 pfuzz.py --help
  • 헤더 조작 모듈
root@kitploit:~
python3 pfuzz.py -r request.txt -m
  • 문자 퍼징 모듈
root@kitploit:~
python3 pfuzz.py -r request.txt -cf
  • 퍼징 모듈
root@kitploit:~
python3 pfuzz.py -r request.txt -f
  • 프록시 추가
root@kitploit:~
python3 pfuzz.py -r request.txt -f --proxy 127.0.0.1:8080
  • 요청 간 지연 추가
root@kitploit:~
python3 pfuzz.py -r request.txt -f -d 3
  • TLS/SSL 연결 활성화
root@kitploit:~
python3 pfuzz.py -r request.txt -f -s
  • 로깅 활성화
root@kitploit:~
python3 pfuzz.py -r request.txt -f -l
  • 페이로드 인코딩/전체 인코딩 함수 활성화
root@kitploit:~
python3 pfuzz.py -r request.txt -f -e
root@kitploit:~
python3 pfuzz.py -r request.txt -f -fe
  • 멀티스레드 설정
root@kitploit:~
python3 pfuzz.py -r request.txt -f -t 5
  • 터미널 출력
root@kitploit:~
python3 pfuzz.py -r request.txt -f -o terminal
root@kitploit:~
python3 pfuzz.py -r request.txt -f -od terminal
  • 파일 출력
root@kitploit:~
python3 pfuzz.py -r request.txt -f -o ~/Desktop/
root@kitploit:~
python3 pfuzz.py -r request.txt -f -od ~/tmp/

도움말 💻

root@kitploit:~
              _____                 
       _ __  |  ___|_   _  ____ ____
      | '_ \ | |_  | | | ||_  /|_  /
      | |_) ||  _| | |_| | / /  / / 
      | .__/ |_|    \__,_|/___|/___|
      |_|
   ------------------------------------
   @EmreOvunc | @merttasci | @xsuperbug
   ------------------------------------
                 v0.2.4
   ------------------------------------

usage: pfuzz.py [-h] [--request REQUEST] [--proxy PROXY] [--log] [--ssl]
                 [--threads THREADS] [--output OUTPUT] [--delay TIME] 
                 [--output-details OUTPUT] [--full-encode] [--encode]
                 [--fuzz] [--charfuzz] [--manipulate] [--version]

optional arguments:
  --help/-h             show this help message and exit
  --proxy/-p    PROXY   proxy [IP:PORT]
  --log/-l              enable logging
  --ssl/-s              enable ssl
  --threads/-t  NUMBER  thread(s) number [default=1]
  --version/-v          show program's version number and exit
  
[Request Options]:  
  --request/-r  REQUEST request file
  --delay/-d    TIME    set a delay between requests [default=0.05]
  --encode/-e           encode space chars in uri/body
  --full-encode/-fe     encode all chars in uri/body
  
[Output Options]:
  --output/-o   OUTPUT  output important info [terminal/folder name]
  --output-details/-od OUTPUT
                        output all details [terminal/folder name]
                        
[Modules]:
  --fuzz/-f             run fuzzing module
  --charfuzz/-cf        run char fuzzing module
  --manipulate/-m       run manipulating headers module

Usage: python3 pfuzz.py -r req.txt --log -s --fuzz -d 1 --encode -o terminal --threads 2
Usage: python3 pfuzz.py -r req.txt -f -l --proxy 127.0.0.1:8080 --output-details ~/output

추가 사항 📢

새 모듈 개발 방법

  • modules/ 폴더 안에 모듈 이름을 지정하는 Python 파일을 생성해야 합니다.
root@kitploit:~
- modules
        - charfuzzer.py
        - exparse.py
        - fuzzer.py
        - headeroperations.py
        - manupilatingheaders.py
  • myreq = HTTPReq.getobj() 와 같이 파싱된 객체를 사용할 수 있습니다.
root@kitploit:~
from reqparser import HTTPReq
myreq  = HTTPReq.getobj()
  • HTTPReq 클래스에서 파생된 많은 속성이 있습니다. reqparser.py에서 확인할 수 있습니다.
root@kitploit:~
...
myreq.uri
myreq.body
myreq.http
myreq.referer
myreq.origin
myreq.host
myreq.cookie
...
  • Excel에서 페이로드를 가져오려면 modules.exparse의 getpayloads 메서드를 사용할 수 있습니다.

    • getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
    root@kitploit:~
    from modules.exparse import getpayloads
    getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
    
    • static/ 폴더 아래 statics.py에서 fuzzsheetName과 같은 정적 객체를 설정했습니다.
    root@kitploit:~
    # Fuzzing Module in static/statics.py
    fuzzsheetName   = 'Fuzzing'
    genericcolmnName = 'Payload'
    fuzzingpayloads = []
    
  • 이제 원하는 대로 속성을 변경/추가/삭제할 수 있습니다.

root@kitploit:~
myreq.uri = tmpuri + payload
myreq.addheader(header, "127.0.0.1")
myreq.content_type = "text/html"
  • 멀티스레딩을 중지하려면 페이로드 끝에 #exitme# 페이로드를 추가하고 statics.exitCall = True로 설정하여 큐가 비어 있는지 확인해야 합니다.
root@kitploit:~
from modules.exparse import getpayloads
for payload in fuzzingpayloads:
if payload == '#exitme#':
    statics.exitCall = True
else:
    [OPERATIONS]
  • 객체(요청)를 보낼 준비가 되면 sendit() 함수를 사용하여 큐에 넣을 수 있습니다.
root@kitploit:~
from reqsender import sendit
sendit(myreq)
  • pFuzz의 핵심 기능을 변경해야 하는 경우 풀 리퀘스트를 시작하거나 이슈를 열 수 있습니다.

새 모듈 개발을 위한 몇 가지 중요한 함수


어떤 WAF를 우회했나요?

  • FortiWeb
  • Cloudflare
  • Sucuri
  • Akamai
  • Imperva
  • F5 WAF
도구 다운로드

Emre Övünç


Mert Taşçı


Evren Yalçın

목적모듈/클래스함수매개변수
요청 보내기reqsender.pysendit()object
요청 객체 사용reqparser.py/HTTPReqgetobj()-
사용자 정의 헤더 추가reqparser.py/HTTPReqOBJECT.addheader()새헤더이름,값
헤더 삭제reqparser.py/HTTPReqOBJECT.delheader()헤더이름
헤더 변경reqparser.py/HTTPReqOBJECT.changeheader()헤더이름,새헤더이름
파일에서 페이로드 가져오기exparse.pygetpayloads()시트이름,열이름
로그 정보/디버그/경고 기록waflogger.pyloginfo/logdebug/logwarn()로그메시지