## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SHUN1403-CVE-2017-8291
# Python PIL/Pillow рд░рд┐рдореЛрдЯ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди (GhostButt / CVE-2017-8291)
рдЪреАрдиреА рд╕рдВрд╕реНрдХрд░рдг
Python PIL (Pillow) Python рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдЗрдореЗрдЬ рдлреЙрд░реНрдореЗрдЯреНрд╕ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЗрдореЗрдЬ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдХреНрд╖рдорддрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
Python рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ PIL (Pillow) GhostButt рднреЗрджреНрдпрддрд╛ (CVE-2017-8291) рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ EPS рдЗрдореЗрдЬ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ GhostScript рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рднреЗрджреНрдпрддрд╛ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдордирдорд╛рдирд╛ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдЬрдм PIL рдХрд┐рд╕реА рдЗрдореЗрдЬ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣реЗрдбрд░ (Magic Bytes) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрдореЗрдЬ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ EPS рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ (рд╣реЗрдбрд░ `%!PS` рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ), рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП `PIL/EpsImagePlugin.py` рдХреЛ рд╕реМрдВрдк рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, PIL рдЗрдореЗрдЬ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЗ GhostScript рдХрдорд╛рдВрдб (`gs`) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ:
root@kitploit:~
command = ["gs",
"-q", # quiet mode
"-g%dx%d" % size, # set output geometry (pixels)
"-r%fx%f" % res, # set input DPI (dots per inch)
"-dBATCH", # exit after processing
"-dNOPAUSE", # don't pause between pages,
"-dSAFER", # safe mode
"-sDEVICE=ppmraw", # ppm driver
"-sOutputFile=%s" % outfile, # output file
"-c", "%d %d translate" % (-bbox[0], -bbox[1]),
# adjust for image origin
"-f", infile, # input file
]
# Code to check if GhostScript is installed is omitted
try:
with open(os.devnull, 'w+b') as devnull:
subprocess.check_call(command, stdin=devnull, stdout=devnull)
im = Image.open(outfile)