tags: Data_Integrity_Failures session_hijack


Quando in una sessione è presente questa vulnerabilità possiamo ottenere la sessione di un altro utente semplicemente modificando il JWT presente nella sezione cookie della sessione:

Ci basta modifcare la sezione alg in none e la sezione username in admin ricodificare tutto il base64 e sostituire il cookie originale con quello modificato, la signature va lasciata vuota, ma l’ultimo punto deve essere comunque messo:

Per encodeare utilizza o questo sito jwt.io oppure il terminale di Linux con questa sintassi però:

# Header
echo -n '{"typ":"JWT","alg":"none"}' | base64 | tr '+/' '-_' | tr -d '='
 
# Payload
echo -n '{"username":"admin","exp":1759767010}' | base64 | tr '+/' '-_' | tr -d '='

Se usi strumenti normali potrebbe codificare male spazi, uguali, ecc e l’attacco non avrebbe successo, quindi controlla sempre bene che sia ben codificato.

Ricorda:

  • NON formattare il JSON (niente spazi, niente newline)

  • Usa Base64URL (rimuovi = finali, sostituisci + con - e / con _)

  • Termina con un punto per la firma vuota (alg: none)