## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-HKCFS-PIL-CVE-2017-8291
# Python PIL рджреВрд░рд╕реНрде рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рднреЗрджреНрдпрддрд╛ (GhostButt)
Python рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PIL (Pillow) рдореЙрдбреНрдпреВрд▓ GhostButt рднреЗрджреНрдпрддрд╛ (CVE-2017-8291) рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ GhostScript рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рджреВрд░рд╕реНрде рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рднреЗрджреНрдпрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
## рднреЗрджреНрдпрддрд╛ рд╕рд╛рд░рд╛рдВрд╢
PIL рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЫрд╡рд┐ рд╣реЗрдбрд░ (рдореИрдЬрд┐рдХ рдмрд╛рдЗрдЯреНрд╕) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╡рд┐ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ EPS рдлрд╝рд╛рдЗрд▓ (рд╣реЗрдбрд░ `%!PS` рд╣реИ) рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП `PIL/EpsImagePlugin.py` рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, PIL рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЗ gs рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ GhostScript рд╣реИ:
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
]
# Omit the code to determine whether GhostScript is installed
try:
with open(os.devnull, 'w+b') as devnull:
subprocess.check_call(command, stdin=devnull, stdout=devnull)
im = Image.open(outfile)