@@ -44,7 +44,7 @@ def setup
4444
4545 # hooked window host name
4646 log_zombie_port = 0
47- if !@data [ 'results' ] [ 'browser.window.hostname' ] . nil?
47+ if !@data [ 'results' ] [ 'browser.window.hostname' ] . nil? && BeEF :: Filters . is_valid_hostname? ( @data [ 'results' ] [ 'browser.window.hostname' ] )
4848 log_zombie_domain = @data [ 'results' ] [ 'browser.window.hostname' ]
4949 elsif !@data [ 'request' ] . referer . nil? and !@data [ 'request' ] . referer . empty?
5050 referer = @data [ 'request' ] . referer
@@ -59,7 +59,7 @@ def setup
5959 end
6060
6161 # hooked window host port
62- if @data [ 'results' ] [ 'browser.window.hostport' ] . nil?
62+ if @data [ 'results' ] [ 'browser.window.hostport' ] . nil? || ! BeEF :: Filters . is_valid_port? ( @data [ 'results' ] [ 'browser.window.hostport' ] . to_s )
6363 log_zombie_domain_parts = log_zombie_domain . split ( ':' )
6464 log_zombie_port = log_zombie_domain_parts [ 1 ] . to_i if log_zombie_domain_parts . length > 1
6565 else
@@ -92,6 +92,7 @@ def setup
9292 BD . set ( session_id , 'browser.name.friendly' , browser_friendly_name )
9393 else
9494 err_msg "Invalid browser name returned from the hook browser's initial connection."
95+ browser_name = 'Unknown'
9596 end
9697
9798 if BeEF ::Filters . is_valid_ip? ( zombie . ip )
@@ -242,11 +243,17 @@ def setup
242243 X_FORWARDED
243244 X_FORWARDED_FOR
244245 ] . each do |header |
245- proxy_clients << ( JSON . parse ( zombie . httpheaders ) [ header ] ) . to_s unless JSON . parse ( zombie . httpheaders ) [ header ] . nil?
246+ val = JSON . parse ( zombie . httpheaders ) [ header ]
247+ unless val . nil?
248+ val . to_s . split ( ',' ) . each do |ip |
249+ proxy_clients << ip . strip if BeEF ::Filters . is_valid_ip? ( ip . strip )
250+ end
251+ end
246252 end
247253
248254 # retrieve proxy server
249255 proxy_server = JSON . parse ( zombie . httpheaders ) [ 'VIA' ] unless JSON . parse ( zombie . httpheaders ) [ 'VIA' ] . nil?
256+ proxy_server = nil unless proxy_server . nil? || BeEF ::Filters . has_valid_browser_details_chars? ( proxy_server )
250257
251258 # store and log proxy details
252259 if using_proxy == true
@@ -273,6 +280,7 @@ def setup
273280 BD . set ( session_id , 'browser.version' , browser_version )
274281 else
275282 err_msg "Invalid browser version returned from the hook browser's initial connection."
283+ browser_version = 'Unknown'
276284 end
277285
278286 # get and store browser string
@@ -293,7 +301,11 @@ def setup
293301
294302 # get and store browser language
295303 browser_lang = get_param ( @data [ 'results' ] , 'browser.language' )
296- BD . set ( session_id , 'browser.language' , browser_lang )
304+ if BeEF ::Filters . has_valid_browser_details_chars? ( browser_lang )
305+ BD . set ( session_id , 'browser.language' , browser_lang )
306+ else
307+ err_msg "Invalid browser language returned from the hook browser's initial connection."
308+ end
297309
298310 # get and store the cookies
299311 cookies = get_param ( @data [ 'results' ] , 'browser.window.cookies' )
@@ -309,6 +321,7 @@ def setup
309321 BD . set ( session_id , 'host.os.name' , os_name )
310322 else
311323 err_msg "Invalid operating system name returned from the hook browser's initial connection."
324+ os_name = 'Unknown'
312325 end
313326
314327 # get and store the OS family
@@ -322,15 +335,28 @@ def setup
322335 # get and store the OS version
323336 # - without checks as it can be very different, for instance on linux/bsd)
324337 os_version = get_param ( @data [ 'results' ] , 'host.os.version' )
325- BD . set ( session_id , 'host.os.version' , os_version )
338+ if BeEF ::Filters . has_valid_browser_details_chars? ( os_version )
339+ BD . set ( session_id , 'host.os.version' , os_version )
340+ else
341+ err_msg "Invalid operating system version returned from the hook browser's initial connection."
342+ os_version = 'Unknown'
343+ end
326344
327- # get and store the OS arch - without checks
345+ # get and store the OS arch
328346 os_arch = get_param ( @data [ 'results' ] , 'host.os.arch' )
329- BD . set ( session_id , 'host.os.arch' , os_arch )
347+ if BeEF ::Filters . has_valid_browser_details_chars? ( os_arch )
348+ BD . set ( session_id , 'host.os.arch' , os_arch )
349+ else
350+ err_msg "Invalid operating system architecture returned from the hook browser's initial connection."
351+ end
330352
331353 # get and store default browser
332354 default_browser = get_param ( @data [ 'results' ] , 'host.software.defaultbrowser' )
333- BD . set ( session_id , 'host.software.defaultbrowser' , default_browser )
355+ if BeEF ::Filters . has_valid_browser_details_chars? ( default_browser )
356+ BD . set ( session_id , 'host.software.defaultbrowser' , default_browser )
357+ else
358+ err_msg "Invalid default browser returned from the hook browser's initial connection."
359+ end
334360
335361 # get and store the hardware type
336362 hw_type = get_param ( @data [ 'results' ] , 'hardware.type' )
0 commit comments