Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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
recollapse — Herramienta de fuzzing de expresiones regulares en caja negra que genera payloads para eludir validaciones de entrada, descubrir normalizaciones y evadir WAFs en aplicaciones web. | Kitploit
Herramientas/GitHubGitHub/0xacb/recollapse
Generación de PayloadsEvasión de WAFSeguridad WebFuzzing
GitHub0xacb/recollapse

recollapse

Herramienta de fuzzing de expresiones regulares en caja negra que genera payloads para eludir validaciones de entrada, descubrir normalizaciones y evadir WAFs en aplicaciones web.

Ver Repositorio
1.4k150hace 1 añoRevisado 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

REcollapse

REcollapse es una herramienta auxiliar para el fuzzing de expresiones regulares en caja negra con el fin de evitar validaciones y descubrir normalizaciones en aplicaciones web.

También puede ser útil para evadir WAF y mitigaciones débiles de vulnerabilidades. Para más información, echa un vistazo al artículo del blog sobre REcollapse.

El objetivo de esta herramienta es generar cargas útiles para pruebas. El fuzzing real debe realizarse con otras herramientas como Burp (intruder), Caido (automate), ffuf o similares.


Instalación

Requisitos: Python 3

pip3 install recollapse o python3 setup.py install o pip3 install .

Docker

docker build -t recollapse . o docker pull 0xacb/recollapse


Uso

root@kitploit:~
$ recollapse -h
usage: recollapse [-h] [-m MODES] [-e {1,2,3,4}] [-r RANGE] [-s SIZE] [-f FILE] [-an] [-mn MAXNORM] [-mt MAXTRUNC] [-nt] [-tt] [-ct]
                  [--html] [--version]
                  [input]

REcollapse es una herramienta auxiliar para el fuzzing de expresiones regulares en caja negra con el fin de evitar validaciones y descubrir normalizaciones en aplicaciones web

argumentos posicionales:
  input                 entrada original

opciones:
  -h, --help            muestra este mensaje de ayuda y sale
  -m, --modes, -p, --positions MODES
                        modos de variación. Ejemplo: 1,2,3,4,5,6,7 (por defecto). 1: inicio, 2: separador, 3: normalización, 4:
                        terminación, 5: metacaracteres de regex, 6: cambio de mayúsculas/minúsculas, 7: truncamiento de bytes
  -e, --encoding {1,2,3,4}
                        1: formato codificado en URL (por defecto), 2: formato Unicode, 3: formato bruto, 4: formato doblemente codificado en URL
  -r, --range RANGE     rango de bytes para el fuzzing. Ejemplo: 0,0xff (por defecto)
  -s, --size SIZE       número de bytes de fuzzing (por defecto: 1)
  -f, --file FILE       leer entrada desde un archivo
  -an, --alphanum       incluir bytes alfanuméricos en el rango de fuzzing
  -mn, --maxnorm MAXNORM
                        número máximo de normalizaciones (por defecto: 3)
  -mt, --maxtrunc MAXTRUNC
                        número máximo de truncamientos (por defecto: 3)
  -nt, --normtable      mostrar la tabla de normalización
  -tt, --trunctable     mostrar la tabla de truncamiento
  -ct, --casetable      mostrar la tabla de mayúsculas/minúsculas
  --html                mostrar las tablas en formato HTML
  --version             muestra la versión de recollapse

Explicación detallada de las opciones

Consideremos this_is.an_example como entrada.

Modos

  1. Fuzzear el inicio de la entrada: $this_is.an_example
  2. Fuzzear antes y después de los caracteres especiales: this$_$is$.$an$_$example
  3. Fuzzear posiciones de normalización: reemplazar todos los bytes posibles según la tabla de normalización
  4. Fuzzear el final de la entrada: this_is.an_example$
  5. Fuzzear metacaracteres de regex: reemplazar todos los metacaracteres de regex posibles: .^$*+-?()[]{}\|
  6. Fuzzear cambio de mayúsculas/minúsculas: reemplazar todos los bytes posibles según la tabla de mayúsculas/minúsculas
  7. Fuzzear truncamiento de bytes: reemplazar todos los bytes posibles según la tabla de truncamiento

