Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
pFuzz — Fuzzer modular de bypass de WAF con múltiples hilos, manipulación de solicitudes y codificación de payloads para pruebas de aplicaciones web de red team. | Kitploit
Herramientas/GitHubGitHub/redsection/pfuzz
Evasión de WAFSeguridad WebFuzzingPruebas de PenetraciónRed Teaming
GitHubredsection/pfuzz

pFuzz

Fuzzer modular de bypass de WAF con múltiples hilos, manipulación de solicitudes y codificación de payloads para pruebas de aplicaciones web de red team.

Ver Repositorio
1613133hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
## ¿Qué es pFuzz? :question:

pFuzz es una herramienta avanzada de fuzzing para el equipo rojo que desarrollamos para nuestra investigación. Nos ayuda a evadir firewalls de aplicaciones web utilizando diferentes métodos al mismo tiempo.

pFuzz es una herramienta avanzada de fuzzing que desarrollamos para investigaciones de aplicaciones web. Se ha desarrollado para acelerar el proceso de probar varios métodos de ataque en diferentes aplicaciones de seguridad.

## Descripción [EN]
pFuzz es una herramienta desarrollada en el lenguaje Python para tener capacidad avanzada de fuzzing en la investigación de aplicaciones web. Dado que la aplicación tiene una estructura modular, tiene la capacidad de añadir rápidamente métodos de evasión de WAF recién encontrados/por encontrar a pFuzz y probarlos en todos los demás WAF. Además de una estructura modular, se han utilizado estructuras como multi-hilo, multiprocesamiento y colas para hacer la herramienta más flexible, y se ha creado la infraestructura para futuros desarrollos.

La herramienta está programada para que una solicitud dada pueda ser analizada y modificada fácilmente a través de un objeto. Gracias a esta estructura, quienes desarrollen la aplicación podrán contribuir fácilmente y desarrollar la herramienta según sus propias necesidades sin cambiar la estructura central de la aplicación y sin tener que aprenderla.

---

**Nota**: Si deseas contribuir al desarrollo, no solo puedes hacerlo desarrollando pFuzz, sino también añadiendo nuevos módulos.
¡No dudes en abrir nuevos PR! :)

---

## Descripción [TR]
pFuzz es una herramienta desarrollada en Python para tener capacidad avanzada de fuzzing en investigaciones de aplicaciones web. Dado que la aplicación tiene una estructura modular, tiene la capacidad de añadir rápidamente métodos de evasión de WAF recién encontrados/por encontrar a pFuzz y probarlos en todos los demás WAF. Además de una estructura modular, se han utilizado estructuras como multi-hilo, multiprocesamiento y colas para hacer la herramienta más flexible, y se ha creado la infraestructura para futuros desarrollos.

La herramienta está programada para que una solicitud dada pueda ser analizada y modificada fácilmente a través de un objeto. Gracias a esta estructura, quienes desarrollen la aplicación podrán contribuir fácilmente y desarrollar la herramienta según sus propias necesidades sin cambiar la estructura central de la aplicación y sin tener que aprenderla.

---

**Nota**: Si deseas contribuir al desarrollo, no solo puedes hacerlo como desarrollo del núcleo 'core', sino también añadiendo nuevos módulos.
¡Esperamos tus nuevos PR! :)

---


```
        _____                 
 _ __  |  ___|_   _  ____ ____
| '_ \ | |_  | | | ||_  /|_  /
| |_) ||  _| | |_| | / /  / / 
| .__/ |_|    \__,_|/___|/___|
|_|                           
```



## Desarrolladores :information_desk_person:
<table>
  <tr>
    <td align="center"><a href="https://emreovunc.com/"><img src="https://assets.kitploit.com/production/public/readmes/4741/025cb41e33a4ea900dab514465ecc2679bbdcbcc2ecd94afbb9b2b10c0bfc2b0.jpg" width="100px;" alt=""/><br /><sub><b>Emre Övünç</b></sub></a><br/>
    <td align="center"><a href="https://mert.ninja/"><img src="https://assets.kitploit.com/production/public/readmes/4741/67f19af0e4b570cfc645d4cadea381ea7a74439060a29f3c64f666b77a7e52a4.png" width="100px;" alt=""/><br /><sub><b>Mert Taşçı</b></sub></a><br/>
    <td align="center"><a href="https://evren.ninja/"><img src="https://assets.kitploit.com/production/public/readmes/4741/49503c16497a6382ecc3d656a029b044fa49b0c9829469cdaa67c5c0c8252ae5.png" width="100px;" alt=""/><br /><sub><b>Evren Yalçın</b></sub></a><br/>
 </tr>
