Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/kishanbagaria/padding-oracle-attacker
Strumenti di Crittografia/DecrittografiaExploitSfruttamento di Applicazioni WebCrittografia
GitHubkishanbagaria/padding-oracle-attacker

padding-oracle-attacker

🔓 Strumento CLI e libreria per eseguire facilmente attacchi padding oracle, con supporto per richieste di rete concorrenti e un'interfaccia utente elegante.

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
216324 anni faRevisionato da Kitploit

padding-oracle-attacker

Strumento da riga di comando e libreria per eseguire facilmente attacchi padding oracle, con supporto per richieste di rete concorrenti e un'interfaccia elegante.

poattack demo di decifratura

Build Status

Installazione

Assicurati che Node.js sia installato, quindi esegui

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

oppure

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

Utilizzo CLI

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

Comandi
  decrypt                  Trova il testo in chiaro (foobar) per un dato ciphertext (hex:0123abcd)
  encrypt                  Trova il ciphertext (hex:abcd1234) per un dato testo in chiaro (foo=bar)
  analyze                  Aiuta a scoprire se l'URL è vulnerabile o meno, e
                           come la risposta differisce quando si verifica un errore di decifratura
                           (per l'argomento <error>)

Argomenti
  <url>                    URL da attaccare. Il payload verrà inserito alla fine per impostazione predefinita. Per specificare
                           un punto di iniezione personalizzato, includi {POPAYLOAD} in un'intestazione (-H),
                           nel corpo della richiesta (-d) o nell'URL
  <block_size>             Dimensione del blocco utilizzata dall'algoritmo di cifratura sul server
  <error>                  La stringa presente nella risposta quando la decifratura fallisce sul server.
                           Specifica una stringa presente nel corpo della risposta HTTP (es. PaddingException)
                           o il codice di stato della risposta HTTP (es. 400)

Opzioni
  -c, --concurrency        Richieste da inviare contemporaneamente                    [default: 128]
      --disable-cache      Disabilita la cache di rete. Salvata in                     [default: false]
                           poattack-cache.json.gz.txt per impostazione predefinita
  -X, --method             Metodo HTTP da utilizzare per effettuare la richiesta       [default: GET]
  -H, --header             Intestazioni da inviare con la richiesta.
                             -H 'Cookie: cookie1' -H 'User-Agent: Googlebot/2.1'
  -d, --data               Corpo della richiesta
                             Stringa JSON: {"id": 101, "foo": "bar"}
                             Codificato URL: id=101&foo=bar
                           Assicurati di specificare l'intestazione Content-Type.

  -e, --payload-encoding   Codifica del payload del ciphertext per {POPAYLOAD}        [default: hex]
                             base64          FooBar+/=
                             base64-urlsafe  FooBar-_
                             hex             deadbeef
                             hex-uppercase   DEADBEEF
                             base64(xyz)     Base64 personalizzato ('xyz' rappresenta i caratteri per '+/=')

  --dont-urlencode-payload Non codificare URL di {POPAYLOAD}                          [default: false]

  --start-from-1st-block   Inizia l'elaborazione dal primo blocco invece             [default: false]
                           che dall'ultimo (funziona solo con la modalità decrypt)

Esempi
  $ 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 della libreria

root@kitploit:~
const { decrypt, encrypt } = require('padding-oracle-attacker')
// oppure
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

Opzioni obbligatorie
url: string

URL da attaccare. Il payload verrà aggiunto alla fine per impostazione predefinita. Per specificare un punto di iniezione personalizzato, includi {POPAYLOAD} nell'URL, in un'intestazione (requestOptions.headers) o nel corpo della richiesta (requestOptions.data)

blockSize: number

Dimensione del blocco utilizzata dall'algoritmo di cifratura sul server.

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

Funzione che restituisce true se la risposta del server indica che la decifratura è riuscita.

ciphertext: Buffer (solo decrypt)

Ciphertext da decifrare.

plaintext: Buffer (solo encrypt)

Testo in chiaro da cifrare. Il padding verrà aggiunto automaticamente. Esempio: Buffer.from('foo bar', 'utf8')


Opzioni facoltative
concurrency: number = 128

Richieste di rete da inviare contemporaneamente.

isCacheEnabled: boolean = true

Le risposte vengono memorizzate nella cache per impostazione predefinita e salvate in poattack-cache.json.gz.txt. Imposta su false per disabilitare la cache.

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

Metodo HTTP da utilizzare per effettuare la richiesta. Di default GET. POST, PUT, DELETE sono alcune opzioni valide.

requestOptions.headers: { string: string }

Intestazioni da inviare con la richiesta. Esempio: { 'Content-Type': 'application/x-www-form-urlencoded' }

requestOptions.body: string

Corpo della richiesta. Può essere una stringa JSON, parametri codificati URL, ecc. L'intestazione Content-Type deve essere impostata manualmente.

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

full: Registra tutto nella console (default)
minimal: Registra solo l'avvio e il completamento nella console
none: Non registra nulla nella console

transformPayload: (ciphertext: Buffer) => string

Funzione per convertire il ciphertext in una stringa quando si effettua una richiesta. Per impostazione predefinita, il ciphertext viene codificato in esadecimale e inserito nel punto di iniezione (fine URL a meno che non sia presente {POPAYLOAD}).


Opzioni facoltative (solo decrypt)
alreadyFound: Buffer

Byte di testo in chiaro già noti/trovati che possono essere saltati (dalla fine). Se fornisci un Buffer di dieci byte, gli ultimi dieci byte verranno saltati.

initFirstPayloadBlockWithOrigBytes: boolean = false

Inizializza il primo blocco di payload con i byte del ciphertext originale invece che con zeri.
Esempio: abcdef12345678ff 1111111111111111 invece di 00000000000000ff 1111111111111111

startFromFirstBlock: boolean = false

Inizia l'elaborazione dal primo blocco invece che dall'ultimo.

makeInitialRequest: boolean = true

Effettua una richiesta iniziale con il ciphertext originale fornito e registra la risposta del server nella console per consentire all'utente di verificare che le richieste di rete vengano inviate correttamente.


Opzioni facoltative (solo encrypt)
makeFinalRequest: boolean = true

Dopo aver trovato i byte del ciphertext per il nuovo plaintext, effettua una richiesta finale con i byte trovati e registra la risposta del server nella console.

lastCiphertextBlock: Buffer

Ciphertext personalizzato per l'ultimo blocco. L'ultimo blocco è di default solo zeri (000000000000000).

Sviluppo

padding-oracle-attacker è scritto in TypeScript. Se desideri modificare i file sorgente ed eseguirli, puoi compilare i file in JS prima ed eseguirli con node, oppure utilizzare ts-node.
Esempio: yarn build then node dist/cli ... o semplicemente ts-node src/cli ...

yarn build o npm run build

Compila i file TypeScript nella directory src in file JS e li output nella directory dist.

yarn clean o npm run clean

Elimina la directory dist.

yarn lint o npm run lint

Controlla i file utilizzando eslint.

yarn test o npm run test

Controlla ed esegue i test utilizzando ava.

node test/helpers/vulnerable-server.js

Avvia il server di test che è vulnerabile agli attacchi padding oracle su http://localhost:2020

Correlati

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

Licenza

MIT © Kishan Bagaria

Scarica lo strumento