Codificación

  1. Formato codificado en URL para usar con application/x-www-form-urlencoded o parámetros de consulta/cuerpo: %22this_is.an_example
  2. Formato Unicode para usar con application/json: \u0022this_is.an_example
  3. Formato bruto para usar con multipart/form-data: "this_is.an_example
  4. Formato doblemente codificado en URL

Rango

Especificar un rango de bytes para el fuzzing: -r 1-127. Esto excluirá los caracteres alfanuméricos a menos que se proporcione la opción -an.

Tamaño

Especificar el tamaño del fuzzing para los modos 1, 2 y 4. La aproximación por defecto es fuzzear todos los valores posibles para un byte. Aumentar el tamaño consumirá más recursos y generará muchas más entradas, pero puede llevar a encontrar nuevos bypass.

Archivo

La entrada se puede proporcionar como argumento posicional, stdin o un archivo mediante la opción -f.

Alfanumérico

Por defecto, los caracteres alfanuméricos se excluirán de la generación de salida, lo que generalmente no es interesante en términos de respuestas. Puedes permitirlo con la opción -an.

Número máximo de normalizaciones

No todas las librerías de normalización tienen el mismo comportamiento. Por defecto, se generan tres posibilidades de normalización para cada índice de entrada, que suele ser suficiente. Usa la opción -mn para ir más allá.

Tablas

Usa la opción -nt para mostrar la tabla de normalización, la opción -ct para mostrar la tabla de mayúsculas/minúsculas y la opción -tt para mostrar la tabla de truncamiento. También puedes usar la opción --html para mostrar las tablas en formato HTML.

root@kitploit:~
$ recollapse -nt --html > normalization_table.html
$ recollapse -tt --html > truncation_table.html
$ recollapse -ct --html > case_table.html

Ejemplos

Usando REcollapse como herramienta de línea de comandos:

root@kitploit:~
$ recollapse -e 1 -m 1,2,4 -r 10-11 https://legit.example.com
%0ahttps://legit.example.com
%0bhttps://legit.example.com
https%0a://legit.example.com
https%0b://legit.example.com
...

$ echo "[email protected]" | recollapse 
%[email protected]
%[email protected]
...

$ echo "<svg/onload=alert(1)>" | recollapse | ffuf -w - -u "https://example.com/?param=FUZZ" -mc 200,403,500

Usando REcollapse como biblioteca:

root@kitploit:~
from recollapse import Recollapse

recollapse = Recollapse(modes=Recollapse.DEFAULT_MODES,
                        encoding=Recollapse.ENCODING_RAW)
variants = recollapse.generate("<script")
for variant in variants:
    print(variant)

Recursos

Esta técnica fue presentada originalmente en BSidesLisbon 2022

Artículo del blog: https://0xacb.com/2022/11/21/recollapse/

Diapositivas:

  • nahamcon_2022_eu_till_recollapse.pdf
  • bsideslisbon_2022_till_recollapse.pdf

Videos:

  • NahamCon 2022 EU
  • BSidesLisbon 2022

Tablas:

  • Tabla de normalización: https://0xacb.com/normalization_table
  • Tabla de mayúsculas/minúsculas: https://0xacb.com/case_table
  • Tabla de truncamiento: https://0xacb.com/truncation_table

Agradecimientos

  • @regala_
  • @0xz3z4d45
  • @jllis
  • @samwcyo
  • @yassineaboukir
  • @0xteknogeek
  • @vgpinho
  • @ryancbarnett
  • BBAC

y

  • equipo de @ethiack
  • equipo de @0xdisturbance
  • equipo de @hacker0x01

⚠ Aviso Legal ⚠

Este proyecto se crea únicamente con fines educativos y de pruebas éticas. El uso de esta herramienta para atacar objetivos sin consentimiento mutuo previo es ilegal. Los desarrolladores no asumen ninguna responsabilidad y no son responsables de ningún uso indebido o daño causado por esta herramienta.

Descargar herramienta