@@ -15,11 +15,31 @@ def initialize(info={})
15
15
super ( update_info ( info ,
16
16
'Name' => "MS14-060 Microsoft Windows OLE Package Manager Code Execution" ,
17
17
'Description' => %q{
18
- This module exploits a vulnerability Microsoft Windows from Vista SP2 to Windows 8,
19
- including Windows Server 2008 and 2012. The vulnerability exists in the OLE package
20
- magager, which allows to download and execute remote INF files silently. This module
21
- triggers the vulnerability through a malicious PPSX file, as exploited in the wild on
22
- October 2014.
18
+ This module exploits a vulnerability found in Windows Object Linking and Embedding (OLE)
19
+ allowing arbitrary code execution, publicly known as "Sandworm". Platforms such as Windows
20
+ Vista SP2 all the way to Windows 8, Windows Server 2008 and 2012 are known to be
21
+ vulnerable. However, based on our testing, the most reliable setup is on Windows platforms
22
+ running Office 2013. But please keep in mind that some other setups such as using Office
23
+ 2010 might be less stable, and sometimes may end up with a crash due to a failure in the
24
+ CPackage::CreateTempFileName function.
25
+
26
+ In detail, the vulnerability has to do with how the Object Packager 2 component
27
+ (packager.dll) handles an INF file that contains malicious registry changes, which may be
28
+ leveraged for code execution. First of all, Packager does not load the INF file directly.
29
+ But as an attacker, you can trick it to load your INF anyway by embedding the file path as
30
+ a remote share in an OLE object. The packager will then treat it as a type of media file,
31
+ and load it with the packager!CPackage::OLE2MPlayerReadFromStream, which will download it
32
+ with a CopyFileW call, save it in a temp folder, and pass that information for later. The
33
+ exploit will do this loading process twice: first for a fake gif file that's actually the
34
+ payload, and the second for the INF file.
35
+
36
+ The packager will also look at each OLE object's XML Presentation Command, specifically the
37
+ type and cmd property. In the exploit, "verb" media command type is used, and this triggers
38
+ the packager!CPackage::DoVerb function. Also, "-3" is used as the fake gif file's cmd
39
+ property, and "3" is used for the INF. When the cmd is "-3", DoVerb will bail. But when "3"
40
+ is used (again, for the INF file), it will cause the packager to try to find appropriate
41
+ handler for it, which will end up with C:\Windows\System32\infDefaultInstall.exe, and that
42
+ will install/run the malicious file, and finally give us arbitrary code execution.
23
43
} ,
24
44
'License' => MSF_LICENSE ,
25
45
'Author' =>
0 commit comments