</table>

 
## Flujo :clipboard:
 
 ![pFuzz](https://assets.kitploit.com/production/public/readmes/4741/b712fe1a27cd6779ae9f2743fc3d45e9e6a7c3cc3fbb0de40e704b969697a09b.png)
 

## Instalación y Uso :books:
```
sudo pip3 install virtualenv
python3 -m venv myvenv
source myvenv/bin/activate
pip3 install -r requirements.txt
python3 pfuzz.py --help
```
#### Dependencias:
```
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
```
#### Uso
   - **Ayuda**
   ```
   python3 pfuzz.py --help
   ```
   - **Módulo de Manipulación de Cabeceras**
   ```
   python3 pfuzz.py -r request.txt -m
   ```
   - **Módulo de Fuzzing de Caracteres**
   ```
   python3 pfuzz.py -r request.txt -cf
   ```
   - **Módulo de Fuzzing**
   ```
   python3 pfuzz.py -r request.txt -f
   ```
   - **Añadir proxy**
   ```
   python3 pfuzz.py -r request.txt -f --proxy 127.0.0.1:8080
   ```
   - **Añadir un retardo entre peticiones**
   ```
   python3 pfuzz.py -r request.txt -f -d 3
   ```
   - **Habilitar conexión TLS/SSL**
   ```
   python3 pfuzz.py -r request.txt -f -s
   ``` 
   - **Habilitar registro (logging)**
   ```
   python3 pfuzz.py -r request.txt -f -l
   ```
   - **Habilitar función de codificación/codificación completa de payloads**
   ```
   python3 pfuzz.py -r request.txt -f -e
   ```
   ```
   python3 pfuzz.py -r request.txt -f -fe
   ```
   - **Establecer multi-hilos**
   ```
   python3 pfuzz.py -r request.txt -f -t 5
   ```
   - **Salida a la terminal**
   ```
   python3 pfuzz.py -r request.txt -f -o terminal
   ```
   ```
   python3 pfuzz.py -r request.txt -f -od terminal
   ```
   - **Salida a un archivo**
   ```
   python3 pfuzz.py -r request.txt -f -o ~/Desktop/
   ```
   ```
   python3 pfuzz.py -r request.txt -f -od ~/tmp/
   ```

## Ayuda :computer:
```
              _____                 
       _ __  |  ___|_   _  ____ ____
      | '_ \ | |_  | | | ||_  /|_  /
      | |_) ||  _| | |_| | / /  / / 
      | .__/ |_|    \__,_|/___|/___|
      |_|
   ------------------------------------
   @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
```


## Extras :loudspeaker:
#### Cómo Desarrollar un Nuevo Módulo
- Debe crearse un archivo Python que especifique el nombre del módulo dentro de la carpeta **modules/**.
```
- modules
        - charfuzzer.py
        - exparse.py
        - fuzzer.py
        - headeroperations.py
        - manupilatingheaders.py
```
- Puedes usar el objeto analizado como **myreq  = HTTPReq.getobj()**
```
from reqparser import HTTPReq
myreq  = HTTPReq.getobj()
```
  - Tiene muchos atributos derivados de la clase **HTTPReq**. Puedes verlos en **reqparser.py.**
  ```
  ...
  myreq.uri
  myreq.body
  myreq.http
  myreq.referer
  myreq.origin
  myreq.host
  myreq.cookie
  ...
  ```
- Si deseas obtener tus payloads desde el archivo Excel, puedes usar los métodos **getpayloads** de modules.exparse.

  - getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
  ```
  from modules.exparse import getpayloads
  getpayloads(fuzzsheetName, genericcolmnName, fuzzingpayloads)
  ```

  - Configuramos objetos estáticos como fuzzsheetName en statics.py que está dentro de la carpeta **static/**.
  ```
  # Módulo de Fuzzing en static/statics.py
  fuzzsheetName   = 'Fuzzing'
  genericcolmnName = 'Payload'
  fuzzingpayloads = []
  ```
- Ahora, puedes cambiar/añadir/eliminar los atributos como desees.
```
myreq.uri = tmpuri + payload
myreq.addheader(header, "127.0.0.1")
myreq.content_type = "text/html"
```
- Para detener el multi-hilo, debes agregar el payload **#exitme#** al final de tus payloads y establecer **statics.exitCall = True** para verificar si la cola está vacía o no.
```
from modules.exparse import getpayloads
for payload in fuzzingpayloads:
if payload == '#exitme#':
    statics.exitCall = True
else:
    [OPERACIONES]
```

- Cuando tu objeto (solicitud) esté listo para ser enviado, puedes usar la función **sendit()** para ponerlo en la cola.
```
from reqsender import sendit
sendit(myreq)
```
- Si necesitas cambiar funciones centrales en pFuzz, puedes iniciar un pull request o abrir un issue.

---

#### Algunas Funciones Importantes para Desarrollar Nuevos Módulos
| Propósito                            | Módulo/Clase          | Función                    | Parámetro(s)             |
| -------------                        |-------------          | -------------               | -------------            |
| Enviar una solicitud                 |reqsender.py          | sendit()                    | object                   |
| Usar un objeto de solicitud         |reqparser.py/HTTPReq  | getobj()                    |    -                     |
| Añadir una cabecera personalizada    |reqparser.py/HTTPReq  | OBJECT.addheader()          | newHeadername,value      |
| Eliminar una cabecera                |reqparser.py/HTTPReq  | OBJECT.delheader()          | headerName               |
| Cambiar una cabecera                 |reqparser.py/HTTPReq  | OBJECT.changeheader()       | headerName,newHeaderName |
| Obtener un payload del archivo       |exparse.py            | getpayloads()               | sheetName,columnName     |
| Escribir un registro info/debug/warning |waflogger.py         | loginfo/logdebug/logwarn()  | logMessage               |

---

### ¿Qué WAFs hemos evadido?
- FortiWeb
- Cloudflare
- Sucuri
- Akamai
- Imperva
- F5 WAF
Descargar herramienta