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
padding-oracle-attacker — 🔓 Herramienta CLI y biblioteca para ejecutar ataques de oráculo de relleno fácilmente, con soporte para solicitudes de red concurrentes y una interfaz de usuario elegante. | Kitploit
Herramientas/GitHubGitHub/kishanbagaria/padding-oracle-attacker
Herramientas de Cifrado/DescifradoExplotaciónExplotación de Aplicaciones WebCriptografía
GitHubkishanbagaria/padding-oracle-attacker

padding-oracle-attacker

🔓 Herramienta CLI y biblioteca para ejecutar ataques de oráculo de relleno fácilmente, con soporte para solicitudes de red concurrentes y una interfaz de usuario elegante.

Ver Repositorio

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
21632hace 3 añosRevisado por Kitploit

padding-oracle-attacker

Herramienta CLI y biblioteca para ejecutar ataques de oracle de relleno fácilmente, con soporte para peticiones de red concurrentes y una interfaz de usuario elegante.

Demo de descifrado de poattack

Build Status

Instalación

Asegúrate de tener Node.js instalado, luego ejecuta

root@kitploit:~
$ npm install --global padding-oracle-attacker

o

root@kitploit:~
$ yarn global add padding-oracle-attacker

Uso desde CLI

root@kitploit:~
Uso
  $ padding-oracle-attacker decrypt <url> hex:<ciphertext_hex> <block_size> <error> [options]
  $ padding-oracle-attacker decrypt <url> b64:<ciphertext_b64> <block_size> <error> [options]

  $ padding-oracle-attacker encrypt <url> <plaintext>          <block_size> <error> [options]
  $ padding-oracle-attacker encrypt <url> hex:<plaintext_hex>  <block_size> <error> [options]

  $ padding-oracle-attacker analyze <url> [<block_size>] [options]

Comandos
  decrypt                  Encuentra el texto plano (foobar) para un texto cifrado dado (hex:0123abcd)
  encrypt                  Encuentra el texto cifrado (hex:abcd1234) para un texto plano dado (foo=bar)
  analyze                  Ayuda a determinar si la URL es vulnerable o no, y
                           cómo difiere la respuesta cuando ocurre un error de descifrado
                           (para el argumento <error>)

Argumentos
  <url>                    URL a atacar. El payload se insertará al final por defecto. Para especificar
                           un punto de inyección personalizado, incluye {POPAYLOAD} en un encabezado (-H),
                           en el cuerpo de la petición (-d) o en la URL
  <block_size>             Tamaño de bloque usado por el algoritmo de cifrado en el servidor
  <error>                  Cadena presente en la respuesta cuando falla el descifrado en el servidor.
                           Especifica una cadena presente en el cuerpo de la respuesta HTTP (como PaddingException)
                           o el código de estado de la respuesta HTTP (como 400)

Opciones
  -c, --concurrency        Peticiones a enviar concurrentemente                   [default: 128]
      --disable-cache      Deshabilitar la caché de red. Guardada en              [default: false]
                           poattack-cache.json.gz.txt por defecto
  -X, --method             Método HTTP a usar al hacer la petición                [default: GET]
  -H, --header             Encabezados a enviar con la petición.
                             -H 'Cookie: cookie1' -H 'User-Agent: Googlebot/2.1'
  -d, --data               Cuerpo de la petición
                             Cadena JSON: {"id": 101, "foo": "bar"}
                             Codificado URL: id=101&foo=bar
                           Asegúrate de especificar el encabezado Content-Type.

  -e, --payload-encoding   Codificación del payload de texto cifrado para {POPAYLOAD} [default: hex]
                             base64          FooBar+/=
                             base64-urlsafe  FooBar-_
                             hex             deadbeef
                             hex-uppercase   DEADBEEF
                             base64(xyz)     Base64 personalizado ('xyz' representa caracteres para '+/=')

  --dont-urlencode-payload No codificar URL el {POPAYLOAD}                       [default: false]

  --start-from-1st-block   Comenzar el procesamiento desde el primer bloque       [default: false]
                           en lugar del último (solo funciona con modo decrypt)

Ejemplos
  $ poattack decrypt http://localhost:2020/decrypt?ciphertext=
      hex:e3e70d8599206647dbc96952aaa209d75b4e3c494842aa1aa8931f51505df2a8a184e99501914312e2c50320835404e9
      16 400
  $ poattack encrypt http://localhost:2020/decrypt?ciphertext= "foo bar 🦄" 16 400
  $ poattack encrypt http://localhost:2020/decrypt?ciphertext= hex:666f6f2062617220f09fa684 16 400
  $ poattack analyze http://localhost:2020/decrypt?ciphertext=

Alias
  poattack
  padding-oracle-attack

API de la biblioteca

