
Strumento per CVE-2018-16323
CVE-2018-16323 è una perdita di memoria nel processamento di immagini XBM. Dopo che un'immagine XBM è stata convertita in un altro tipo di immagine, è possibile estrarre byte di memoria persa dai dati dell'immagine.
Scoperta da d4d.
Uno strumento abbastanza semplice per generare PoC per CVE-2018-16323. La directory samples contiene alcuni PoC pre-generati di facile utilizzo.
Per usare questo strumento devi installare imagemagick:
apt-get -y install imagemagick
E verificarlo:
convert -v
Qualsiasi versione è adatta.
Usage poc generator: ./XBadManners.sh gen WIDTHxHEIGHT NAME.xbm [minimal]
Example gen: ./XBadManners.sh gen 512x512 poc.xbm
Example gen: ./XBadManners.sh gen 1024x1024 poc_minimal.xbm minimal
Usage result recovery: ./XBadManners.sh recover SAVED_PREVIEW.png|jpeg|gif|etc
Example recovery: ./XBadManners.sh recover avatar.png
La modalità minimal ti permette di generare il corpo XBM più piccolo possibile da incollare in BurpSuite o dove vuoi. La modalità minimal è stata testata e funziona perfettamente. In questa modalità puoi impostare qualsiasi larghezza e altezza.
Nota che puoi estrarre molta memoria usando una singola immagine. L'unica restrizione è il limite massimo di dimensione dell'immagine prodotta dal backend.
Puoi provare a recuperare preview.png. Se ottieni parole leggibili nell'output, significa che tutto funziona correttamente.
./XBadManners.sh gen 512x512 poc.xbm./XBadManners.sh recover result.pngOttimo risultato se l'anteprima cambia significativamente da un caricamento all'altro.
La modalità di recupero è creata per una verifica rapida e dovrebbe funzionare bene per qualsiasi formato immagine supportato da ImageMagick, ma è stata testata solo per png, jpeg e gif. Puoi regolare la logica di estrazione della memoria dall'immagine modificando lo script (è semplice ma brutto)

XBM è un formato bianco e nero. Quindi, qualsiasi risultato apparirà come una specie di zebra (se hai una buona immaginazione). In pratica, più nero == più dati estratti.
Ogni build di ImageMagick dopo that commit e prima di that commit è vulnerabile.