Class: Relevance::Tarantula::AttackHandler

Inherits:
Object
  • Object
show all
Includes:
ERB::Util
Defined in:
lib/relevance/tarantula/attack_handler.rb

Instance Method Summary collapse

Instance Method Details

#attacksObject



9
10
11
# File 'lib/relevance/tarantula/attack_handler.rb', line 9

def attacks
  Relevance::Tarantula::FormSubmission.attacks.select(&:output)
end

#handle(result) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/relevance/tarantula/attack_handler.rb', line 13

def handle(result)
  return unless attacks.size > 0
  regexp = '(' + attacks.map {|a| Regexp.escape a.output}.join('|') + ')'
  response = result.response
  return unless response.html?
  if n = (response.body =~ /#{regexp}/)
    error_result = result.dup
    error_result.success = false
    error_result.description = "XSS error found, match was: #{h($1)}"
    error_result.data = <<-STR
  ########################################################################
  # Text around unescaped string: #{$1}
  ########################################################################
    #{response.body[[0, n - 200].max , 400]}





  ########################################################################
  # Attack information:
  ########################################################################
    #{attacks.select {|a| a.output == $1}[0].to_yaml}
    STR
    error_result
  end
end