root@kitploit:~
const { decrypt, encrypt } = require('padding-oracle-attacker')
// o
import { decrypt, encrypt } from 'padding-oracle-attacker'

const { blockCount, totalSize, foundBytes, interBytes } = await decrypt(options)

const { blockCount, totalSize, foundBytes, interBytes, finalRequest } = await encrypt(options)

decrypt(options: Object): Promise

encrypt(options: Object): Promise

Opciones requeridas
url: string

URL a atacar. El payload se añadirá al final por defecto. Para especificar un punto de inyección personalizado, incluye {POPAYLOAD} en la URL, en un encabezado (requestOptions.headers) o en el cuerpo de la petición (requestOptions.data)

blockSize: number

Tamaño de bloque usado por el algoritmo de cifrado en el servidor.

isDecryptionSuccess: ({ statusCode, headers, body }) => boolean

Función que devuelve true si la respuesta del servidor indica que el descifrado fue exitoso.

ciphertext: Buffer (solo decrypt)

Texto cifrado a descifrar.

plaintext: Buffer (solo encrypt)

Texto plano a cifrar. El relleno se añadirá automáticamente. Ejemplo: Buffer.from('foo bar', 'utf8')


Opciones opcionales
concurrency: number = 128

Peticiones de red a enviar concurrentemente.

isCacheEnabled: boolean = true

Las respuestas se almacenan en caché por defecto y se guardan en poattack-cache.json.gz.txt. Establece a false para deshabilitar la caché.

requestOptions: { method, headers, data }
requestOptions.method: string

Método HTTP a usar al hacer la petición. GET por defecto. POST, PUT, DELETE son algunas opciones válidas.

requestOptions.headers: { string: string }

Encabezados a enviar con la petición. Ejemplo: { 'Content-Type': 'application/x-www-form-urlencoded' }

requestOptions.body: string

Cuerpo de la petición. Puede ser una cadena JSON, parámetros codificados URL, etc. El encabezado Content-Type debe establecerse manualmente.

logMode: 'full'|'minimal'|'none' = 'full'

full: Registrar todo en la consola (por defecto)
minimal: Registrar solo al inicio y al finalizar en la consola
none: No registrar nada en la consola

transformPayload: (ciphertext: Buffer) => string

Función para convertir el ciphertext en una cadena al hacer una petición. Por defecto, ciphertext se codifica en hexadecimal y se inserta en el punto de inyección (al final de la URL a menos que esté presente {POPAYLOAD}).


Opciones opcionales (solo decrypt)
alreadyFound: Buffer

Bytes de texto plano ya conocidos/encontrados que se pueden omitir (desde el final). Si proporcionas un Buffer de diez bytes, los últimos diez bytes se omitirán.

initFirstPayloadBlockWithOrigBytes: boolean = false

Inicializar el primer bloque del payload con bytes originales del ciphertext en lugar de ceros.
Ejemplo: abcdef12345678ff 1111111111111111 en lugar de 00000000000000ff 1111111111111111

startFromFirstBlock: boolean = false

Comenzar el procesamiento desde el primer bloque en lugar del último.

makeInitialRequest: boolean = true

Hacer una petición inicial con el ciphertext original proporcionado y registrar la respuesta del servidor en la consola para permitir al usuario asegurarse de que las peticiones de red se están enviando correctamente.


Opciones opcionales (solo encrypt)
makeFinalRequest: boolean = true

Después de encontrar los bytes del ciphertext para el nuevo plaintext, hacer una petición final con los bytes encontrados y registrar la respuesta del servidor en la consola.

lastCiphertextBlock: Buffer

Texto cifrado personalizado para el último bloque. El último bloque es solo ceros por defecto (000000000000000).

Desarrollo

padding-oracle-attacker está escrito en TypeScript. Si deseas modificar los archivos fuente y ejecutarlos, puedes compilar los archivos a JS primero y ejecutarlos con node, o usar ts-node.
Ejemplo: yarn build luego node dist/cli ... o simplemente ts-node src/cli ...

yarn build o npm run build

Compila los archivos TypeScript dentro del directorio src a archivos JS y los saca al directorio dist.

yarn clean o npm run clean

Elimina el directorio dist.

yarn lint o npm run lint

Analiza los archivos usando eslint.

yarn test o npm run test

Analiza y ejecuta las pruebas usando ava.

node test/helpers/vulnerable-server.js

Ejecuta el servidor de pruebas que es vulnerable a ataques de oracle de relleno en http://localhost:2020

Relacionados

  • PadBuster (Perl)
  • Padding Oracle Attack (Python)
  • python-paddingoracle (Python)
  • Poracle (Ruby)
  • GoPaddy (Go)
  • pax (Go)
  • padre (Go)
  • Padantic (Rust)
  • Padoracle (JavaScript)

Licencia

MIT © Kishan Bagaria

Descargar herramienta